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">;