[Allegro] win-alf: a-mahnrg.flx (in alter fassung): probleme.....

Klaus Lehmann lehmann_klaus at t-online.de
Di Jul 20 08:29:31 CEST 2010


guten tag herr eversberg

würde ich die neue a-mahnrg.flx verwenden, hätte wir extrem viele 10.
mahnungen, obwohl das system nur 3 herauslassen sollte.
der größte teil der mahnungen wäre unbrauchbar. deshalb verwenden wir
die unten stehenden altfassung von a-mahnrg.flx.


leider kommen einige wenige fehler hierbei vor:
"Es sieht so aus, dass das unkorrekte Datum immer nur bei Exen
auftaucht, die bereits einmal oder zweimal verlängert wurden. Bei Exen,
die noch nicht verlängert wurden, scheint das Mahndatum immer korrekt
zu sein. Allerdings kommt es nicht bei jedem bereits gemahnten Ex zu
einer falschen Berechnung. Das ist das Muster, welches bei den
Mahnbriefen erkennen können."
nur nochmal betont: wir mahnen mit der unten zitierten (alten) fassung
von a-mahnrg.flx. nicht mit der neuen.


wo könnte ein fehler liegen? 
evtl führt der erkannte fehler ja auch zur korrektur der neuen
a-mahnrg.flx, die dann vielleicht (hoffentlich) sauber läuft.


was die sache (etwas) erschwert:
die fehlersuche bei der mahnerei (sowie das einsetzen von patchen) ist
sehr langwierig. einmal falsch gemahnt, werden falscheinträge IN DIE
datenbank vererbt. und die mahnstufe z.b. um 1 erhöht. auch kann pro
tag nur 1 mahnlauf staffinden, um veränderungen zu erkennen oder
auszutesten, MUSS 1 tag gewartet werden. die fehlersuche kann sowieso
NICHT im echtsystem stattfinden, dafür steht glücklicherweisedie
c-platte mit einer lokalen allegro-installation zur verfügung.

danke sehr für ihre unterstützung
viele grüße
Ihr Klaus Lehmann





  A-MAHNRG.FLX : Mahnungen registrieren und Geb.Saetze anlegen
  20060208
     evtl. noch verbessern: Kommentar xxx

  Aufgaben:
  1. Eintraege der folgenden Form sichten und mit #dts vergleichen :
       |;MDjjjjmmtt
     d.h. Mahndatum <= aktuelles Datum  ($M in #9DH oder #9GG)
     >>> #9GG : Geb³hrenmahnungen werden zunaechst nicht beruecks. <<<

  2. Fuer jeden dieser Saetze einen Gebuehrensatz erzeugen
     #9GF0$G0$Busernr$DDatum$oOperator$n3
     #9GG$Ebarcod$Ttitelnr$Sgebsum$mMedtyp$nmahnstufe$dverzugstage
     Im Reg. 11 entsteht GD-Eintrag aus #9GF$D (Registrierdatum)
     Diese Eintr. werden fuer den anschl. Mahnexport gebraucht.

  3. Im Exemplarsatz das Datum $M aktualisieren, d.h. das Datum der
     naechsten Mahnung reinschreiben. MD-Eintrag Reg. 11 aendert sich!
     und Mahnstufe $n erhoehen


  Voraussetzung: a-init.flx laedt die Medientypsaetze in $Amtyp und die
  Leserklassen in $Aclas. Sonst muessten diese bei jedem einzelnen
  Ausleihsatz jeweils nachgeladen werden...

if not #ua? jump nini   // #ua? nicht besetzt - aLF nicht initialisiert

  Mahndatum ist Reg.11 MDjjjjmmtt indexiert
var "|; MD00000000---MD" #dts(0,8) "zz"
   Von/Bis-Suche (alles bis zum heutigen Datum)
find
if empty jump nix

  Zaehler auf 0 (Anzahl Mahnungen)
#uaZ 0

  Erg.Menge besteht aus Expl-Saetzen und evtl. Geb.Saetzen
  Ersten Satz laden
first
:loop
  Ist es ein Gebuehrensatz? Dann nichts machen!
  (d.h. Gebuehrenmahnung noch nicht beruecks.)
if #9GF jump nxt

  Sonst #uGF und #uGG vorbereiten: f. #9GF und #9GG
  Medientypsatz suchen, sie stehen schon alle in $Amtyp:
var $Amtyp
  kopieren in #uAY
ins #uAY
var #9DG$m "B" #9DH$C   // medTypsatzcodeBLeserklasse
ins #uAS
  zugehoerigen Abschnitt in #uAY suchen
var #uAY(b"#uAS" e"///")  // Abschnitt mit den Bedingungen des Typs
ins #uAY
  wurde der Typ gefunden?
if #uAY jump gmt

  Kein passender Medientypsatz, dann Leserklassensatz nehmen
            (Klassensõtze stehen alle in $Aclas)
var "C" #9DH$C
ins #uAC
var $Aclas
ins #uAY
  zugehoerigen Abschnitt in #uAY suchen
var #uAY(b"#uAC" e"///")  // Abschnitt mit den Bedingungen der Klasse
if "" jump deflt
ins #uaY
jump gmt

:deflt
var "m300"   // xxx DefaultGebuehr, wenn die Stammsaetze nichts
hergeben

:gmt
    xxx hier evtl. Mahngeb. noch differenzieren: 1./2. Mahnung
ins #uAM    // Mahngeb. ist darin $m
var #uAM$m
ins _.__     // . entfernen, Betrag soll in Cent sein
ins #uAG

  ACHTUNG:  #9GF$m  erst nach MahnExport belegen!
var "0G7B" #9DH$u "D" #dts(0,8) "o" #op "n" #9DH$n
ins #uGF    // fuer #9GF

  Verzugstage errechnen:
z=1
:vlo
var z
if >365 jump long
var "-" z
Wday
ins #uaV
var #uaV "-" #9DH$R
Day
if >0 z+1;jump vlo
jump tage

:long


z=366

:tage
  var #dts(0,8) "-" #9DH$R
  Day

var z
if >365 var "mehr als 365"
ins #uvZ

var "S" #uAG "K" #9DH$C "E" #9DG$a "T" #9DF "R" #9DH$R "D" #9DH$D
"d" #uvZ
ins #uGG   // Fuer #9GG


  Jetzt Expl.Satz aktualisieren
  naechstes Mahndatum ist naechster Arbeitstag (noch verbessern?)
Wday +10
var (e"/")
ins $M-#9DH

var #dts(0,8)
ins $m-#9DH

  Mahnstufe erhoehen
var #9DH$n
z=
z+1
var z
ins $n-#9DH

  Expl.Satz wieder speichern
put

  Gebhr.Satz anlegen
new 0
#00 -
var #uGF
ins #9GF
var #uGG
ins #9GG
   TEST:
 disp
 sho rec
 mes Fertiger Geb.Satz
 erase
  speichern
put

var #uaZ   // Zaehler erhoehen
z=
z+1
var z
ins #uaZ

  naechsten Exemplarsatz
:nxt
next
if yes jump loop

  var "Anzahl: " #uaZ "Mahnfõlle" n "Die Mahnungen werden jetzt
gezeigt"
   mes
   var "|; GD" #dts(0,8) "?"
   Find

end

:nix
mes Keine Mahnfaelle vorhanden
end

:nini
mes aLF ist noch nicht initialisiert
end


 u-VARIABLEN in a-mahnrg.flx
 #uAC (1)  =#9DH$C
 #uAG (2)  Mahngeb. in Cent
 #uAM (2)  $m ist Mahngeb. aus Klassensatz
 #uAS (1)  medTypsatzcodeBLeserklasse
 #uAY (6)  Med.Typsatz f.d. betr. Typ
 #uGF (2)  =#9GF 
 #uGG (2)  =#9GG
 #ua? (2)  Flag. Wenn leer, aLF nicht initialisiert
 #uaV (2)  zur Berechnung d. Verzugstage
 #uaY (1)  =$Aclas 
 #uaZ (4)  Zaehler Anzahl Mahnungen
 #uvZ (2)  Anzahl Verzugstage
 $Aclas (1)  Leserklassen
 $Amtyp (1)  MedTypsaetze







Mehr Informationen über die Mailingliste Allegro