Rechnung mit mehreren Rechnungspositionen Buchen
Hallo zusammen
habe mal wieder ein Problem.
Ich habe ein Rechnungsformular mit mehreren Rechnungspositionen (diese stehen in einer Untertabelle) jetz möchte ich gerne die Rechnung Buchen, dafür würde ich gerne die einzelnen Rechnungspositionen nehmen und diese Buchen.
Danke für Eure Hilfe,
Die gesamtsumme buchen kann ich
let my := this;
let newB := (create 'x-Buchen');
newB.('Rechnung-Nr' := my.'Rechnung-ID');
newB.(Buchungstext := my.'Buchungs-Text');
newB.(Betrag := my.Rechnungssumme);
newB.('Konto aus' := 1000);
newB.(Kategorie := my.first(Rechnungsposition.'V-Preisliste'.Konto));
newB.('Buchungs-Artikel' := my.first(Rechnungsposition.Artikel));
newB.('Rechnungs Datum' := my.Rechnungsdatum);
newB.('Buchungs Datum' := now());
popupRecord(newB)
3 Antworten
-
Ich weiß nicht, ob ich das richtig verstanden habe. Du möchtest jede einzelne Rechnungsposition als eine Buchung verbuchen?
Anbei meine Test-DB dazu. Dem Buchen-Button ist der Code zugewiesen.
Gruß
Mirko
let _my := this;
let _AnzBuchungenNeu := 0;
let _AnzBuchungenVorhanden := 0;
let Info := "
******************************************
*** Anzahl Rechnungspositionen zu der
*** Rechnung ermitteln
*****************************************
";
let _AnzRePos := cnt(Rechnungspositionen);
let Info := "
*****************************************
*** Felder, die aus Rechnungspositionen
*** verbucht werden sollen, als Array
*** zuweisen
*****************************************
";
let _RePosID := (select Rechnungspositionen where Rechnung = _my).Nr;
let _RePosArtNr := (select Rechnungspositionen where Rechnung = _my).'Artikel-Nr';
let _RePosPreis := (select Rechnungspositionen where Rechnung = _my).Preis;
let _RePosEinheit := (select Rechnungspositionen where Rechnung = _my).Einheit;
let _RePosKonto := (select Rechnungspositionen where Rechnung = _my).Konto;
let Info := "
*****************************************
*** Buchungen aus Rechnungspositionen
*** erstellen.
*** Dabei wird geprüft, ob die Rechnungs-
*** position bereits vorhanden ist (extra
*** Feld 'ID' in x-Buchen, diese Pos.
*** wird nicht nochmals verbucht
*****************************************
";
let _BuchungVorhanden := false;
for ii in range(0, _AnzRePos) do
_BuchungVorhanden := cnt(select 'x-Buchen' where ID = item(_RePosID, ii)) > 0;
if _BuchungVorhanden then
_AnzBuchungenVorhanden := _AnzBuchungenVorhanden + 1
else
let _Betrag := item(_RePosPreis, ii) * item(_RePosEinheit, ii);
let _newB := (create 'x-Buchen');
_newB.('Rechnung-Nr' := _my.'Rechnung-ID');
_newB.(ID := number(item(_RePosID, ii)));
_newB.(Buchungsartikel := item(_RePosArtNr, ii));
_newB.(Betrag := _Betrag);
_newB.('Konto aus' := item(_RePosKonto, ii));
_AnzBuchungenNeu := _AnzBuchungenNeu + 1
end
end;
alert(_AnzBuchungenNeu + " Buchung(en) angelegt || " + _AnzBuchungenVorhanden + " bereits vorhanden") -
Ergebnis:
-
Mirko vielen lieben dank, dass klapt so super
Content aside
- vor 5 JahrenZuletzt aktiv
- 3Antworten
- 1570Ansichten