Es stehen folgende Klassen zur Verfügung:
| Zu-/Abschlag | Objekttyp |
|---|---|
| Delayed charge | CX_DELAYED_CHARGE |
| Termed charge | CX_TERMED_CHARGE |
| Pay off charge | CX_PAY_OFF_CHARGE |
| Steuer | CX_TAX |
| Skonto | CX_CASH_DISCOUNT |
| Teilzahlung | CX_PARTIAL_PAYMENT |
Diese Klasse kann nicht selbst benutzt werden und besitzt weder Funktionen noch Datenfelder.
Klassen CX_CHARGE und abgeleitete für Erstellung von Zahlungsbedingungen:
Skonti, Teilzahlungen, etc. und allgemein Ab/und Zuschläge
Basis-Klasse CX_CHARGE hält CX_AMOUNT *charge, das in Verbindung mit
chargeEnum arbeitet:
0, T("Betrag wie eingegeben", "Amount as entered"), 0xff
1, T("Vorzeichenwechsel", "Change sign"), 0xff
2, T("Abschlag (Subtrahiere)", "charge (subtract)"), 0xff
4, T("Aufteilung (Multipliziere)", "partition (multiply)"), 0xff
64, T("Zwingend", "Must"), 0xff // 'UND' Bedingung !
128, T("Erledigt", "Fullfilled"), 0xff
Man geht davon aus, dass i.Allgemeinen ein Basis-Betrag, der von
aussen kommt, durch eine CHARGE manipuliert wird. Trotzdem auch fix Betrag
möglich (chargeEnum = 2 und Amount vom Typ CX_VALUE)
Also Modellierung von: (1) 3 % (aber in Wirklichkeit -3% oder umgekehrt)
(2) basisWert - charge
(4) basisWert * charge
Funktionen:
===========
Value(_basisWert): ermittelt den tatsächlichen - ausgerechneten -
Wert der Charge
DueDate(basisDatum): ermittelt die tatsächliche Fälligkeit des Betrages
DueValue(_basisWert, _basisDatum, _bisDatum)
ermittelt den Betragswert bis zu einem bestimmten
Datum
CX_DELAYED_CHARGE: Betrag zu einem verzögertem (unbekannten) Zeitpunkt (z.B. Skonto)
Hält zusätzlich: CX_AMOUNT* delay
delayEnum (Addiere zu Basisdatum, Berechne Basisdatum)
CX_STATE_CHARGE: Betrag zu einem Status (von CX_DELAYED_CHARGE abgeleitet)
Hält zusätzlich: CX_STATE_MONITOR* state
CX_TERMED_CHARGE: Betrag zu einem best. Termin: z.B. Teilzahlungen
Hält zusätzlich: CX_TERM* fixedTerm
CX_PAY_OFF_CHARGE: (auch für COMISSION ?)
CX_BUSINESS_OBJECT* debt: an wen/von wem wird Gebühr abgeführt/erhoben
CX_TAX: abgeleitet von CX_PAY_OFF_CHARGE, hat zusätzlich Typ der Steuer
und Liste von Sachlkonten. Funktionen TaxAccount() und CashDiscountAccount()
holen direkt das Konto, unetr dem die Steuer gebucht wird und das
Skonto-Korrekturkonto. Eventuell Skonto-Korrektur auch als CondBag-Objekt
in CX_ACCOUNT_DOMAIN, falls Zusammenhang komplizierter.
OFFEN:
======
Modellierung von Zinsen (CX_DEPOSIT_INTERESTS)
Kreditlinie (CX_CREDIT_LINE)
Ratenabzahlung (CX_INSTALMENT)
(früher abgeleitet von CX_DEPOSIT_CONDITION)
depositInterestsEnum
{
0, T(Zinsen, "Interests"), 0xff
1, T(Sollzinsen, "interests payed"), 0xff
2, T(Habenzinsen, "interests earned"), 0xff
3, T(Überziehungszinsen, "overdraft interests"), 0xff
4, T(Strafzinsen, "penal interests"), 0xff
}
basePeriodEnum
{
13, T(Jahr, year), 0xff
12, T(Tertial, tertian), 0xff
11, T(Quartal, quarter), 0xff
10, T(Monat, month), 0xff
9, T("14-tägig", fortnight), 0xff
8, T(Woche, week), 0xff
7, T(Tag, day), 0xff
}
delayEnum könnte eigentlich entfallen, System sollte selbst merken,
was als delay gespeichert wurde
Partial_Payment: DueCharge muss additiv sein
CX_CHARGE::IsActive() ??
Verbindung zu subCharge herstellen: generell
chargeEnum: offen/verdeckt (wie verarbeiten ?)
Preise/Rabatte/Tax/Commission ??
Prozent im Hundert/vom Hundert ??
| Modul | Kurzbeschreibung |
|---|---|
| testchrg.mod | Testen Zu-/Abschläge Basismodul |
| testdisc.mod | Zahlungsbedingung Testmodul |
| testppay.mod | Teilzahlungen Testmodul |