/* ------------------------------------------------------------------------- */ /* Auftragstotal errechnen (Savkotot.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 Savko USE-INDEX Savko-k1 WHERE Savko.Firma = GVFirma AND Savko.Aufnr = XVAufnr NO-ERROR. IF NOT AVAILABLE Savko THEN RETURN. VRecid = RECID(Savko). ASSIGN Savko.Wpfl = 0 Savko.Wust = 0 Savko.WW = 0 Savko.Sk_Ber = 0. VTotal[04] = Savko.Transp. VTotal[05] = Savko.Porto. VTotal[06] = Savko.Verpack. VTotal[03] = VTotal[04] + VTotal[05] + VTotal[06]. FIND Wust USE-INDEX Wust-k1 WHERE Wust.CodeK = Savko.MWST AND Wust.CodeA = Steuer.Fwi03 NO-LOCK. zz = Wust.WuCd. VWpfl[zz] = VWpfl[zz] + Savko.Transp. FIND Wust USE-INDEX Wust-k1 WHERE Wust.CodeK = Savko.MWST AND Wust.CodeA = Steuer.Fwi04 NO-LOCK. zz = Wust.WuCd. VWpfl[zz] = VWpfl[zz] + Savko.Porto. FIND Wust USE-INDEX Wust-k1 WHERE Wust.CodeK = Savko.MWST AND Wust.CodeA = Steuer.Fwi05 NO-LOCK. zz = Wust.WuCd. VWpfl[zz] = VWpfl[zz] + Savko.Verpack. FOR EACH Savze USE-INDEX Savze-k1 WHERE Savze.Firma = Savko.Firma AND Savze.Aufnr = Savko.Aufnr AND Savze.Artnr > 0 : zz = Savze.WuCd. DO WHILE TRUE: ASSIGN Savze.Auf_Rab = 0 Savze.Abh_Rab = 0. IF Savze.Rab_Su_Grp = 0 THEN LEAVE. IF Savze.Rab_Su_Art = 0 THEN LEAVE. FIND SavRabSu USE-INDEX SavRabSu-k1 WHERE SavRabSu.Firma = Savze.Firma AND SavRabSu.Aufnr = Savze.Aufnr AND SavRabSu.Rab_Summ = Savze.Rab_Su_Grp AND SavRabSu.MWST_Cd = Savze.WuCd NO-LOCK. Wert = SavRabSu.F_Wert. DO WHILE Wert <> 0: IF SavRabSu.F_Art = 0 THEN DO: Savze.Auf_Rab = Savze.MGeli * SavRabSu.F_Wert. LEAVE. END. IF SavRabSu.F_Art = 1 THEN DO: Savze.Auf_Rab = Savze.Net_Betr * SavRabSu.F_Wert / 100. LEAVE. END. IF SavRabSu.F_Art = 2 THEN DO: Savze.Auf_Rab = Savze.Liter * SavRabSu.F_Wert / 100. LEAVE. END. LEAVE. END. IF Savko.Abhol = FALSE THEN Wert = 0. ELSE Wert = SavRabSu.A_Wert. DO WHILE Wert <> 0: IF SavRabSu.A_Art = 0 THEN DO: Savze.Abh_Rab = Savze.MGeli * SavRabSu.A_Wert. LEAVE. END. IF SavRabSu.A_Art = 1 THEN DO: Savze.Abh_Rab = Savze.Net_Betr * SavRabSu.A_Wert / 100. LEAVE. END. IF SavRabSu.A_Art = 2 THEN DO: Savze.Abh_Rab = Savze.Liter * SavRabSu.A_Wert / 100. LEAVE. END. LEAVE. END. DO WHILE TRUE: IF Savze.Abh_Rab = 0 AND Savze.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 = Savze.Abh_Rab. Rundcode = 1. RUN "v8/runden.p". Savze.Abh_Rab = Rundbetr. Rundbetr = Savze.Auf_Rab. Rundcode = 1. RUN "v8/runden.p". Savze.Auf_Rab = Rundbetr. END. LEAVE. END. LEAVE. END. DO WHILE TRUE: ASSIGN Savze.Auf_Sp_Rab = 0. IF Savze.Auf_Sp_Grp = 0 THEN LEAVE. FIND SavSpRab USE-INDEX SavSpRab-k1 WHERE SavSpRab.Firma = Savze.Firma AND SavSpRab.Aufnr = Savze.Aufnr AND SavSpRab.Rab_Grp = Savze.Auf_Sp_Grp NO-LOCK. ASSIGN Savze.Auf_Sp_Proz_Betr = SavSpRab.Auf_Proz_Betr Savze.Auf_Sp_Wert = SavSpRab.Auf_Wert. IF NOT Savze.Auf_Sp_Proz_Betr THEN DO: Savze.Auf_Sp_Rab = Savze.MGeli * Savze.Auf_Sp_Wert. END. IF Savze.Auf_Sp_Proz_Betr THEN DO: Savze.Auf_Sp_Rab = Savze.Net_Betr * Savze.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 = Savze.Auf_Sp_Rab. Rundcode = 1. RUN "v8/runden.p". Savze.Auf_Sp_Rab = Rundbetr. END. LEAVE. END. VWpfl [zz] = VWpfl [zz] + Savze.Net_Betr - Savze.Auf_Rab - Savze.Abh_Rab - Savze.Auf_Sp_Rab. Savko.WW[zz] = Savko.WW[zz] + Savze.Net_Betr - Savze.Auf_Rab - Savze.Abh_Rab - Savze.Auf_Sp_Rab. VTotal [01] = VTotal [01] + Savze.Net_Betr - Savze.Auf_Rab - Savze.Abh_Rab - Savze.Auf_Sp_Rab. IF Savze.Sk_Ber THEN DO: VTotal[02] = VTotal[02] + Savze.Net_Betr - Savze.Auf_Rab - Savze.Abh_Rab - Savze.Auf_Sp_Rab. END. VGewicht = VGewicht + Savze.Gewicht. END. FOR EACH SavGKon USE-INDEX SavGKon-k1 WHERE SavGKon.Firma = Savko.Firma AND SavGKon.Aufnr = Savko.Aufnr NO-LOCK: zz = SavGKon.MWSt_Cd. VWpfl[zz] = VWpfl[zz] + SavGKon.Betrag. IF SavGKon.Gebuehr = 0 THEN VTotal[11] = VTotal[11] + SavGKon.Betrag. ELSE VTotal[12] = VTotal[12] + SavGKon.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 <= Savko.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: Savko.Wpfl[ix] = VWpfl[ix]. Savko.Wust[ix] = VWust[ix]. END. ASSIGN Savko.Auf_Tot = VTotal[10] Savko.Gewicht = VGewicht Savko.Sk_Ber = VTotal[02]. RELEASE Savko. LEAVE. END.