| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- /* ------------------------------------------------------------------------- */
- /* Auftragstotal errechnen (aufkotot.p) */
- /* ------------------------------------------------------------------------- */
- { v8/globvar.i " " " " "SHARED" }
- { v8/artivar.i " " " " "SHARED" }
- /* ------------------------------------------------------------------------- */
- { v8/aufkototv.i " " "SHARED" }
- /* ------------------------------------------------------------------------- */
- DEF VAR zz AS INT.
- DEF VAR Wert AS DEC DECIMALS 4.
- DEF VAR VSkonto AS DEC INIT 0.
- /* ------------------------------------------------------------------------- */
- /* VTotal[01] = Nettowarenwert */
- /* VTotal[02] = Skontoberechtigter Betrag */
- /* VTotal[03] = Nebenkosten */
- /* VTotal[04] = Transport */
- /* VTotal[05] = Porto */
- /* VTotal[06] = Verpackung */
- /* VTotal[07] = Total Mehrwertsteuerpflichtig */
- /* VTotal[08] = Total Mehrwertsteuerfrei */
- /* VTotal[09] = Total Mehrwertsteuer */
- /* VTotal[10] = Total Auftrag */
- /* VTotal[11] = Total Gebinde */
- /* VTotal[12] = Total Gebühren (Receycling) */
- /* ------------------------------------------------------------------------- */
- REPEAT TRANSACTION:
- VTotal = 0.
- VWpfl = 0.
- VWust = 0.
- VTotWu = 0.
- VTotNK = 0.
- NWpfl = 0. /* Anteil Nebenkosten */
- TWpfl = 0. /* Wpfl + Nebenkosten */
- VGewicht = 0.
- FIND Steuer WHERE Steuer.Firma = GVFirma NO-LOCK.
- FIND Aufko USE-INDEX Aufko-k1
- WHERE Aufko.Firma = GVFirma
- AND Aufko.Aufnr = XVAufnr NO-ERROR.
- IF NOT AVAILABLE Aufko THEN RETURN.
- VRecid = RECID(Aufko).
-
- ASSIGN Aufko.Wpfl = 0
- Aufko.Wust = 0
- Aufko.WW = 0
- Aufko.Sk_Ber = 0.
- VTotal[04] = Aufko.Transp.
- VTotal[05] = Aufko.Porto.
- VTotal[06] = Aufko.Verpack.
- VTotal[03] = VTotal[04] + VTotal[05] + VTotal[06].
- FIND Wust USE-INDEX Wust-k1
- WHERE Wust.CodeK = Aufko.MWST
- AND Wust.CodeA = Steuer.Fwi03 NO-LOCK.
- zz = Wust.WuCd.
- VWpfl[zz] = VWpfl[zz] + Aufko.Transp.
- FIND Wust USE-INDEX Wust-k1
- WHERE Wust.CodeK = Aufko.MWST
- AND Wust.CodeA = Steuer.Fwi04 NO-LOCK.
- zz = Wust.WuCd.
- VWpfl[zz] = VWpfl[zz] + Aufko.Porto.
- FIND Wust USE-INDEX Wust-k1
- WHERE Wust.CodeK = Aufko.MWST
- AND Wust.CodeA = Steuer.Fwi05 NO-LOCK.
- zz = Wust.WuCd.
- VWpfl[zz] = VWpfl[zz] + Aufko.Verpack.
-
- FOR EACH Aufze USE-INDEX Aufze-k1
- WHERE Aufze.Firma = Aufko.Firma
- AND Aufze.Aufnr = Aufko.Aufnr
- AND Aufze.Artnr > 0 :
- FIND Wust NO-LOCK USE-INDEX Wust-k1
- WHERE Wust.CodeK = Aufko.MWSt
- AND Wust.CodeA = Aufze.Wc NO-ERROR.
- IF AVAILABLE Wust THEN Aufze.WuCd = Wust.WuCd.
- zz = Aufze.WuCd.
- DO WHILE TRUE:
- ASSIGN Aufze.Auf_Rab = 0
- Aufze.Abh_Rab = 0.
- IF Aufze.Rab_Su_Grp = 0 THEN LEAVE.
- IF Aufze.Rab_Su_Art = 0 THEN LEAVE.
- IF Aufze.Preis = 0 THEN LEAVE.
-
- FIND AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
- WHERE AufRabSu.Firma = Aufze.Firma
- AND AufRabSu.Aufnr = Aufze.Aufnr
- AND AufRabSu.Rab_Summ = Aufze.Rab_Su_Grp
- AND AufRabSu.MWST_Cd = Aufze.WuCd.
- Wert = AufRabSu.F_Wert.
- DO WHILE Wert <> 0:
- IF AufRabSu.F_Proz_Betr THEN DO:
- Aufze.Auf_Rab = Aufze.Net_Betr * AufRabSu.F_Wert / 100.
- LEAVE.
- END.
- IF AufRabSu.F_Art = 0 THEN DO:
- Aufze.Auf_Rab = Aufze.MGeli * AufRabSu.F_Wert.
- LEAVE.
- END.
- IF AufRabSu.F_Art = 2 THEN DO:
- Aufze.Auf_Rab = Aufze.Liter * AufRabSu.F_Wert / 100.
- LEAVE.
- END.
- LEAVE.
- END.
-
- IF Aufko.Abhol = FALSE THEN Wert = 0.
- ELSE Wert = AufRabSu.A_Wert.
- DO WHILE Wert <> 0:
- IF AufRabSu.A_Proz_Betr THEN DO:
- Aufze.Auf_Rab = Aufze.Net_Betr * AufRabSu.A_Wert / 100.
- LEAVE.
- END.
- IF AufRabSu.A_Art = 0 THEN DO:
- Aufze.Auf_Rab = Aufze.MGeli * AufRabSu.A_Wert.
- LEAVE.
- END.
- IF AufRabSu.A_Art = 2 THEN DO:
- Aufze.Auf_Rab = Aufze.Liter * AufRabSu.A_Wert / 100.
- LEAVE.
- END.
- LEAVE.
- END.
-
- DO WHILE TRUE:
- IF Aufze.Abh_Rab = 0 AND
- Aufze.Auf_Rab = 0 THEN LEAVE.
- FIND FIRST Wust USE-INDEX Wust-k2
- WHERE Wust.WuCd = zz NO-LOCK.
- IF Wust.Incl = TRUE THEN DO:
- Rundbetr = Aufze.Abh_Rab.
- Rundcode = 1.
- RUN "v8/runden.p".
- Aufze.Abh_Rab = Rundbetr.
- Rundbetr = Aufze.Auf_Rab.
- Rundcode = 1.
- RUN "v8/runden.p".
- Aufze.Auf_Rab = Rundbetr.
- END.
- LEAVE.
- END.
- LEAVE.
- END.
- DO WHILE TRUE:
- ASSIGN Aufze.Auf_Sp_Rab = 0.
- IF Aufze.Auf_Sp_Grp = 0 THEN LEAVE.
-
- FIND AufSpRab USE-INDEX AufSpRab-k1
- WHERE AufSpRab.Firma = Aufze.Firma
- AND AufSpRab.Aufnr = Aufze.Aufnr
- AND AufSpRab.Rab_Grp = Aufze.Auf_Sp_Grp NO-LOCK.
- ASSIGN Aufze.Auf_Sp_Proz_Betr = AufSpRab.Auf_Proz_Betr
- Aufze.Auf_Sp_Wert = AufSpRab.Auf_Wert.
-
- IF NOT Aufze.Auf_Sp_Proz_Betr THEN DO:
- Aufze.Auf_Sp_Rab = Aufze.MGeli * Aufze.Auf_Sp_Wert.
- END.
- IF Aufze.Auf_Sp_Proz_Betr THEN DO:
- Aufze.Auf_Sp_Rab = Aufze.Net_Betr * Aufze.Auf_Sp_Wert / 100.
- END.
-
- FIND FIRST Wust USE-INDEX Wust-k2
- WHERE Wust.WuCd = zz NO-LOCK.
- IF Wust.Incl = TRUE THEN DO:
- Rundbetr = Aufze.Auf_Sp_Rab.
- Rundcode = 1.
- RUN "v8/runden.p".
- Aufze.Auf_Sp_Rab = Rundbetr.
- END.
- LEAVE.
- END.
-
- VWpfl [zz] = VWpfl [zz] + Aufze.Net_Betr
- - Aufze.Auf_Rab
- - Aufze.Abh_Rab
- - Aufze.Auf_Sp_Rab.
- Aufko.WW[zz] = Aufko.WW[zz] + Aufze.Net_Betr
- - Aufze.Auf_Rab
- - Aufze.Abh_Rab
- - Aufze.Auf_Sp_Rab.
- VTotal [01] = VTotal [01] + Aufze.Net_Betr
- - Aufze.Auf_Rab
- - Aufze.Abh_Rab
- - Aufze.Auf_Sp_Rab.
- IF Aufze.Sk_Ber THEN DO:
- VTotal[02] = VTotal[02] + Aufze.Net_Betr
- - Aufze.Auf_Rab
- - Aufze.Abh_Rab
- - Aufze.Auf_Sp_Rab.
- END.
- VGewicht = VGewicht + Aufze.Gewicht.
- END.
- FOR EACH AufGKon USE-INDEX AufGKon-k1
- WHERE AufGKon.Firma = Aufko.Firma
- AND AufGKon.Aufnr = Aufko.Aufnr NO-LOCK:
- zz = AufGKon.MWSt_Cd.
- VWpfl[zz] = VWpfl[zz] + AufGKon.Betrag.
- IF AufGKon.Gebuehr = 0 THEN VTotal[11] = VTotal[11] + AufGKon.Betrag.
- ELSE VTotal[12] = VTotal[12] + AufGKon.Betrag.
- END.
- VMaxWC = 0.
- VTotNK = VWpfl[12].
- VResNK = VWpfl[12].
- DO zz = 1 TO 11:
- IF VWpfl[zz] < 0 THEN VFakt[zz] = -1.
- ELSE VFakt[zz] = +1.
- VTotWu = VTotWu + (VWpfl[zz] * VFakt[zz]).
- IF VWpfl[zz] <> 0 THEN VMaxWC = zz.
- END.
- NFakt = +1.
- IF VTotNK < 0 THEN DO:
- VTotNK = - VTotNK.
- VResNK = - VResNK.
- NFakt = -1.
- END.
- DO zz = 1 TO 11:
- IF VWpfl[zz] = 0 THEN NEXT.
- IF zz = VMaxWC THEN DO:
- NWpfl[zz] = VResNK * NFakt.
- TWpfl[zz] = VWpfl[zz] + (VResNK * NFakt).
- LEAVE.
- END.
- Rundbetr = (((VWpfl[zz] * 100 * VFakt[zz]) / VTotWu) * VTotNK) / 100.
- NWpfl[zz] = Rundbetr * NFakt.
- TWpfl[zz] = VWpfl[zz] + (Rundbetr * NFakt).
- VResNK = VResNK - Rundbetr.
- END.
- DO zz = 1 TO 10:
- IF TWpfl[zz] = 0 THEN NEXT.
- VTotal[07] = VTotal[07] + TWpfl[zz].
- VTotal[10] = VTotal[10] + TWpfl[zz].
- FIND FIRST Wust USE-INDEX Wust-k2
- WHERE Wust.WuCd = zz NO-LOCK.
- IF Wust.Incl THEN NEXT.
- FIND LAST MWSTAns USE-INDEX MWSTAns-k1
- WHERE MWSTAns.MWST_Cd = Wust.WuCd
- AND MWSTAns.Datum <= Aufko.Kond_Datum NO-LOCK.
- Rundbetr = TWpfl[zz] * MWSTAns.Ansatz / 100.
- VWust [zz] = Rundbetr.
- VTotal[09] = VTotal[09] + Rundbetr.
- VTotal[10] = VTotal[10] + Rundbetr.
- END.
- VTotal[08] = VTotal[08] + TWpfl[11].
- VTotal[10] = VTotal[10] + TWpfl[11].
- Rundbetr = VTotal[10].
- Rundcode = 1.
- RUN "v8/runden.p".
- VTotal[10] = Rundbetr.
- DO ix = 1 TO 12:
- Aufko.Wpfl[ix] = VWpfl[ix].
- Aufko.Wust[ix] = VWust[ix].
- END.
- ASSIGN Aufko.Auf_Tot = VTotal[10]
- Aufko.Gewicht = VGewicht
- Aufko.Sk_Ber = VTotal[02].
- RELEASE Aufko.
- LEAVE.
- END.
|