#include %occInclude #define TW(%Tag,%Val) Do TAGWRITE^XMLWRITE(DevObj,%Tag,$ZCVT(%Val,"O","UTF8")) #define TWP1(%Tag,%Val,%P1) Do TAGWRITE^XMLWRITE(DevObj,%Tag,$ZCVT(%Val,"O","UTF8"),%P1) #define TWP2(%Tag,%Val,%P1,%P2) Do TAGWRITE^XMLWRITE(DevObj,%Tag,$ZCVT(%Val,"O","UTF8"),%P1,%P2) #define TWP3(%Tag,%Val,%P1,%P2,%P3) Do TAGWRITE^XMLWRITE(DevObj,%Tag,$ZCVT(%Val,"O","UTF8"),%P1,%P2,%P3) #define TO(%Tag,%Val) Do TAGWRITE^XMLWRITE(DevObj,%Tag) #define TB(%Tag) Do BEGINTAG^XMLWRITE(DevObj,%Tag) #define TBP1(%Tag,%P1) Do BEGINTAG^XMLWRITE(DevObj,%Tag,%P1) #define TBP2(%Tag,%P1,%P2) Do BEGINTAG^XMLWRITE(DevObj,%Tag,%P1,%P2) #define TBP3(%Tag,%P1,%P2,%P3) Do BEGINTAG^XMLWRITE(DevObj,%Tag,%P1,%P2,%P3) #define TE(%Tag) Do ENDTAG^XMLWRITE(DevObj,%Tag) #define W(%Val) Do WRITE^XMLWRITE(DevObj,$ZCVT(%Val,"O","UTF8")) #define Wll(%String) Do WRITE^XMLWRITE(DevObj,%String) #Define NEWLINE Do WRITELN^XMLWRITE(DevObj) #define BTWTEKST(%v) $$BTWNR^DCALG(%v) ; Terminal command to COPY: ; d TestOrdBv^PVXMLFakt("\\Notes01\DataWV\FOP\DD\XMLData\OrderBvs001D.xml") TestOrdBv(FileName) ;Set D="\",Q="K",U=";" Set:('$D(%ClientIP)) %ClientIP="192.168.1.97" Set blnToFile=$L($G(FileName)) Kill pxOBv Set sc=$$tvwStartXmlWriter() ; ORDERBEVESTIGING Set pxOBv=$$txvBuildOrderBv(115741,1000) ; TESTKLANT VH - ??? Set sc=$$tvwUseXmlWriter(pxOBv) ; ORDERBEVESTIGING Set pxOBv=$$txvBuildOrderBv(115744,2967) ; ??? - ??? Set sc=$$tvwUseXmlWriter(pxOBv) ; Close XML Set sc=$$tvwEndXmlWriter() If $$$ISERR(sc) Write $$ParseStatus^vhLib(sc) Quit txvBuildOrderBv(OrdNr,KLNr) Set pxOBv=##class(BL.Flow.Proxy.pxOrder).%New() Do pxOBv.Fill(OrdNr,KLNr) Quit pxOBv ; Terminal command to COPY: ; d TestFact^PVXMLFakt("\\Notes01\DataWV\FOP\DD\XMLData\Facts001D.xml") TestFact(FileName) ;Set D="\",Q="K",U=";" Set:('$D(%ClientIP)) %ClientIP="192.168.1.97" Set blnToFile=$L($G(FileName)) Kill pxF Set sc=$$tvwStartXmlWriter() ; FACTUUR Set pxF=$$txvBuildFactuur(255275) ; TESTKLANT VH - Manuele lijnen/Netto Set sc=$$tvwUseXmlWriter(pxF) ; FACTUUR Set pxF=$$txvBuildFactuur(255276) ; TESTKLANT VH - Manuele lijnen/Bruto Set sc=$$tvwUseXmlWriter(pxF) ; FACTUUR Set pxF=$$txvBuildFactuur(750016) ; TESTKLANT VH - Manuele lijnen/Netto Set sc=$$tvwUseXmlWriter(pxF) ; Close XML Set sc=$$tvwEndXmlWriter() If $$$ISERR(sc) Write $$ParseStatus^vhLib(sc) Quit txvBuildFactuur(FactNr) Set pxF=##class(BL.Flow.Proxy.pxFactuur).%New() Do pxF.FillViaFactNr(,FactNr) Quit pxF ; Terminal command to COPY: ; d TestTransp^PVXMLFakt("\\Notes01\DataWV\FOP\DD\XMLData\Transport001D.xml") TestTransp(FileName) Set D="\",Q="K",U=";" Set:('$D(%ClientIP)) %ClientIP="192.168.1.97" Set blnToFile=$L($G(FileName)) Kill pxTRN Set sc=$$tvwStartXmlWriter() ; TRANSPORT Set pxTRN=$$txvBuildTransport() ; TESTKLANT VH - ??? ;Set sc=$$tvwUseXmlWriter(pxTRN) /* ; TRANSPORT Set pxTRN=$$txvBuildOrderBv(,) ; ??? - ??? Set sc=$$tvwUseXmlWriter(pxTRN) */ ; Close XML Set sc=$$tvwEndXmlWriter() If $$$ISERR(sc) Write $$ParseStatus^vhLib(sc) Quit txvBuildTransport() Do ##class(BL.Flow.Proxy.pxTransport).BuildXML(writer,0) Quit 0 tvwStartXmlWriter() Set writer=##class(%XML.Writer).%New() Set writer.Charset="UTF-8" Set writer.Indent=1 If blnToFile Do . Set sc=writer.OutputToFile(FileName) Set sc=writer.RootElement("DOCS") Quit sc tvwUseXmlWriter(pxObj,Tag) ;Set sc=pxF.XMLExport(,"literal,indent( )") Set sc=writer.Object(pxObj,.Tag) Quit sc tvwEndXmlWriter() Set sc=writer.EndRootElement() ; DOCS Quit sc Test(FileNm) Set D="\",Q="K",U=";" Set DevObj=$G(DevObj,0) ;Set DevObj=##class(%FileCharacterStream).%New() Set:$L($G(FileNm)) LinkOK=DevObj.LinkToFile("\\Notes01\Shared\P V\Faktuur.XML") ;Do:('LinkOK) MApplication.MessageBox("Link mislukt: "_$$ParseStatus^vhLib(LinkOK)) ;If $L(XSLURL) Do $$$Wll("") . ;Do WRITE^XMLWRITE(DevObj,"") $$$TB("DOCS") Do Faktuur(,500488,,DevObj) ; Tovani Do Faktuur(,506336,,DevObj) ; MiBois Do Faktuur(,500931,,DevObj) ; BOS (meerdere orders in een levering) Do Faktuur(,506970,,DevObj) ; Keller (met tekst) $$$TE("DOCS") Set:DevObj'=0 SaveOK=DevObj.SaveStream() ;Write:$G('SaveOK) "Save mislukt: "_$$ParseStatus^vhLib(SaveOK) ;Do:('SaveOK) MApplication.MessageBox("Save mislukt: "_$$ParseStatus^vhLib(SaveOK)) Do:DevObj'=0 DevObj.%Close() Q Faktuur(FAKSoort,FAKNr,Opties,DevObj) Set FAKSoort=$G(FAKSoort,"F") $$$TB("FAKTUUR") Set KLNr=$P(^KFA(FAKSoort,FAKNr,0,0),D,1) Set KLID=^KK1(KLNr) Set Taal=$P(^KKL(KLID,0),D,9) Do Algemeen(KLNr,KLID,Taal,FAKSoort,FAKNr) $$$TB("LEVERINGEN") Set BONNr="U" For Set BONNr=$O(^KFA(FAKSoort,FAKNr,BONNr)) Quit:$E(BONNr)'="U" Do Levering(KLNr,KLID,Taal,FAKSoort,FAKNr,BONNr) $$$TE("LEVERINGEN") Do VoorWaarden(KLNr,FAKSoort,FAKNr) Do RecuPak(FAKSoort,FAKNr) $$$TE("FAKTUUR") Quit Algemeen(KLNr,KLID,Taal,FAKSoort,FAKNr) Set Rec0=^KFA(FAKSoort,FAKNr,0,0) Set Rec1=$G(^KFA(FAKSoort,FAKNr,0,1)) Set Rec2=$G(^KFA(FAKSoort,FAKNr,0,2)) Set Rec3=$G(^KFA(FAKSoort,FAKNr,0,3)) Set KLNr=$P(Rec0,D,1) Set KLID=^KK1(KLNr) Set Taal=$P(^KKL(KLID,0),D,9) $$$TW("KLANTNR",KLNr) $$$TW("FAKTUURNR",FAKNr) $$$TW("KLANTNAAM",$P(^KKL(KLID,0),D,2)) $$$TW("BTWNR",$$$BTWTEKST($P(^KKL(KLID,0),D,16))) $$$TW("MUNT",$P(Rec0,D,5)) $$$TW("FAKTDATUM",$P(Rec0,D,6)) $$$TW("FAKTTYPE",$P(Rec0,D,2)) $$$TW("TAAL",Taal) $$$TW("VERVALDATUM",$P(Rec0,D,3)) $$$TW("GOEDEREN",$P(Rec0,D,7)) $$$TW("PORT",$P($P(Rec0,D,17),"#",2)) $$$TW("KORTINGKONTANT",$P(Rec0,D,12)) $$$TW("BELASTBAAR",$P(Rec0,D,8)) $$$TW("BTWPERCENTAGE",21) $$$TW("BTW",$P(Rec0,D,9)) $$$TW("VERVALDATUM",$P(Rec0,D,3)) $$$TW("GEWICHT",$P(Rec3,D,22)) $$$TW("BRUTONETTO",$S($P(Rec3,D,27):"B",1:"N")) $$$TB("FAKTADRES") Do Adres(KLNr,Rec2) $$$TE("FAKTADRES") Quit Adres(KLNr,RecAdres) Set:$P(RecAdres,D,2)="" RecAdres=^KKL(^KK1(KLNr),0) Set Taal=$P(^KKL(^KK1(KLNr),0),D,9) $$$TW("NAAM",$P(RecAdres,D,2)) $$$TW("TOENAAM",$P(RecAdres,D,3)) $$$TW("AANSPREKING",$P(RecAdres,D,4)) $$$TW("STAAT",$P(RecAdres,D,5)) $$$TW("POSTKODE",$P(RecAdres,D,6)) $$$TW("GEMEENTE",$P(RecAdres,D,7)) $$$TW("LAND",$$LAND^vhRtn1($P(RecAdres,D,8),2,Taal)) Quit Levering(KLNr,KLID,Taal,FAKSoort,FAKNr,BONNr) Set BrutoPrijs=$P(^KFA(FAKSoort,FAKNr,BONNr,1),D,27) $$$TB("LEVERING") Set LijnNr=99 Set Rec=^KFA(FAKSoort,FAKNr,BONNr,1) $$$TW("LEVERINGSNR",$E(BONNr,2,99)) $$$TW("LEVERINGSDATUM",$P(Rec,D,2)) $$$TW("VERZENDWIJZE",$P($P(Rec,D,7),"#",1)) $$$TW("VERZENDWIJZEOMS",$P($P(Rec,D,7),"#",2)) $$$TB("LEVADRES") Do Adres(KLNr,$G(^KFA(FAKSoort,FAKNr,BONNr,3))) $$$TE("LEVADRES") $$$TB("ORDERS") Set IsOrder=0 For Set LijnNr=$O(^KFA(FAKSoort,FAKNr,BONNr,LijnNr)) Quit:LijnNr="" Do . Set Rec=^KFA(FAKSoort,FAKNr,BONNr,LijnNr) . If $P(Rec,D,17)="KF5" Do . . Set Order=$P(Rec,D,5) . . If IsOrder $$$TE("LIJNEN") $$$TE("ORDER") Set Order=0 . . Set IsOrder=1 . . $$$TB("ORDER") . . $$$TW("ORDERNR",$P(Order," - ")) . . $$$TW("ORDERDATUM",$P(Order," - ",2)) . . $$$TW("ORDERREF",$P(Order," - ",3)) . . $$$TB("LIJNEN") . Else If $P(Rec,D,17)="KF11#1" Do TekstLijn(FAKSoort,FAKNr,BONNr,.LijnNr) ; Tekstlijn, groeperen tot tekstblok . Else If $P(Rec,D,17)="KF6" Do ProductLijn(KLNr,Taal,FAKSoort,FAKNr,BONNr,.LijnNr) ; Product If IsOrder $$$TE("LIJNEN") $$$TE("ORDER") Set Order=0 $$$TE("ORDERS") $$$TE("LEVERING") Quit ProductLijn(KLNr,Taal,FAKSoort,FAKNr,BONNr,LijnNr) New PRNr,Tekst,KlantRef Set Rec=^KFA(FAKSoort,FAKNr,BONNr,LijnNr) Set PRNr=$P(Rec,D,2) $$$TB("LIJN") $$$TW("LIJNTYPE","P") Do Product(PRNr,KLNr,Taal) $$$TW("AANTAL",$P(Rec,D,3)) Do CalcPrijs(Rec,BrutoPrijs,.Bruto,.Korting1,.Korting2,.Netto) $$$TW("NETTOPRIJS",Netto) $$$TW("KORTING1",Korting1) $$$TW("KORTING2",Korting2) $$$TW("BRUTOPRIJS",Bruto) $$$TW("TOTAALPRIJS",$P(Rec,D,9)) $$$TW("GROOTTEORDE",$E($P(Rec,D,21))) Set KlantRef=$$DISP^PAKKET(KLNr,PRNr) If $L(KlantRef) $$$TW("KLANTREF",KlantRef) If PRNr="149157" Do ; tekst behorend bij een product . Set Tekst=2,Tekst(1)="Extra product omschrijving",Tekst(2)="Extra product omschrijving lijn 2" . $$$TBP1("TEKST", "TYPE=""STRING""") . For I=1:1:Tekst Do . . $$$W(Tekst(I)_$S(I$L(Lijst,"`") RoundRobin=1 $$$TW("IMAGE",$P(Lijst,"`",RoundRobin)) $$$TE("PRODUCT") $$$NEWLINE Quit TekstLijn(FAKSoort,FAKNr,BONNr,LijnNr) New I,Tekst $$$TB("LIJN") Do GetTekstBlok(FAKSoort,FAKNr,BONNr,.LijnNr,.Tekst) $$$TW("LIJNTYPE","T") $$$TBP1("TEKST", "TYPE=""STRING""") For I=1:1:Tekst Do . $$$W(Tekst(I)_$S(I58620&(FaktDat<58621):"BEF",1:""),BhMunt=$$MUNT^vhRtn1(BhMunt,1) Set BedrBhM=$$FN^DCALG(BedrBhM,$$MUNT^vhRtn1(BhMunt,4)) Set R=^KFA("F",FANr,0,3),Palet=$P($P(R,D,21),"#"),Colli=$P($P(R,D,21),"#",2) Set Karton=$P($P(R,D,21),"#",3),Gewicht=$P(R,D,22),BonInd="U" For Set BonInd=$O(^KFA("F",FANr,BonInd)) Quit:BonInd="" Do Quit:$L(LeverVw) .Set R=^KFA("F",FANr,BonInd,1),LeverVw=$P(R,D,21) Set KlantInd=^KK1(KLNr),R=^KKL(KlantInd,0),Land=$$LAND^vhRtn1($P(R,D,8)),Taal=$P(R,D,9) Set:Taal="" Taal="N" Set Clausule=$P(R,D,12),%KontKrt=$P(R,D,17),BetVw=$P(R,D,18) Set R=^KKL(KlantInd,2),TKontKrt=$P(R,D,2) Set R=^KKL(KlantInd,3),Rembours=$P(R,D),VoorBet=$P(R,D,2) Set:LeverVw="" LeverVw=$P(R,D,3) If Clausule,$D(^KBA(152,Taal)),$L(^KBA(152,Taal)) Do ; faktuurclausule .Set Cache("FACTUURCLAUSULE",1)=^KBA(152,Taal) .Set R=TeBet D @("^KY125"_$S(Taal="F":"F",1:"N")) .Set T=$$MUNT^vhRtn1(FaktMunt,2) .Set Cache("FACTUURCLAUSULE",2)=R_$S($L(R1):"",1:T) .If $L(R1) Set Cache("FACTUURCLAUSULE",3)=R1 Set T="" For Verp="Palet","Colli","Karton" If @Verp Do ; Verpakking .If $L(T) Set T=T_" + " .If @Verp Set T=T_@Verp_" "_$$TXT^DCFAKT(Verp) .If Verp="Colli",@Verp=1 Set T=T_$$TXT^DCFAKT(Verp,4) .If @Verp>1 Set T=T_$$TXT^DCFAKT(Verp,3) Set:$L(T) Cache("VERPAKKING")=T If Gewicht Set Gewicht=$$FN^DCALG(Gewicht,1),Cache("GEWICHT")=$$TXT^DCFAKT("Gew")_" : "_Gewicht_"kg" If Land'="BE" Do .Set T=$$TXT^DCFAKT("FaktW")_" "_BedrBhM_BhMunt_" "_$$TXT^DCFAKT("Vrijst") .Set Cache("FACTUURWAARDE")=T Set R=$$LEVVW^KLANT(LeverVw,Taal) ; Leveringsvoorwaarde If $L(R) Do .For I=1:1:$L(R,"#") Set Cache("LEVERINGSVOORWAARDE",I)=$P(R,"#",I) If FaktTyp="F" Do ; Betalingsvoorwaarde .Set R=$$BETVW^KLANT(BetVw,%KontKrt,TKontKrt,Rembours,VoorBet,Taal) .For I=1:1:$L(R,"#") Set Cache("BETALINGSVOORWAARDE",I)=$P(R,"#",I) If Land="NL",FaktTyp="F" Do .Set Cache("EXPORT",1)=$P($T(TVwNl1^DCFAKT),U,2),Cache("EXPORT",2)=$P($T(TVwNl2^DCFAKT),U,2) ; Export ;Do Memo("F",.Cache) Do MEMOPROXY^DCALG("F",Taal,.Cache) For I=1:1:4 If $L($G(^KBA(151,Taal,I))) Set Cache("FACTUURTEKST",I)=^KBA(151,Taal,I) ; Faktuurtekst Quit ; Proformavoorwaarden Proforma(FANr,Cache) New B,I,R,R1,T,KLNr,BCount,BedrBhM,BhMunt,Taal,Land New Palet,Colli,Karton,Gewicht,Monster,LTemp,FaktDat,FaktMunt Set BCount=0 Set R=^KFAP("F",FANr,0,0),KLNr=$P(R,D),FaktDat=$P(R,D,6),BedrBhM=$P(R,D,14) Set FaktDat=$$INTDATE^vhDTyp(FaktDat),BhMunt=$S($H>58620&(FaktDat<58621):"BEF",1:""),BhMunt=$$MUNT^vhRtn1(BhMunt,1) Set BedrBhM=$$FN^DCALG(BedrBhM,$$MUNT^vhRtn1(BhMunt,4)) Set R=^KFAP("F",FANr,0,3),Palet=$P($P(R,D,21),"#"),Colli=$P($P(R,D,21),"#",2) Set Karton=$P($P(R,D,21),"#",3),Gewicht=$P(R,D,22) Set Monster=$P(^($O(^KFAP("F",FANr,"U")),1),D,25)="M" Set KlantInd=^KK1(KLNr),R=^KKL(KlantInd,0),Land=$$LAND^vhRtn1($P(R,D,8)),Taal=$P(R,D,9) Set:Taal="" Taal="N" Set T="" For Verp="Palet","Colli","Karton" If @Verp Do ; Verpakking .If $L(T) Set T=T_" + " .If @Verp Set T=T_@Verp_" "_$$TXT^DCFAKTP(Verp) .If Verp="Colli",@Verp=1 Set T=T_$$TXT^DCFAKTP(Verp,4) .If @Verp>1 Set T=T_$$TXT^DCFAKTP(Verp,3) Set:$L(T) Cache("VERPAKKING")=T If Gewicht Set Gewicht=$$FN^DCALG(Gewicht,1),Cache("GEWICHT")=$$TXT^DCFAKTP("Gew")_" : "_Gewicht_"kg" If Land'="BE",'Monster Do .Set T=$$TXT^DCFAKTP("FaktW")_" "_BedrBhM_BhMunt .Set Cache("FACTUURWAARDE")=T If Monster Do .Set Cache("MONSTER")=$$TXT^DCFAKTP("Monster") ; Export ;Do Memo("V",.Cache) Do MEMOPROXY^DCALG("V",Taal,.Cache) For I=1:1:4 If $L($G(^KBA(151,Taal,I))) Set Cache("FACTUURTEKST",I)=^KBA(151,Taal,I) ; Faktuurtekst Quit ; Document afhankelijke teksten uit ^RES("DC","PI","MEMO") Memo(Document,Cache) New I,R,X,Memo,MemRef,MemSort,Count Set MemRef="" For Set MemRef=$O(^RES("DC","PI","MEMO","D",MemRef)) Quit:MemRef="" Do .Set R=^RES("DC","PI","MEMO","D",MemRef) .Quit:(";"_$P(R,"`",4)_";")'[(";"_Document_";") ; Deze tekst mag niet voor dit document .If $L($P(R,"`",3)) Xecute "Set X="_$P(R,"`",3) Quit:'X ; Deze tekst mag niet onder bepaalde voorwaarde .If $P(R,"`",5) Quit:$P($H,",")<$P(R,"`",5) ; Begintijdstip is nog niet bereikt voor deze tekst .If $P(R,"`",6) Quit:$P($H,",")>$P(R,"`",6) ; Eindtijdstip is reeds verstreken voor deze tekst .Set R=$G(^RES("DC","PI","MEMO","D",MemRef,Taal)) .Quit:R="" .Set Memo(MemRef,1)=R .Do GETWRAP^vhBIGEDIT("Memo(MemRef)",78,.Memo,"G","~","") .For I=1:1 Quit:'$D(Memo(I)) Set Cache("MEMO",MemRef,I)=$P(Memo(I),"`",5) Quit /* * / ; Document afhankelijke teksten uit ^RES("DC","PI","MEMO") MemoWV(Document,Cache) New R,X,Memo,MemRef,MemSort,Count,MemTxt Set MemRef="" For Set MemRef=$O(^RES("DC","PI","MEMO","D",MemRef)) Quit:MemRef="" Do .Set R=^RES("DC","PI","MEMO","D",MemRef) .Quit:(";"_$P(R,"`",4)_";")'[(";"_Document_";") ; Deze tekst mag niet voor dit document .If $L($P(R,"`",3)) Xecute "Set X="_$P(R,"`",3) Quit:'X ; Deze tekst mag niet onder bepaalde voorwaarde .If $P(R,"`",5) Quit:$P($H,",")<$P(R,"`",5) ; Begintijdstip is nog niet bereikt voor deze tekst .If $P(R,"`",6) Quit:$P($H,",")>$P(R,"`",6) ; Eindtijdstip is reeds verstreken voor deze tekst .Set Memo("S",$P(R,"`"))=MemRef ; Alternatieve methode opbouw van teksten (voor Proxy-objecten) Set MemSort="",Count=0 For Set MemSort=$O(Memo("S",MemSort)) Quit:MemSort="" Do .Set MemRef=Memo("S",MemSort) .Set MemTxt=$G(^RES("DC","PI","MEMO","D",MemRef,Taal)) .Quit:(MemTxt="") .Set Cache("MEMO",$INCREMENT(Count))=$TR(MemTxt,"~"," ") .Set Cache("MEMO",Count,"R")=MemRef Quit /* */