/* ------------------------------------------------------------------------- */ /* 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.