KF21B G 1 ;MODULE FAKTURATIE (UPDATE BESTANDEN KLANT/ART, ART/KLANT, EXPORT, WISSELNR, COPY -> us) ;Quit naar KF21 [ 06/30/2003 4:39 PM ] ; S1 S X=^(0),^(0)=FDT_D_UEP_D_USP_D_VM_D_UPAR_D_U26_D_D_$P(X,D,8,99) S1A S X=^(BP_" "),X=($P(X,D,1)+UA)_D_($P(X,D,2)+1)_D_($P(X,D,3)+UN)_D_($P(X,D,4)+MAR)_D_($P(X,D,5)+UAKOM)_D_($P(X,D,6)+(UA*PLP))_D S1B S ^(BP_" ")=X S1Z Q ; S2 S @S=$$ROUND^KPRIJS(@S) Q ; S0 S:'$D(NST(PVS)) NST(PVS)=0 S TWAS=TWAS+UN,NST(PVS)=NST(PVS)+UN S0Z Q ; #include Prod.Product #include vhLib.Macro #include BL.Derde.KlantSpecifiek KC(KC,FactKLNr) ; KC is de klant v/d lev.bon, deze kan verschillen van de facturatieklant 1 N IsEuro,IsLidVan,%LidVan,IsCommissie,%Commissie,BLUNr,AkpEUR,LijstEUR K NST S (UR,TWAS)=0 Set IsLidVan=$$GetLidVan(KC),%LidVan=$LI(IsLidVan,2),IsLidVan=$LI(IsLidVan) Set IsCommissie=$$GetCommissie(FNR,1),%Commissie=$P(IsCommissie,D,2),IsCommissie=$P(IsCommissie,D) S IsEuro=$$ISEURO^vhRtn1() S Maand=$$CALCDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(FDT,"DK"),"M","MD") I '$L($P(^KKL(^KK1(KC),2),D,21)) S $P(^KKL(^KK1(KC),2),D,21)=$$INTDATE^vhLib.DataTypes(FDT) L +@("^"_Q_"STKL(KC)") L +^KLKAN(KC) 3 S UR=$N(@("^"_Q_"FA(US,FNR,UR)")) G 27:UR=-1 S UZ=100 5 S UZ=$N(@("^"_Q_"FA(US,FNR,UR,UZ)")) G 3:UZ=-1 Do G 5:'PR . Set X=@("^"_Q_"FA(US,FNR,UR,UZ)"),PR=$P(X,D,2) . Do:$$IsManueleLijn(X) ConverteerManueleLijn(KC,.PR,.X) Goto 5:'$$IsGeldigeLijnVoorStatistiek(KC,PR,X) 6 I '$D(@("^"_Q_"PR(PR)")) S UN=$P(X,D,9),PVS=0 D S0 G 5 7 S UA=$P(X,D,3),UN=$P(X,D,9),VWTYP=$P(X,D,14),BLUNr=$P(X,D,15),USP=$P(X,D,21),U26=$P(X,D,26) S:U26="=" U26="" S UEP=$J(UN/UA*$P("1\100\1000",D,$F("EHM",$E(USP,1))-1),0,2) 9 S UAKOM=0 S:$P($P(X,D,28),";")="KOM" UAKOM=UA S X=^(PR,2),PVS=$P(X,D,8) S:'$L(PVS) PVS=" " D S0 11 S X=$$GRORDE^PRODUKT2(PR),AFE=$E(X),AFR=$E(X,2) S X="",Y=$N(@("^"_Q_"PR(PR,""J"")")) I $E(Y,1)="J" S X=^(Y) 13 I $L(VM)&(UPAR) S UN=+$J(UN*UPAR,0,$S(IsEuro:4,1:2)) I IsLidVan,%LidVan S UN=+$J(UN*(100-%LidVan/100),0,4) E I IsCommissie,%Commissie S UN=+$J(UN*(100-%Commissie/100),0,4) 15 S PCP=$P(X,D,23),MAR=UN-(PCP*UA),PLP=$P(X,D,25),PLP=PLP*$S(AFE="M":1000,AFE="H":100,1:1),S="PLP" ;D S2 S PLP=PLP/$S(AFE="M":1000,AFE="H":100,1:1) 17 S:'$D(@("^"_Q_"STKL(KC,0,0)")) @("^"_Q_"STKL(KC,0,0)")=BS 18 S:'$D(^(BP_" ")) @("^"_Q_"STKL(KC,0,BP_"" "")")="" D S1 19 S:'$D(@("^"_Q_"STKL(KC,PR,0)")) @("^"_Q_"STKL(KC,PR,0)")=BS 20 S:'$D(^(BP_" ")) @("^"_Q_"STKL(KC,PR,BP_"" "")")="" D S1 L +@("^"_Q_"STPR(PR)") 21 S:'$D(@("^"_Q_"STPR(PR,0,0)")) @("^"_Q_"STPR(PR,0,0)")=BS 22 S:'$D(^(BP_" ")) @("^"_Q_"STPR(PR,0,BP_"" "")")="" D S1 23 S:'$D(@("^"_Q_"STPR(PR,KC,0)")) @("^"_Q_"STPR(PR,KC,0)")=BS 24 S:'$D(^(BP_" ")) @("^"_Q_"STPR(PR,KC,BP_"" "")")="" D S1 25 I UA'>0,$$OPSLMAN^PRODUKT2(PR) D .N OrdDat .S R=$TR($$EXTDATE^vhLib.DataTypes($$INTDATE^vhLib.DataTypes(FDT),"DS"),D,"")_2_D .S R=R_$S(VWTYP["S":0,VWTYP["Z":0,1:UA)_D_D_1_D_+$J($S(VWTYP["S":0,VWTYP["Z":0,1:UN),0,$S(IsEuro:4,1:2))_"\0\0\"_UR .D ^KPR10 .S OrdDat=$P($$ORDGEG^FLOWBON(KC,$E(UR,2,99),UZ,"G"),D,2) S:$L(OrdDat) OrdDat=$$INTDATE^vhLib.DataTypes(OrdDat) .D PUT^PRHIST(PR,$S(VWTYP["S":0,VWTYP["Z":0,1:UA),"R",,KC,$E(UR,2,9),BLUNr,$$INTDATE^vhLib.DataTypes(FDT),,,,,,OrdDat) S X=$$KLANTPR^KPRIJS(KC,PR),AkpEUR=$P(X,D,13),LijstEUR=$P(X,D,15) S X=@("^"_Q_"FA(US,FNR,UR,UZ)"),$P(X,D,32)=LijstEUR*UA,$P(X,D,33)=AkpEUR*UA,$P(X,D,34)=UN,^(UZ)=X Set:'$P(X,D,2) $P(X,D,2)=PR Set $P(X,D,3)=$S(+$P(X,D,3)=0:1,1:$P(X,D,3)) ; i.v.m. actiecodes D KLKAN(KC,X,Maand) L -@("^"_Q_"STPR(PR)") 26 G 5 ; 27 L -@("^"_Q_"STKL(KC)") L -^KLKAN(KC) S X=$$INTDATE^vhLib.DataTypes(FDT),@("^"_Q_"FA1(US,$G(FactKLNr,KC),-X,FNR)")="" 29 S X=@("^"_Q_"FA(US,FNR,0,0)") G 41:'$P(X,D,16) S (PVS,PWA)=0,NST=$N(NST(0)) 30 F I=1:1 S PVS=$N(NST(PVS)) Q:PVS=-1 I (NST(PVS)>0&(PWANST(PVS))) S NST=PVS,PWA=NST(PVS) 31 I TWAS S X=^(3),$P(X,D,24)=NST_"#"_TWAS,^(3)=X 33 S X=@("^"_Q_"KL(I1,0)"),Y=$$LAND^vhRtn1($P(X,D,8)) S ^KEXP(BP_" ",Y,FNR)="" ; 41 I $E(KX,$L(KX))'="W",$E(KX,$L(KX))'="A" G YZ 43 ;S X=@("^"_Q_"BA(177)"),^(177)=X+1,$P(@("^"_Q_"FA(US,FNR,0,3)"),D,25)=X 45 S @("^"_Q_"FBWC(US,FNR)")="" ; YZ K UA,UEP,UN,USP,AFR,AFE,S,X,Y,PCP,MAR,U26,UAKOM,NST,PVS,TWAS,PWA,VWTYP,Maand Q ; COPY(us) New R Merge @("^"_Q_"UL(KC,us,UR)")=@("^"_Q_"UL(KC,US,UR)") Set R=@("^"_Q_"UL(KC,US,UR,1)") Do SET^KFVZW(us,R,UR) Quit ; KLKAN(KLNr,Rec,Mnd) New PRNr,Kort,Kodex,Omzet,LijstPr,AankPr Set PRNr=$P(Rec,D,2),Kort=$P(Rec,D,7),LijstPr=$P(Rec,D,32),AankPr=$P(Rec,D,33),Omzet=$P(Rec,D,34) Set Kort=1-(1-($P(Kort,"#")/100))*(1-($P(Kort,"#",2)/100))*100 Set Kodex=$S(Kort'>0:0,Kort'>7.5:1,Kort'>15:2,Kort'>22.5:3,1:4)*3 Set Hulp=$G(^KLKAN(KLNr,0,Mnd)) Set $P(Hulp,D,1+Kodex)=$P(Hulp,D,1+Kodex)+Omzet Set $P(Hulp,D,2+Kodex)=$P(Hulp,D,2+Kodex)+LijstPr Set $P(Hulp,D,3+Kodex)=$P(Hulp,D,3+Kodex)+AankPr Set ^KLKAN(KLNr,0,Mnd)=Hulp Set Hulp=$G(^KLKAN(KLNr,PRNr,Mnd)) Set $P(Hulp,D,1+Kodex)=$P(Hulp,D,1+Kodex)+Omzet Set $P(Hulp,D,2+Kodex)=$P(Hulp,D,2+Kodex)+LijstPr Set $P(Hulp,D,3+Kodex)=$P(Hulp,D,3+Kodex)+AankPr Set ^KLKAN(KLNr,PRNr,Mnd)=Hulp Quit ; GetLidVan(KLNr) New CommPerc,RelID,RelatieKlant,dsRelatie Set CommPerc=##class(BL.Derde.Klant.Relaties).CommissiePerc(KLNr,.RelID)*100 Do:$G(RelID) . Set dsRelatie=##class(DS.Derde.Klant.Relaties).%OpenId(RelID) . Set:$IsObject(dsRelatie) RelatieKlant=dsRelatie.RelatieKlant.Nummer . If $G(RelatieKlant),'$D(^KK1(RelatieKlant)) S RelatieKlant="" Set:'$G(RelatieKlant) CommPerc="" Quit $LB($G(RelatieKlant),CommPerc) ; GetCommissie(FANr,Gecumuleerd) New I,Commissie,BONNr Set BONNr=$O(^KFA("F",FANr,"U")),Commissie="" Set:$E(BONNr)="U" Commissie=$P(^KFA("F",FANr,BONNr,1),D,55,56) If Commissie,$G(Gecumuleerd) { Set Commissie=$P(Commissie,D,2) For I=2:1:$L(Commissie,"`") Set $P(Commissie,"`")=$P(Commissie,"`")+$P(Commissie,"`",I) Set Commissie="1\"_+Commissie } Quit Commissie IsManueleLijn(FactuurLijn) Quit $P($P(FactuurLijn,D,17),"#")="KF1925" ConverteerManueleLijn(KLNr,PRNr,FactuurLijn) ; PRNr en FactuurLijn worden met .Local opgeroepen New ActieCode If 'PRNr { If $P($P(FactuurLijn,D,17),"#",2)="CK" ; Commerciele korting { Set ActieCode=$P($P(FactuurLijn,D,17),"#",4) If ActieCode'="" { Set PRNr=$P($G(^RES("FLOW","PI","MANLIJNAC","D",ActieCode)),"`",4) If 'PRNr { Set PRNr=902706 ; GEN.COMM KORTING } } Else { Set PRNr=902706 ; GEN.COMM KORTING } } Else { Set PRNr=902707 ; GEN.MANUELE LIJN } } Else { Set PRNr=902707 ; GEN.MANUELE LIJN } ; opbouw dummy lijn If PRNr { Set $P(FactuurLijn,D,2)=PRNr Set $P(FactuurLijn,D,3)=$S(+$P(FactuurLijn,D,3)=0:1,1:$P(FactuurLijn,D,3)) Set $P(FactuurLijn,D,21)=$S($P(FactuurLijn,D,21)="":"E1",1:$P(FactuurLijn,D,21)) } Quit IsGeldigeLijnVoorStatistiek(KLNr,PRNr,FactuurLijn) Set IsGeldig=1 If PRNr="" { Set IsGeldig=0 } If KLNr=$$$KlantHalux ; niet voor Halux dubbeltelling { Set IsGeldig=0 } If $E($P(FactuurLijn,D,1),1,2)'="70" ; grootboekrekening anders dan omzetrekening 70xxxx { Set IsGeldig=0 } Quit IsGeldig