[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