Summenbildung in Listen
Die folgenden Berechnungsfunktionen berücksichtigen Rabatte, Rabattierfähigkeit, Gesamtrabatt, Dokumentrabatt, Positionsrabatt, Ab/Zuschläge usw. Summen bzw. Werte sollten keinesfalls auf der jeweiligen Liste errechnet werden.
Ausgangsrechnung:
belzeil_pos_wert_basis_w(bzid INTEGER) Positionswert inkl. zugeordneten Zuschlägen
belzeil_pos_wert(bzid INTEGER) ...
Verkauf:
auftg_pos_wert_offen_basis_w --nicht geliefert
auftg_pos_wert_offen --nicht geliefert
auftg_pos_wert_basis_w
auftg_pos_wert
Einkauf:
ldsdok_pos_wert_offen_basis_w --nicht geliefert
ldsdok_pos_wert_offen --nicht geliefert
ldsdok_pos_wert_basis_w
ldsdok_pos_wert
Ein Überblick über die Funktionen ist in PRODAT über das SQL-Fenster mit STRG+Leertaste im Dropdown in der Übersicht zu finden.

1. Beispiel Anpassung Rechnung Listen/Dokument
Einzelpreis und Gesamtsumme der Position:
Im Select der Rechnungszeilen (belzeil) muss die Funktion
belzeil_pos_wert(bz_id) angenommen werden. In einer Beispiel-Liste sieht es wie
folgt aus:
SELECT
COALESCE(bz_zubez_rtf, bz_zubez) AS bz_zubez_rtf,--wegen alten Rechnungen
COALESCE(bz_akbz,lang_artbez(bz_aknr, prodat_languages.customerlang(:be_rkrz))) AS ak_bez,
COALESCE(lang_artmgc_id_iso(bz_mce),bz_mcbez) AS bz_mcbez,
belzeil_pos_wert(bz_id),
belzeil_grund.*,
INNERHALB DER LISTE
procedure Memo_wacoOnBeforePrint(Sender: TfrxComponent);
begin
ESum:=<belzeil."bz_vkp">*(1-<belzeil."bz_arab">/100);
MUSS WERDEN
ESum:=<belzeil."belzeil_pos_wert">/<belzeil."bz_fakt">;
SOWIE
procedure Memo_BetragOnBeforePrint(Sender: TfrxComponent);
begin
MemoPosSum.HideZeros:=not <belzeil."poshatvkp">;
PosSum:=0;
If not <belzeil."poshatvkp"> then
Exit;
//
PosSum:=<belzeil."bz_fakt_uf1">*<belzeil."bz_vkp_uf1">*(1-<belzeil."bz_arab">/100);
MUSS WERDEN
PosSum:=<belzeil."belzeil_pos_wert">;