#Include vhLib.Macro #Include BL.Derde.LevSpecifiek #Include BL.Derde.KlantSpecifiek TRANSPEA ;Verwerking expediteur (EDI ABX) [ 12/20/2003 11:24 AM ] ; Meer bepaald: opstellen en via FTP verzenden van "ABX LINK" transportbestand. ; VERWERK(VervRef) quit:$$$Not(##class(TECH.Config.ConfigMgr).Instance().GeefString("APPS.TRANSP.GLS.CommunicatieVersie")="ABX") New %J,R,DH,FileName,RetRef2,Dir,TranspNr Set %J=$$%J^vhRtn1() Kill ^HULP(%J) Do SplitAfzender(VervRef,%J) Set DH=$$OPEN^EWRECS() Do OPENEDI(VervRef,DH) Do VERVREF(%J,VervRef,DH) Do CLOSEEDI(VervRef,DH) Set R=^TRANSP("D",VervRef),TranspNr=$P(R,D) Set FileName=$$FILENAME(TranspNr) Do CLOSE^EWRECS(DH,1,1,"E",FileName_".EDI") Do:##class(TECH.Config.ConfigMgr).Instance().GetBoolean("TRANSPEA_MagVerwerken") .Set Dir=##class(TECH.Config.ConfigMgr).Instance().GetString("WMSExchange_RootDir")_^EWREC("E","DIRS") .Do FTP(Dir,FileName,VervRef) .Do SCANDIR^vhDEV(Dir,"*.EDI","RetRef2","X",60) .Do SCANDIR^vhDEV(Dir,"*.LOG","RetRef2","X",60) Kill ^HULP(%J) Quit ; SplitAfzender(VervRef,%J) New R,TranspNr,GroepNr,KLNr Kill ^HULP(%J) Set R=^TRANSP("D",VervRef),TranspNr=$P(R,D) Set GroepNr="" For Set GroepNr=$O(^TRANSP("D",VervRef,"D",GroepNr)) Quit:GroepNr="" Do . Set KLNr=$P(^TRANSP("D",VervRef,"D",GroepNr),D) . Set:'$D(^TRANSP("T",TranspNr,KLNr)) KLNr=0 . Set ^HULP(%J,KLNr,GroepNr)="" Quit ; FTP(Dir,FileName,VervRef) New R,Dev,Ok,TranspNr,EdiNaam,EdiAdres,EdiWachtW,Tekst,MailId,Txt1,Txt2,But1,But2,Result Set R=^TRANSP("D",VervRef),TranspNr=$P(R,D) Set R=^TRANSP("T",TranspNr),EdiNaam=$P(R,D,3),EdiAdres=$P(R,D,9),EdiWachtW=$P(R,D,10) Set Result=$$SendFile^FTP(Dir_"\"_FileName_".EDI","",FileName_".EDI",EdiAdres,EdiNaam,EdiWachtW) Set Ok='$L(Result) Do:'Ok .Set Tekst="Transport : "_VervRef_"~Bestandsnaam : "_FileName_"~"_$G(Result)_"~ªBªKFTP failed!!!ªbªk" .Set MailId=$$SYSTEM^vhMAIL("LE",TranspNr,FileName,"ICT",Tekst,"",1,1) For Do Quit:Ok If 'Ok Quit:R .Set Txt1=$S(Ok:"",1:"ªBNIET ")_"verzonden"_$S(Ok:"",1:"ªb") .Set Txt2=$S(Ok:"",1:"Gelieve ICT te verwittigen") .Set But1=$S(Ok:"Ok",1:"Annuleer"),But2=$S(Ok:"",1:"Ok") .Set R=$$^vhTXTPOP("TRANSP","FTPABX","",VervRef,Txt1,Txt2,But1,But2) Quit ; OPENEDI(VervRef,DH) New R,Rec,Aanmaak,IsTerugname Set R=^TRANSP("D",VervRef),Aanmaak=$P(R,D,12),IsTerugname=$P(R,D,5)="T" Set Rec=VervRef_D_Aanmaak_D_IsTerugname Do PUT(DH,"A01",Rec) Quit ; VERVREF(%J,VervRef,DH) New I,R,GroepNr,KLNr,Rec,Afzender,Naam,Toenaam,Straat,Nummer,Land,PostCode,Gemeente,Telefoon Set KLNr="" For Set KLNr=$O(^HULP(%J,KLNr)) Quit:KLNr="" Do .Kill Afzender,Naam,Toenaam,Straat,Nummer,Land,PostCode,Gemeente,Telefoon .Set R=$$Afzender(KLNr),Afzender=$LI(R),Naam=$LI(R,2),Toenaam=$LI(R,3),Straat=$LI(R,4),Nummer=$LI(R,5),Land=$LI(R,6),PostCode=$LI(R,7),Gemeente=$LI(R,8),Telefoon=$LI(R,9) .Set Rec=Afzender,$P(Rec,D,2)=Naam,$P(Rec,D,3)=Toenaam,$P(Rec,D,4)=Nummer,$P(Rec,D,5)=Straat,$P(Rec,D,6)=PostCode,$P(Rec,D,7)=Gemeente,$P(Rec,D,8)=Land,$P(Rec,D,13)=Telefoon .Do PUT(DH,"A02",Rec) .Set GroepNr="" .For Set GroepNr=$O(^HULP(%J,KLNr,GroepNr)) Quit:GroepNr="" Do GROEP(VervRef,GroepNr,DH) Quit ; GROEP(VervRef,GroepNr,DH) New I,R,KLNr,Rec,ColTyp,Aantal,ExtParm,ColNum,AbxCode,Collie,BarCode,Count,VolgNr,Rembours,Gewicht,Munt,Product,GroepType,IsTerugname,Lengte New lbKenAnk,KenAnk,ObjKenAnk Set R=^TRANSP("D",VervRef),IsTerugname=$P(R,D,5)="T" Set R=^TRANSP("D",VervRef,"D",GroepNr),KLNr=$P(R,D),Rembours=$P(R,D,2),Gewicht=$P(R,D,3) Set:'Gewicht Gewicht=.1 Set GroepType=$P(R,D,6) Set:GroepType="" GroepType="K" If GroepType="K" Do .Set Munt=$P(^KKL(^KK1(KLNr),0),D,11) .Set:Munt="MTL" Munt=$P(^KUL(KLNr,"F",GroepNr,1),D,18) Else If GroepType="L" Set Munt=$P(^KLE(^KL1(KLNr),0),D,11) Else Set Munt="EUR" Set Munt=$$MUNT^vhRtn1(Munt,1) Set Rec=VervRef_D_GroepNr_D_IsTerugname Do PUT(DH,"A03",Rec) Set BarCode="" For Set BarCode=$O(^TRANSP("D",VervRef,"D",GroepNr,"C",BarCode)) Quit:BarCode="" Set BarCode(BarCode)="" Set Product=$$PRODUCT^TRANSPL(VervRef,GroepNr) Set ColTyp="" For Set ColTyp=$O(^TRANSP("D",VervRef,"D",GroepNr,"Q",ColTyp)) Quit:ColTyp="" Do .Set R=^TRANSP("D",VervRef,"D",GroepNr,"Q",ColTyp),Aantal=$P(R,D),ExtParm=$P(R,D,2) .Quit:'Aantal .Set Aantal(ColTyp)=Aantal .Set R=^RES("EWBON","PI","COLLIETYPE","D",ColTyp),ColNum=$P(R,"`"),AbxCode=$P(R,"`",4) .Set Collie(ColNum)=ColTyp_D_Aantal_D_ExtParm_D_AbxCode Set (ColNum,BarCode)="",Count=0 For Set ColNum=$O(Collie(ColNum)) Quit:ColNum="" Do .Set R=Collie(ColNum),ColTyp=$P(R,D),Aantal=$P(R,D,2),ExtParm=$P(R,D,3),AbxCode=$P(R,D,4) .For Aantal=1:1:Aantal Set BarCode=$O(BarCode(BarCode)),Count=Count+1,BarCode(BarCode)=Count_D_R Set (BarCode,ExtParm,Lengte)="" For Set BarCode=$O(BarCode(BarCode)) Quit:BarCode="" Do Quit:$L(ExtParm) .Set R=BarCode(BarCode),ColTyp=$P(R,D,2) .Quit:ColTyp'="L" .Set ExtParm=$P(R,D,4) .For I=1:1:$L(ExtParm,"+") Set:Lengte<$P(ExtParm,"+",I) Lengte=$P(ExtParm,"+",I) Set Rec=GroepNr_D_Product_D_($G(Aantal("E"))+$G(Aantal("P")))_D_($G(Aantal("C"))+$G(Aantal("L")))_D_Gewicht_D_Rembours_D_Munt_D_IsTerugname_D_(Lengte*100) Do PUT(DH,"A05",Rec) If $L(ExtParm) For I=1:1:$L(ExtParm,"+") Do PUT(DH,"A06","Langgoed: rails "_$P(ExtParm,"+",I)_" meter") Set lbKenAnk=$S(GroepType="K":##class(BL.Flow.Cons.TransportData).GetKennisAnker(KLNr),1:"") Do:$LL(lbKenAnk) .For Kill KenAnk Set KenAnk=$LI(lbKenAnk) Quit:KenAnk="" Do Quit:'$LL(lbKenAnk) ..Set lbKenAnk=$LI(lbKenAnk,2,99) ..Set ObjKenAnk=##class(Derde.Kennis.Kennis).%OpenId(KenAnk) ..Quit:'$IsObject(ObjKenAnk) ..Set KenAnk(1)=$TR(ObjKenAnk.Msg,$C(13,10)," ") ..Quit:KenAnk(1)="" ..Do GETWRAP^vhBIGEDIT("KenAnk",64,.KenAnk,"G","~","") ..For I=1:1:KenAnk Do PUT(DH,"A06",$P(KenAnk(I),"`",5)) Do:'IsTerugname .Set BarCode="" .For Set BarCode=$O(BarCode(BarCode)) Quit:BarCode="" Do ..Set R=BarCode(BarCode),VolgNr=$P(R,D),AbxCode=$P(R,D,5) ..Set Rec=VolgNr_D_AbxCode_D_BarCode ..Do PUT(DH,"A07",Rec) Quit ; CLOSEEDI(VervRef,DH) New R,Rec,Aanmaak Set R=^TRANSP("D",VervRef),Aanmaak=$P(R,D,12) Set Rec=VervRef_D_DH_D_Aanmaak Do PUT(DH,"A11",Rec) Quit ; ; Ophalen van de afzender via het klantnummer Afzender(KLNr) New I,R,TranspNr,Afzender,LevAdr,Naam,Toenaam,Straat,Nummer,Land,PostCode,Gemeente,Telefoon,Bedrijf Set KLNr=+$G(KLNr),TranspNr=$$$LevGLS Set Afzender=$P($G(^TRANSP("T",TranspNr,KLNr)),"\",2) Do:(($$IsSchachermayerAU(KLNr))||($$IsSchachermayerNL(KLNr))) .Set LevAdr=$O(^KKL(^KK1(KLNr),"L")) Set:$E(LevAdr)="L" LevAdr=^KKL(^KK1(KLNr),LevAdr) .Set R=^KKL(^KK1(KLNr),0) .For I=2,5,6,7,8,13 Set:$P(LevAdr,"\",I)="" $P(LevAdr,"\",I)=$P(R,"\",I) .Set Naam=$P(LevAdr,"\",2),Straat=$P(LevAdr,"\",5),PostCode=##class(DOM.common.impl.AdresUtils).MaakPostcodeGlsVriendelijk($P(LevAdr,"\",6)),Gemeente=$P(LevAdr,"\",7),Land=$P(LevAdr,"\",8),Telefoon=$P(LevAdr,"\",13) .Set Nummer=$P(Straat," ",$L(Straat," ")),Straat=$P(Straat," ",1,$L(Straat," ")-1),Land=$$LAND^vhRtn1(Land) Do:(KLNr=##class(DOM.PARTIJ.impl.LegacyPartijAPI).%New().GeefKlantNummerVoorPartijID(##class(DOM.VKP.enu.Klant).HaefeleNederland())) .Set Naam="HAEFELE NEDERLAND",Straat="POSTBUS",Nummer="1085",PostCode=##class(DOM.common.impl.AdresUtils).MaakPostcodeGlsVriendelijk("NL-7333-NZ"),Gemeente="APELDOORN",Land=$$LAND^vhRtn1(1147),Telefoon="0031-55-541 90 00" Do:($$GebruikDuPontAdres(KLNr)) .Set Naam="DU PONT BVBA",Straat="BOUWELVEN",Nummer="16",PostCode=##class(DOM.common.impl.AdresUtils).MaakPostcodeGlsVriendelijk("BE 2280"),Gemeente="GROBBENDONK",Land=$$LAND^vhRtn1(1019),Telefoon="+32 3 464 00 91" Set:Afzender="" Afzender=$P(^TRANSP("T",TranspNr),"\",2) Set Bedrijf = ##class(Res.Bedrijf).%New() Set Naam=$G(Naam,Bedrijf.Naam) Set Toenaam=$G(Toenaam,"HOECKE") Set Straat=$G(Straat,"EUROPARK - NOORD") Set Nummer=$G(Nummer,9) Set Land=$G(Land,"BE") Set PostCode=$G(PostCode,9100) Set Gemeente=$G(Gemeente,"SINT-NIKLAAS") Set Telefoon=$G(Telefoon,"03/760.19.00") Quit $LB(Afzender,Naam,Toenaam,Straat,Nummer,Land,PostCode,Gemeente,Telefoon) ; ; Header A01(C,Rec) New VervRef,Aanmaak,IsTerugname Set VervRef=$P(Rec,D),Aanmaak=$P(Rec,D,2),IsTerugname=$P(Rec,D,3) Set C("HEADER")="HIA" Set C("IDENTIFIER")="AANMELDING" Set C("VERSIENR")="REL 1.0" Set C("AANMAAKDATUM")=Aanmaak Set C("PROCESS")=0 Set C("BERICHTREF")="IAA"_$TR($J(VervRef,5)," ",0)_".ABX" Set C("TEST")="P" ;-> Set C("ZENDZEND")="" ;-> Set C("ONTVZEND")="" ;-> Set C("ZENDONTV")="" ;-> Set C("ONTVONTV")="" ;-> Set C("TEXT")="" Quit ; ; Afzender A02(C,Rec) Set Afzender=$P(Rec,D),Naam=$P(Rec,D,2),Toenaam=$P(Rec,D,3),Nummer=$P(Rec,D,4),Straat=$P(Rec,D,5),PostCode=$P(Rec,D,6),Gemeente=$P(Rec,D,7),Land=$P(Rec,D,8),Telefoon=$P(Rec,D,13) Set C("HEADER")="SHI" Set C("KLNR")=Afzender Set C("NAAM")=Naam Set C("EDINAAM")=Toenaam ;-> Set C("ADRESZONE")="" Set C("STRAAT")=Straat Set C("HUISNR")=Nummer ;-> Set C("BUSNR")="" Set C("LANDCODE")=Land ;-> Set C("LANDNAAM")="" Set C("POSTCODE")=PostCode Set C("GEMEENTE")=Gemeente ;-> Set C("KONTAKT")="" Set C("TELEFOON")=Telefoon ;-> Set C("FAXLAND")="" ;-> Set C("FAXNET")="" ;-> Set C("FAXNR")="" ;-> Set C("BTWNR")="" Quit ; ; Bestemmeling A03(C,Rec) New R,GroepNr,KlNaam,KlStraat,KlLand,KlPost,KlGem,KlTel,KlAdresZone,IsTerugname Set VervRef=$P(Rec,D),GroepNr=$P(Rec,D,2),IsTerugname=$P(Rec,D,3) Set R=$$LEVADR^TRANSPL(VervRef,GroepNr) Set KlNaam=$P(R,D,2),KlStraat=$P(R,D,5),KlPost=$P(R,D,6),KlGem=$P(R,D,7),KlLand=$$LAND^vhRtn1($P(R,D,8)),KlTel=$P(R,D,13),KlAdresZone=$P(R,D,23) Set:KlLand'="BE" KlPost=$TR($P(KlPost,"-",2,3),"-","") Set C("HEADER")="CON" Set:IsTerugname C("KLNR")=$P(^TRANSP("T",5036),D,2) Set C("NAAM")=KlNaam Set C("ADRESZONE")=KlAdresZone Set C("STRAAT")=KlStraat Set C("HUISNR")="" ;->Set C("BUSNR")="" Set C("LANDCODE")=KlLand ;->Set C("LANDNAAM")="" Set C("POSTCODE")=KlPost Set C("GEMEENTE")=KlGem ;->Set C("KONTAKT")="" Set C("TELEFOON")=KlTel ;->Set C("FAXLAND")="" ;->Set C("FAXNET")="" ;->Set C("FAXNR")="" ;->Set C("BTWNR")="" ;->Set C("VRIJBTW")="" Quit ; ; Kosten A04(C,Rec) Set C("HEADER")="ZKI" Set C("KODEKOST")="" Set C("KODEBETALER")="" Set C("HOEVEELHEID")="" Set C("EENHEID")="" Set C("PRIJS")="" Set C("DEVIEZEN")="" Set C("MUNT")="" Set C("TEXT")="" Set C("BTW")="" Quit ; ; Zending A05(C,Rec) New GroepNr,Product,AantPal,AantCol,Gewicht,Rembours,Munt,IsTerugname,Lengte Set GroepNr=$P(Rec,D),Product=$P(Rec,D,2),AantPal=$P(Rec,D,3),AantCol=$P(Rec,D,4) Set Gewicht=$P(Rec,D,5),Rembours=$P(Rec,D,6),Munt=$P(Rec,D,7),IsTerugname=$P(Rec,D,8),Lengte=$P(Rec,D,9) Set C("HEADER")="ZIN" Set C("PRODUCT")=Product Set C("AFZENDER")=GroepNr ;-> Set C("BESTEMMELING")="" ;-> Set C("PARTNER")="" Set C("PALETTEN")=AantPal Set C("COLLI")=AantCol Set C("GEWICHT")=Gewicht Set C("LENGTE")=Lengte ;-> Set C("BREEDTE")="" ;-> Set C("HOOGTE")="" ;-> Set C("VOLUME")="" Set C("REMBOURS")=Rembours Set C("MUNT")=Munt ;-> Set C("LEVBEWIJS")="" ;-> Set C("LEVDATUM")="" ;-> Set C("INSTRUCTIE")="" Set C("AANREKENEN")=$S(IsTerugname:"N",1:"F") ;-> Set C("VERZBEDR")="" ;-> Set C("MUNTVERZBEDR")="" ;-> Set C("BETAALWIJZE")="" ;-> Set C("BIJKOSTEN")="" ;-> Set C("CONTRACT")="" Set C("ZENDING")=$S(IsTerugname:"A",1:"N") ;-> Set C("VERDWAALD")="" ;-> Set C("LAADMETERS")="" ;-> Set C("FREE")="" Quit ; ; Instructies A06(C,Rec) Set C("HEADER")="INS" Set C("INSTRUCTIE")=Rec Quit ; ; Eenheid A07(C,Rec) New VolgNr,AbxCode,BarCode Set VolgNr=$P(Rec,D),AbxCode=$P(Rec,D,2),BarCode=$P(Rec,D,3) Set C("HEADER")="COL" Set C("VOLGNR")=VolgNr Set C("QUALIFIER")=AbxCode ;-> Set C("GEWICHT")="" ;-> Set C("LENGTE")="" ;-> Set C("BREEDTE")="" ;-> Set C("HOOGTE")="" ;-> Set C("VOLUME")="" Set C("BARCODEABX")=BarCode ;-> Set C("BARCODEKLANT")="" ;-> Set C("EENHEDEN")="" ;-> Set C("LAADMETERS")="" Set C("FREE")="" Quit ; ; Product omschrijving A08(C,Rec) Set C("HEADER")="GDS" Set C("VOLGNR")="" Set C("PRODKODE")="" Set C("AANTPROD")="" Quit ; ; ADR omschrijving A09(C,Rec) Set C("HEADER")="ADR" Set C("VOLGNR")="" Set C("PRODKODE")="" Set C("ADRKODE")="" Set C("ADRNAAM")="" Set C("ADRGEWICHT")="" Set C("UNOKODE")="" Set C("GEVAARKODE")="" Quit ; ; Omschrijving goederen A10(C,Rec) Set C("HEADER")="DES" Set C("OMSCHR")="" Quit ; ; Trailer A11(C,Rec) New VervRef,DH,Aanmaak Set VervRef=$P(Rec,D),DH=$P(Rec,D,2),Aanmaak=$P(Rec,D,3) Set C("HEADER")="TRL" ;-> Set C("ZENDZEND")="" Set C("AANMAAKDATUM")=Aanmaak Set C("AANMAAKTIJD")=Aanmaak Set C("BERICHTREF")="IAA"_$TR($J(VervRef,5)," ",0)_".ABX" Set C("RECORDS")=$O(^EWREC("DH",DH,""),-1)+1 Quit ; PUT(DH,RecTyp,Rec) New C Do INITC(RecTyp,.C),@(RecTyp_"(.C,Rec)") Do PUT^EWRECS(DH,"C") Quit ; INITC(Kode,C) New I,R Set C=Kode For I=1:1 Quit:'$D(^EWREC("D",Kode,I)) Set R=^EWREC("D",Kode,I),C($P(R,D))="" Quit ; FILENAME(TranspNr) New R,FileName,FileNum Set R=^TRANSP("T",TranspNr),FileNum=$P(R,D,8) Set:+FileNum'=+$H FileNum=+$H Set $P(FileNum,"#",2)=$P(FileNum,"#",2)+1,$P(R,D,8)=FileNum,^TRANSP("T",TranspNr)=R Set FileName="ABX"_$E($$EXTDATE^vhLib.DataTypes($P(FileNum,"#"),"DKN"),1,4)_$C(64+$P(FileNum,"#",2)) Quit FileName ; IsSchachermayerAU(KlantNummer) Quit (KlantNummer=##class(DOM.PARTIJ.impl.LegacyPartijAPI).%New().GeefKlantNummerVoorPartijID(##class(DOM.VKP.enu.Klant).SchachermayerOostenrijk())) ; IsSchachermayerNL(KlantNummer) Quit (KlantNummer=##class(DOM.PARTIJ.impl.LegacyPartijAPI).%New().GeefKlantNummerVoorPartijID(##class(DOM.VKP.enu.Klant).SchachermayerNederland())) ; GebruikDuPontAdres(KlantNummer) Quit:($$$Not(##class(DOM.common.impl.ProjectSettingsAPI).%New().IsActiefDuPontNaarEindklant())) $$$False Quit (KlantNummer=##class(DOM.PARTIJ.impl.LegacyPartijAPI).%New().GeefKlantNummerVoorPartijID(##class(DOM.VKP.enu.Klant).DuPont())) ;