Sonder-Vb: EURO-Paket
Bernhard Eversberg
EV at buch.biblio.etc.tu-bs.de
Di Mai 22 09:59:41 CEST 2001
Mit Tips zum Umrechnen per FLEX (am Ende)
allegro EURO-Umstellung. Was ist zu tun? 2001-05-22
========================================
bereitgestellt: EUROPACK.LZH auf ac21
Empfehlung:
-----------
TESTEN:
Jederzeit ab sofort, mit einer Kopie der Datenbank
EUROPACK auf dem Verzeichnis dieser Datenbank entpacken!
(Kopie machen: am besten ueber Menue ORG)
Aktuelle Programme (22.5.2001) verwenden!
ECHTE DURCHFUEHRUNG:
Kann auch schon vor dem Jahreswechsel stattfinden, denn schon jetzt
ist EUR gueltiges Zahlungsmittel bei Verrechnungen.
Aber am besten:
Zwischen letztem Arbeitstag 2001 und erstem 2002.
Unmittelbar vorher eine Sicherungskopie machen, LOG-Datei loeschen.
Der Anwender startet nacheinander zwei FLEXe, eu-whrg und eu-best.
Die einfachste Methode: im ORDA-Menue (h orda) ist unten ein Flip
"Euro-Umrechnung". Den muss man zweimal (!) aktivieren.
--------------- -------
Dann werden die zwei Aktionen ausgeloest, die man auch manuell
folgendermassen ausloesen kann.
Die FLEXe sind abgesichert gegen viele Probleme, z.B. auch gegen
doppelte Ausfuehrung. Wer aber beim Testen noch ein Problem findet,
moege das gleich der Entw.Abt. melden!
Manueller Start
---------------
Im Schreibfeld gibt man ein:
1. X eu-whrg
-------------
Ein neuer Waehrungsdatensatz wird angelegt, der alte ungueltig
gemacht.
Ueber "Waehrungskurse" im ORDA-Menue (das danach erscheint) kann
man erst die neue Kursliste nochmals den eigenen Verhaeltnissen
und den aktuellen Kursen anpassen, bevor man die vorliegenden
Bestelldaten und die Kontingente umrechnen laesst:
2. X eu-best (ruft dann selber noch eu-kont und eu-stgb auf)
-------------
Dadurch wird alles andere erledigt. Danach kann in EURo
weitergearbeitet
werden. Beim Inventarisieren kann in der Maske der Rechnungsbetrag
in EUR, aber auch noch in DEM (separates Feld) eingegeben werden.
Dann muss der betr. Teil in der Datei CAT.FRM so aussehen:
[Inventarisierung]
$q-#9DB"EndPreis (EURO)"
$e-#9DB"Eing.datum"
$Q-#9DB"ODER EndPreis (DM)"
$z-#9DB"Zugangsnr."
Empfehlung:
Zuerst zum Testen eine Kopie der Datenbank machen und das Verfahren
damit durchfuehren. Wenn man ueberzeugt ist, dass die Umstellung
korrekt verlaeuft, dann die echte Umstellung durchfuehren.
Wie man so eine Kopie macht? Am besten mit dem Menuepunkt
"Datenbank-Kopie" im ORG-Menue (h org eingeben). Die kopierte
Datenbank kann ohne Gefahr fuer das Original benutzt und wieder
geloescht werden.
Hintergruende
-------------
Es wurden 4 FLEXe geschrieben, die alle notwendigen Aenderungen in
der Standard-Datenbank ausfuehren.
Vor der Umstellung:
1. Aktuelle Version V21 (ab 18.5.2001)
mit D-WRTF.APR, CAT.API, KONT.APR
2. folgende FLEXe:
Man kopiert EU-*.FLX auf ProgDir (anschliessend nicht mehr gebraucht)
O-*.FLX auf FlexDir (fuer die laufende weitere Arbeit)
A. Aenderungen Daten
--------------------
Waehrungstabelle: (Reg. 11 SYSWWHRG ) >>> EU-WHRG.FLX <<<
-----------------
#9A $W CODE:KURS:Name%CODE:KURS:Name%...
der Kurs ist der Wert, mit dem man $p multiplizieren muss,
um DM zu erhalten. (Im Bestellsatz)
Massnahme:
Ein neuer Waehrungssatz wird erstellt.
Kuenftig muss KURS derjenige Wert sein, durch den man $p
dividieren muss, um Euro zu erhalten!
(per EU-Recht vorgeschrieben)
jetzt kuenftig umgekehrt
$cEUR neues Teilfeld
DEM:1.00000 DEM:1.95583
EUR:1.95583 EUR:1.00000 (evtl. manuell korr.)
---
Bestellsaetze (Reg. 10 "o ?" ) >>> EU-BEST.FLX <<<
-------------
#9DB Bestelldaten.
1. Alle noch offenen Bestellungen
Status: alles ausser 6 und 7 in #9DB
$p = Preis in Bestellwaehrung BLEIBT!
$c = Waehrung BLEIBT!
$P ist der umgerechnete Preis in DM, ist aber obsolet!
es wird immer der Preis aus $p genommen und aktuell
umgerechnet, denn der Kurs kann sich geaendert haben!
jetzt kuenftig
$P kein $P mehr
d.h. Bestellsaetze ausser Status 6 und 7 bleiben unveraendert.
2. Erledigte Bestellungen
(Inventarisierte Bestellsaetze)
Status 6 oder 7 in #9DB
$q ist bezahlter Betrag in DEM.
Muss umgerechnet werden! (Reg.11, Eintraege unter s 6 und s 7 )
jetzt kuenftig
$qNNN.NN $qNNN.NN/1.95583 gerundet
Dann steht in $q der gezahlte Preis, aber in Euro. Auch bei alten
Bestellungen! Aber:
In $p bleibt der Bestellpreis stehen, in $c die Waehrung!
Erst nach diesen Aenderungen:
FLEXe fuer folgende Aktionen ausfuehren:
ORDER/ORDA Kontingente: (Reg. 11 SYSK? ) >>> EU-
KONT.FLX <<<
Bisher sind alle Betraege in DM (#9A $V $A $B $E $R )
1. $V durch 1.95583 dividieren,
2. Kontingente dann neu durchrechnen lassen >>> O-KONT.FLX
<<<
(aktuelles KONT.APR wird gebraucht, ist modifiziert, s.u.)
2. $cEUR an #9A des Kont.Satzes anhaengen zur Kennzeichnung,
dass umgerechnet wurde
aLF-Daten >>> EU-STGB.FLX <<<
---------
aLF Statistiksaetze (Reg. 11 STATMK? or STATDK? )
#9AFSTAT... $DJJJJMM
Alle Teilfelder in #9AH durch 1.95583 teilen ($0 $1 ... $9)
In #9AI $o und $S
aLF Gebuehrensaetze (Reg. 11 GD? )
#9GG $S ist DM, teilen durch 1.95583
B. Aenderungen Parameter, FLEXe usw.
------------------------------------
Allgemein: Einfuehrung einer Variablen #uwW mit dem Waehrungscode
wenn unbesetzt, dann DM
(#uwW kommt bisher nirgends vor)
Die folgenden drei Dateien wurden angepasst:
D-WRTF: Anzeige
Kontingentsatz : Umrechn. in EUR unterbleibt, wenn $cEUR
(wird von eu-kont.flx eingesetzt)
Inventarisierte Saetze: Umrechnung von $q in EUR unterbleibt
wenn EUR drinsteht
aLF-Daten:
Gebuehren- und Statistiksaetze: Anzeige EUR statt DEM
KONT.APR:
Zeile fuer EURO-Umrechung der Summen entfaellt
wenn $cEUR im Kontingentsatz
CAT.API:
Kurzanzeige der aLF-Gebuehrensaetze
Vorgang der (o-invent.flx)
Inventarisierung: Im Formular wird EndPreis in DEM vorgegeben
und die Eingabe als DEM interpretiert
($P oder umgerechnet aus $p)
Das muss kuenftig in Euro sein
Eingegegebener Betrag -> $q, $p dabei unveraendert
CAT.FRM:
Formular [Inventarisierung]
EndPreis (Euro)
EndPreis (DM)
wird das zweite eingegeben, erfolgt Umrechnung in Euro!
(in O-INVENT.FLX)
In mehreren O-FLEXen wurden Anpassungen durchgefuehrt.
Dateien zum Testen kann man alle folgenden Dateien
------- auf das DbDir packen!
eu-*.flx -> ProgDir
d-wrtf.apr -> ProgDir
kont.apr -> ProgDir
o-*.flx -> FlexDir
orda.rtf -> HelpDir (Exemplar auf DbDir loeschen!)
cat.api -> DbDir und ProgDir\demo2
cat.frm -> DbDir
Die vier Dateien eu-*.flx koennen nach der Umstellung geloescht
werden, sie werden nie mehr gebraucht.
-----------------------------------------------------------------
Allgemeine Tips zum Umrechnen
-----------------------------
Wenn man z.B. in einem Feld #nnn einen Betrag in DM hat und diesen
nun umrechnen will, muss man durch 1.95583 dividieren.
Das geht so:
var #nnn
Wert in die interne Zahl (sog. iZ) kopieren
=
var "1.95583"
iZ durch 1.95583 dividieren:
/
iZ auf 2 Kommstellen runden und in iV schreiben
var Z2
diesen Wert in #nnn kopieren
ins #nnn
Ist der Betrag in einem Teifeld $x von #nnn, geht man so vor:
var #nnn$x
=
var "1.95583"
/
var Z2
ins $x-#nnn
Diese Sequenzen kann man einbetten in groessere FLEXe, denn meistens
wird man Ergebnismengen abarbeiten wollen. Dann kommen die Befehle
"first" und "next" in der bekannten Weise zum Einsatz.
Hier noch das Schema, wenn die Gesamtbank zu verarbeiten ist:
...
Gesamtbank verarbeiten
ersten Satz holen (interne Nummer 1)
first #
falls #1 geloescht oder Nummer nicht besetzt: naechste
if del jump naechst
if no jump naechst
Jeder Satz wird in dieser Schleife verarbeitet:
:schleife
var #nnn
=
var "1.95583"
/
var Z2
ins #nnn
put
:naechst
next #
kein Satz mehr, Ende erreicht
if cancel jump exit
der Satz ist geloescht
if del jump naechst
Die Satznummer ist nicht besetzt
if no jump naechst
es gab noch einen Satz? dann -> :schleife
if yes jump schleife
:exit
...
Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329,
D-38023 Braunschweig, Germany
Tel. +49 531 391-5026 , -5011 , FAX -5836
e-mail B.Eversberg at tu-bs.de
Mehr Informationen über die Mailingliste Allegro