#include BL.EC.Common #include Prod.Product FaktLijnen ;Regios oproepen via .Local Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Set DatTot=$$CALCDATE^vhDTyp($H,"M",-1,"LD") Set DatVan=$$CALCDATE^vhDTyp(DatTot,"M",-12,"FD") Set Dev=$$OPEN^vhDEV(,"Fakturen.txt","W","T") Use Dev ; Ophalen van de details uit factuur en proforma Set (KLId)=0 For Set KLId=$O(^KKL(KLId)) Quit:KLId="" Do Q:$E(KLId)="B" . Set KLNr=$P(^KKL(KLId,0),D,1) . Kill ^HULP(%J,"D"),^HULP(%J,"ADR"),^HULP(%J,"ORD") . Do Cumul("F",KLNr,DatVan,DatTot,$NA(^HULP(%J))) . Do Cumul("P",KLNr,DatVan,DatTot,$NA(^HULP(%J))) . Do BuildList($NA(^HULP(%J))) Kill ^HULP(%J) Do CLOSE^vhDEV(Dev) Quit BuildList(CacheRef) Set (Key1,Key2,Key3,Key4,Key5)="" For Set Key1=$O(@CacheRef@("D",Key1)) Quit:Key1="" Do . Set Val1=@CacheRef@("D",Key1) . For Set Key2=$O(@CacheRef@("D",Key1,Key2)) Quit:Key2="" Do . . Set Val2=@CacheRef@("D",Key1,Key2) . . For Set Key3=$O(@CacheRef@("D",Key1,Key2,Key3)) Quit:Key3="" Do . . . Set Val3=@CacheRef@("D",Key1,Key2,Key3) . . . For Set Key4=$O(@CacheRef@("D",Key1,Key2,Key3,Key4)) Quit:Key4="" Do . . . . Set Val4=@CacheRef@("D",Key1,Key2,Key3,Key4) . . . . For Set Key5=$O(@CacheRef@("D",Key1,Key2,Key3,Key4,Key5)) Quit:Key5="" Do . . . . . Set Val5=@CacheRef@("D",Key1,Key2,Key3,Key4,Key5) . . . . . Set lb=$$BuildRow(Val1,Val2,Val3,Val4,Val5) . . . . . Set @CacheRef@("L",$I(@CacheRef@("L")))=lb Quit BuildRow(Val1,Val2,Val3,Val4,Val5) Set lbRow=Val1_Val2_Val3_Val4_Val5 Write $$ListToPieces^vhLib(lbRow,$C(9)),! Quit lbRow Cumul(Type,KLNr,DatVan,DatTot,CacheRef) If Type="F" Do . Set GlobalRef=$NA(^KFA),GlobalIndRef=$NA(^KFA1) Else If Type="P" Do . Set GlobalRef=$NA(^KFAP),GlobalIndRef=$NA(^KFAP1) Else Quit ; error Set Dat=$S(DatTot:-DatTot-1,1:"") Set:DatVan="" DatVan=1 Set FAKNr="" For Set Dat=$O(@GlobalIndRef@("F",KLNr,Dat)) Quit:Dat="" Quit:Dat>-DatVan Do . For Set FAKNr=$O(@GlobalIndRef@("F",KLNr,Dat,FAKNr)) Quit:FAKNr="" Do . . Do GetFakt(KLNr,Type,FAKNr,.Key1,.Val1) . . Set BONNr="U" . . For Set BONNr=$O(@GlobalRef@("F",FAKNr,BONNr)) Quit:BONNr="" Do . . . Do GetAdres(Type,FAKNr,BONNr,@GlobalRef@("F",FAKNr,BONNr,1),$G(@GlobalRef@("F",FAKNr,BONNr,3)),$NA(@CacheRef@("ADR")),.Key2,.Val2) . . . Do GetBon(FAKNr,BONNr,@GlobalRef@("F",FAKNr,BONNr,1),.Key3,.Val3) . . . Set Key4="999999",Val4="" . . . Set LNr=100 . . . For Set LNr=$O(@GlobalRef@("F",FAKNr,BONNr,LNr)) Quit:LNr="" Do . . . . Set FakRec=@GlobalRef@("F",FAKNr,BONNr,LNr) . . . . If $P(FakRec,D,17)="KF5" Do . . . . . Set ORDNr=$P($P(FakRec,D,5)," - ") . . . . . Do GetOrd(ORDNr,FakRec,$NA(@CacheRef@("ORD")),.Key4,.Val4) . . . . Else If $P(FakRec,D,2)?4.7N Do . . . . . Do GetProd(FakRec,.Key5,.Val5) . . . . . Do AddRec($NA(@CacheRef@("D")),Key1,Val1,Key2,Val2,Key3,Val3,Key4,Val4,Key5,Val5) Quit AddRec(CacheRef,Key1,Val1,Key2,Val2,Key3,Val3,Key4,Val4,Key5,Val5) Set @CacheRef@(Key1)=Val1 Set @CacheRef@(Key1,Key2)=Val2 Set @CacheRef@(Key1,Key2,Key3)=Val3 Set @CacheRef@(Key1,Key2,Key3,Key4)=Val4 Set @CacheRef@(Key1,Key2,Key3,Key4,Key5)=Val5 Quit GetFakt(KLNr,Type,FAKNr,Key1,Val1) Set Key1=Type_FAKNr Set Val1=$LB(KLNr,Type,FAKNr) Quit GetAdres(Type,FAKNr,BONNr,BonRec,AdrRec,AdrCacheRef,Key2,Val2) Set Key2="" Set (QtyPal,QtyCol,QtyLang)="" Set Key2=$P(BonRec,"\",8) If $L($P(Key2,";"))&&$L($P(Key2,";",2)) Do . Set Groep=$P(Key2,";") . Set RefBon=$P(Key2,";",2) . Quit:'$D(^TRANSP("D",Groep,"D",RefBon)) . Set QtyPal=$P($G(^TRANSP("D",Groep,"D",RefBon,"Q","P")),"\") . Set QtyCol=$P($G(^TRANSP("D",Groep,"D",RefBon,"Q","C")),"\") . Set QtyLang=$P($G(^TRANSP("D",Groep,"D",RefBon,"Q","L")),"\") Else Do . Set Key2=$P(AdrRec,"\",2,6) . Set:Key2="" Key2="*" . Set:'$D(@AdrCacheRef@(Key2)) @AdrCacheRef@(Key2)=$I(@AdrCacheRef) . Set Key2=@AdrCacheRef@(Key2) Set VerzendW=$P($P(BonRec,"\",7),"#") Set Val2=$LB(QtyPal,QtyCol,QtyLang,VerzendW) Quit GetBon(FAKNr,BONNr,BonRec,Key3,Val3) Set Key3=BONNr Set Datum=$P(BonRec,"\",2) Set Val3=$LB(BONNr,Datum) Quit GetOrd(ORDNr,FakRec,OrdCacheRef,Key4,Val4) Set EDIRef=$P(FakRec,D,21) If (EDIRef'?4.8N)&&(KLNr=1239)&&($P(FakRec,D,5)["EDI") Do . Set EDIRef=$P($P(FakRec,D,5),"EDI",2) . Set EDIRef=$P($P(EDIRef,"."),"/") . Set EDIRef=$$TRIMN^vhRtn1(EDIRef) Set IsEDI=''$L(EDIRef) Set @OrdCacheRef@(ORDNr)=$G(@OrdCacheRef@(ORDNr))+1 Set Key4=ORDNr ; TODO maandafhankelijk Set Val4=$LB(ORDNr,IsEDI) Quit GetProd(FakRec,Key5,Val5) Set PRNr=$P(FakRec,D,2) Set ProductGrp=##class(Prod.Product).GetPropViaNr(PRNr,"ProductGroep") Set:ProductGrp="" ProductGrp=$$$pgBeslagAndere Set:($E(ProductGrp)="#") ProductGrp="???" Set VKPOmzet=$P(FakRec,D,34) Set AKP=$P(FakRec,D,33) Set Aantal=$P(FakRec,D,3) Set Gewicht=$$$PRGet($$$Gewicht)*Aantal/1000 Set Key5=ProductGrp Set Val5=$LB(ProductGrp,Aantal,AKP,VKP,Gewicht) Quit