#Include BL.Derde.Kennis.AutoRes ATKEDI ;ATK verwerking EDI (Import) [ 11/27/2003 11:05 AM ] ;Electronic Data Interchange (Import) Do VERWERK Quit ; CHKFILE(KLNr) New R,Check Set Check=''$D(^MBLOG("EDI",KLNr)) Set:'Check Check=''$L($$GETFILES(KLNr)) Quit Check ; GETFILES(KLNr) New R,Dir,File,Files,Dev,Rec Set Dir=$$DIRUSER^vhDEV() ;Set Dir="F:\shared\P V" Do SCANDIR^vhDEV(Dir,"*.ORD",$NA(Files),"","") Set (File,Files)="" For Set File=$O(Files(File)) Quit:File="" Do .Set FileNm=$$READ^vhDEV(Dir,File,"D`CHKCUST^"_$ZN,"M") Set $E(Files)="" Quit Files ; CHKCUST(Rec) Do:$E(Rec,1,2)="OH" .Quit:$TR($E(Rec,3,7)," ","")'=KLNr .Set Files=Files_D_File_"`"_$TR(Files(File),D,"`")_"`"_$TR($E(Rec,8,17)," ","") Quit ; SELFILE(KLNr) New I,R,S,X,File,Files,Y,ImpDate,EDIORDNr,ZR,TxtLoc,ButLoc,User,Aktie,EdiTime,LogRef Set Files=$$GETFILES(KLNr),File="" Do:$L(Files) .For Y=1:1:$L(Files,D) Do ..Set EDIORDNr=$P($P(Files,D,Y),"`",5) ..Set Y(Y)=$P($P(Files,D,Y),"`")_"`"_$P($P(Files,D,Y),"`",3) ..Set R=$G(^ATK("EDI","L",KLNr,"I",EDIORDNr)) ..Do:R="" ...Set EDIORDNr=EDIORDNr_"." ...Quit:$E($O(^ATK("EDI","L",KLNr,"I",EDIORDNr)),1,$L(EDIORDNr))'=EDIORDNr ...Set R=^ATK("EDI","L",KLNr,"I",$O(^ATK("EDI","L",KLNr,"I",EDIORDNr))) ..For I=1:1 Set ImpDate=$P($P(R,D,I),"#",3) Quit:"I"[$P($P(R,D,I),"#",2) ..Do:ImpDate ...Set $P(Y(Y),"`",2)=$P(Y(Y),"`",2)_" (reeds geimporteerd op "_$$EXTDATE^vhLib.DataTypes(ImpDate)_")" ...Set $P(Y(Y),"`",3)=$ZR .Set File=$$WILD^vhPOPUP("C;C","OKR2-","Selecteer bestand",.Y),ZR=$P(File,"`",3),File=$P(File,"`") .Do:$L(ZR) ..Set R=@ZR,S=0 ..Set TxtLoc(1)="ŞBBestand "_File_" is reeds verwerkt !!!Şb" ..For I=1:1:$L(R,D) Do ...Set X=$P(R,D,I),User=$P(X,"#"),Aktie=$P(X,"#",2),EdiTime=$P(X,"#",3),LogRef=$P(X,"#",4) ...Set:Aktie="I" S=S+1,TxtLoc(I+S)="&S" ...Set X=$S(Aktie="I":"Import",Aktie="V":"Verwijderd",Aktie="O":"Order",Aktie="D":"*DO*",Aktie="B":"Bevestigd",1:"") ...Quit:X="" ...Set:$L(LogRef) LogRef="("_$S(Aktie="O"!(Aktie="D"):$$EXTNUM^vhLib.DataTypes(LogRef,0,".",0),Aktie="B":"NR"_LogRef_".BEV",1:LogRef)_")" ...Set X=X_$J("",10-$L(X))_" : "_$$USERNAME^vhUSER(User),X=$E(X,1,25),X=X_$J("",27-$L(X)) ...Set X=X_$$FMTDT^vhLib.DataTypes(EdiTime) Set:$L(LogRef) X=X_" "_LogRef ...Set TxtLoc(I+S+1)=X ..Set S=S+1,TxtLoc(I+S+1)="&S",TxtLoc(I+S+2)="Wenst u het bestand "_File_" nogmaals te verwerken?" ..Set TxtLoc=I+S+2 ..Set ButLoc(1)="Verwerken&1",ButLoc(2)="Annuleer&*",ButLoc=2 ..Set R=$$WILD^vhTXTPOP("","","TxtLoc","ButLoc",2) Set:'R File="" Quit File ; EXTERN(KLNr) New (KLNr) Do .New KLNr .Do INIT^vhTERMINA .Set io=$$IO^cQ5 Do STORE^vhTERMINA() Write @F11,@F1 Do VERWERK(KLNr) Set:$D(^MBLOG("D",$$IO^cQ5,KLNr)) R=$$RAADPL^KLANT(KLNr,"O") Do REFRESH^vhTERMINA() Quit ; VERWERK(KLNr) New R,Dir,File,FileKLNr,VerwKl,FileKl,Order,Error,BINr,EDIORDNr,Command,RetLoc,ORDNrs,PRNr,Document Do STORE^vhTERMINA() Do INIT Set Dir=$$DIRUSER^vhDEV Set File=$$SELFILE(KLNr) ; Select Do:$L(File) .Do CONVERT(Dir,File,.Order) .Do:$D(Order) ..Set BINr=$P(Order,D),EDIORDNr=$P(Order(1),D,2) ..Do SAVE(.Order) .Set File=$$DELFILE^vhDEV(Dir,File) ; Verwijder file .Set R="" .For Set R=$O(^MBLOG("EDI",KLNr,BINr,R)) Quit:R="" Do LOG(KLNr,R,"I") For Set R=$$SELECT(KLNr,$G(BINr),$G(EDIORDNr),$G(Command)) Quit:'R Do .Do STORE^vhTERMINA() .Set BINr=$P(R,D),EDIORDNr=$P(R,D,2) .Do FETCH(KLNr,BINr,EDIORDNr,.Order) .Set FileKLNr=$P($G(Order(1)),D) .If FileKLNr=KLNr Do ..If $D(Order) Do ...Set Command=$$DISPLAY(.Order) ...Quit:Command'="I" ...If $D(Order) Do ....Set Document="O" ....; Enkel import order toegelaten in afwachting van de juiste edi-beschrijving ....If Document="O" Do ; Edi-order .....Kill ^MBLOG("EDI",KLNr,BINr,EDIORDNr) .....Merge ^MBLOG("EDI",KLNr,BINr,EDIORDNr)=Order(1) .....Kill RetLoc .....Do BUILDOBJ^FLOWORD(KLNr,,,,EDIORDNr,,,"RetLoc") .....Set (ORDNrs,PRNr)="" .....For Set PRNr=$O(RetLoc(PRNr)) Quit:'PRNr Set R=$P(RetLoc(PRNr),D,2) Set:ORDNrs'[R ORDNrs=ORDNrs_";"_R .....Set $E(ORDNrs)="" .....Do LOG(KLNr,EDIORDNr,Document,,ORDNrs) ....If Document="D" Do ; Edi-DO (toelevering) .....Kill ^MBLOG("EDI",KLNr,BINr,EDIORDNr) .....Merge ^MBLOG("EDI",KLNr,BINr,EDIORDNr)=Order(1) .....Kill RetLoc .....Do BUILDOBJ^FLOWTOE(,,,EDIORDNr,"RetLoc") .....Set (TOENrs,PRNr)="" .....For Set PRNr=$O(RetLoc(PRNr)) Quit:'PRNr Set R=$P(RetLoc(PRNr),D,2) Set:TOENrs'[R TOENrs=TOENrs_";"_R .....Set $E(TOENrs)="" .....Do LOG(KLNr,EDIORDNr,Document,,TOENrs) ...Else Do LOG(KLNr,EDIORDNr,"V") ...Kill ^MBLOG("EDI",KLNr,BINr,EDIORDNr) ...Kill:$O(^MBLOG("EDI",KLNr,BINr,""))="" ^MBLOG("EDI",KLNr,BINr) .Else Do ..Set VerwKl=$P(^KKL(^KK1(KLNr),0),D,2),FileKl="" ..Set FileKl=$S(FileKLNr="":"Onbekend",'$D(^KK1(FileKLNr)):"Onbekend",1:$P(^KKL(^KK1(FileKLNr),0),D,2)) ..Set R=$$^vhTXTPOP("ATKEDI","KLNR","",File,FileKl,VerwKl) .Do REFRESH^vhTERMINA() Do REFRESH^vhTERMINA() Quit INIT Kill Order Set LNr=0,ONr=0 Quit SAVE(Order) New R,KLNr,EDIORDNr,BIRec,BINr Set BIRec=Order,BINr=$P(BIRec,D),Order="" For Set Order=$O(Order(Order)) Quit:Order="" Do .Quit:$O(Order(Order,""))="" .Set R=Order(Order),KLNr=$P(R,D),EDIORDNr=$P(R,D,2) .Set ^MBLOG("EDI",KLNr,BINr)=BIRec .Kill ^MBLOG("EDI",KLNr,BINr,EDIORDNr) .Merge ^MBLOG("EDI",KLNr,BINr,EDIORDNr)=Order(Order) Set Order=BIRec Quit SELECT(KLNr,BINr,EDIORDNr,Command) New R,BIRec,Count,Order,Select,Date,Orgalux,Titel,zb,User,Single Set Select=$G(BINr)_D_$G(EDIORDNr),BINr="",Count=0,Titel="23\8\5\3" ;Titel="23\12\9\3" For Set BINr=$O(^MBLOG("EDI",KLNr,BINr)) Quit:BINr="" Do .Set Single=$O(^MBLOG("EDI",KLNr,BINr,""))=BINr,EDIORDNr="" .For Set EDIORDNr=$O(^MBLOG("EDI",KLNr,BINr,EDIORDNr)) Quit:EDIORDNr="" Do ..Set R=^MBLOG("EDI",KLNr,BINr,EDIORDNr),Date=$$EXTDATE^vhLib.DataTypes($P(R,D,3),"DK4") ..Set Orgalux=$S($P(R,D,26):$P(R,D,25),1:""),User=$$USERNAME^vhUSER($$DEVUSER^vhUSER($P(R,D,27)),-1) ..Set Count=Count+1,Order(Count)=Count_D_D_BINr_D_EDIORDNr_D_Date_D_Orgalux_D_User ..If BINr=$P(Select,D),EDIORDNr=$P(Select,D,2) Set Select=Count ..Set:$L(BINr)>$P(Titel,D) $P(Titel,D)=$L(BINr) ..Set:$L(Date)+2>$P(Titel,D,2) $P(Titel,D,2)=$L(Date)+2 ..Set:$L(EDIORDNr)+$S($L(Orgalux):10,1:0)+2>$P(Titel,D,3) $P(Titel,D,3)=$L(EDIORDNr)+$S($L(Orgalux):10,1:0)+2 Set Order="" If Count=1,Single Set:Command'="A" Order=$P(Order(1),D,3,4) Else If Count Do .For Count=1:1:Count Do ..Set R=Order(Count) ..Set $P(R,D,2)=$P(R,D,3)_$J("",$P(Titel,D)-$L($P(R,D,3))+1) ..Set $P(R,D,2)=$P(R,D,2)_"| "_$P(R,D,5)_$J("",$P(Titel,D,2)-$L($P(R,D,5))-1) ..Set $P(R,D,2)=$P(R,D,2)_"| "_$P(R,D,4)_$S($L($P(R,D,6)):" (Orgalux)",1:"") ..Set $P(R,D,2)=$P(R,D,2)_$J("",$P(Titel,D,3)-$L($P(R,D,4)_$S($L($P(R,D,6)):" (Orgalux)",1:""))-1) ..Set $P(R,D,2)=$P(R,D,2)_"| "_$P(R,D,7) ..Set Order(Count)=R .Set $P(Titel,D)="Te verwerken berichten"_$J("",$P(Titel,D)-22) .Set $P(Titel,D,2)=" Datum"_$J("",$P(Titel,D,2)-6) .Set $P(Titel,D,3)=" Order"_$J("",$P(Titel,D,3)-6) .Set $P(Titel,D,4)=" Gbr"_$J("",$P(Titel,D,4)-6) .Set Titel="ŞU"_$TR(Titel,D,"|")_"Şu" .Set Order=$$WILD^vhPOPUP("C;C","O1-",Titel,.Order,Select) .If zb="CANC" Set Order="" .Else Set Order=$P(Order(Order),D,3,4) Quit Order FETCH(KLNr,BINr,EDIORDNr,Order) Kill Order Set Order=^MBLOG("EDI",KLNr,BINr) Merge Order(1)=^MBLOG("EDI",KLNr,BINr,EDIORDNr) Quit DISPLAY(Order) ; tonen van het EDI-order en eventueel PRNr aanpassen ;Order via .Local New R,LD,List,Next,Count,OrdText,Comment If $L($P(Order,D,3)) Do .Set OrdText(1)=$P(Order,D,3) .Do GETWRAP^vhBIGEDIT("OrdText",40,.OrdText,"G","~","") .For OrdText=1:1:OrdText Set OrdText(OrdText)=$P(OrdText(OrdText),"`",5) .Set OrdText="OrdText" Set Count=0 For Next=1:1 Quit:'$D(Order(1,Next)) Do .Set R=Order(1,Next) .If $P(R,D,3,99)="" Do ..Set Comment(1)=$P(R,D,2),Comment="Comment" ..Do GETWRAP^vhBIGEDIT("Comment",40,.Comment,"G","~","") ..For Comment=1:1:Comment Set Count=Count+1,List(Count)="T\"_Next_D_$P(Comment(Comment),"`",5) .Else Do ..Set Count=Count+1,List(Count)="L\"_Next_D_$P(R,D,2,99) ..Set Count=Count+1,List(Count)="l\"_Next_D_$P(R,D,2,99) Do INIT^vhLIST("ATKEDI","DISPLAY",.LD) Do WRITE^vhLIST(.LD) Do:$D(OrdText) .Set R=$$^vhTXTPOP("ATKEDI","ORDTEXT","") Set:$$PRODONB(.Order) R=$$^vhTXTPOP("ATKEDI","PRODONB","",$P(Order(1),D,2)) For Do Quit:Command="A" Quit:'$$PRODONB(.Order) Quit:$$^vhTXTPOP("ATKEDI","PRODONBOK","",$P(Order(1),D,2)) .For Set Command=$$SCROLL^vhLIST(.LD) Quit:Command="A"!(Command="I") Do Quit:Command="I" ..If Command="V" Do LDELETE(1) ..If Command="E" Do EDELETE ..If Command="P" Do NEWPROD Quit Command DisplayLA(Order) ; Tonen van het leveringsadres in het display New KLNr,LevAdr Set KLNr=$P($G(Order(1)),D),LevAdr=$P($G(Order(1)),D,6) If KLNr,$L(LevAdr) Do . Set R=$G(^KKL(^KK1(KLNr),"L"_$J(LevAdr,3))) . Set:R="" R=D_$P(Order(1),D,6,7)_"\\"_$P(Order(1),D,8,11) . Set LevAdr=$P(R,D) Set:$L(LevAdr) LevAdr=LevAdr_", " . Set LevAdr=LevAdr_$P(R,D,2) Set:$L(LevAdr) LevAdr=LevAdr_", " . Set LevAdr=LevAdr_$P(R,D,5) Set:$L(LevAdr) LevAdr=LevAdr_", " . Set LevAdr=LevAdr_$P(R,D,7) Quit $E(LevAdr,1,78) LDELETE(Bevestig) New R,OrdLink,PRNr,KortTxt,EDIORDNr Set R=$G(List(LD("SELECT"))) If $P(R,D)="L" Do .Set PRNr=$P($P(R,D,3),"#") .If PRNr,$D(^KPR(PRNr)) Set KortTxt=$P(^KPR(PRNr,0),D) .Else Set KortTxt="Onbekend product" .Set EDIORDNr=$P(Order(1),D,2) .If $G(Bevestig),'$$^vhTXTPOP("ATKEDI","LDELETE","",KortTxt,EDIORDNr) Quit .Set OrdLink=$P(R,D,2) .Kill Order(1,OrdLink) Kill:$O(Order(1,""))="" Order(1) Kill:$O(Order(""))="" Order .Do DELETE^vhLISTE(.LD),DELETE^vhLISTE(.LD) Quit EDELETE New EDIORDNr If $D(Order) Do .Set EDIORDNr=$P(Order(1),D,2) .Do:$$^vhTXTPOP("ATKEDI","EDELETE","",EDIORDNr) ..Do MOVE^vhLIST(.LD,"HO","") ..For Quit:'$D(Order) Do LDELETE() ..Set Command="I" Else Set Command="I" Quit NEWPROD New R,OrdLink,NewPRNr,OldPRNr,Aantal Set R=$G(List(LD("SELECT"))) If $P(R,D)="L" Do .Set OrdLink=$P(R,D,2),OldPRNr=$P(R,D,3),Aantal=$P(R,D,7) .If 'OldPRNr,'Aantal Quit .Do STORE^vhTERMINA() .Set NewPRNr=$$SELECT^PRODUKT6(,,,,,,,,,1) .Do REFRESH^vhTERMINA() .Quit:'NewPRNr .Set R=List(LD("SELECT")),$P(R,D,3)=NewPRNr,List(LD("SELECT"))=R .Set R=List(LD("SELECT")+1),$P(R,D,3)=NewPRNr,List(LD("SELECT")+1)=R .Set R=Order(1,OrdLink),$P(R,D,2)=NewPRNr,Order(1,OrdLink)=R .Do WRITE^vhLIST(.LD) Quit PRODONB(Order) New R,Next,ProdOnb Set (Next,ProdOnb)="" For Set Next=$O(Order(1,Next)) Quit:Next="" Do Quit:ProdOnb .Set R=Order(1,Next) .If $P(R,D,6),'$P(R,D,2) Set ProdOnb=1 Quit ProdOnb SPLITRIT(Order) New R,Rec,Nr,ONr,LNr,RNr,PRNr,IsOrgal,Quit,User,IsTBXOrAventos Set (ONr,IsTBXOrAventos)=0,User=$G(io,$$IO^cQ5) For Quit:$O(Order(0,""))="" Do .If ONr,'IsTBXOrAventos Do ..If ONr=1 Set $P(Order(0),D,2)=$P(Order(0),D,2)_".AA",$P(Order(ONr),D,2)=$P(Order(ONr),D,2)_".AA" ..Set R=$P(Order(0),D,2),$P(R,".",$L(R,"."))=$$ALFAKEY^vhRtn1(27+ONr,"A") ..Set $P(Order(0),D,2)=R .Set:'IsTBXOrAventos ONr=ONr+1,LNr=0 .Set Nr="",IsOrgal=0,Order(ONr)=Order(0) .For Set Nr=$O(Order(0,Nr)) Quit:Nr="" Do Quit:Nr="" ..Set Rec=Order(0,Nr),PRNr=$P($P(Rec,D,2),"#") ..If PRNr,'IsOrgal Set IsOrgal=$$ISORGAL^PRODUKT2(PRNr) ..Set LNr=LNr+1,Order(ONr,LNr)=Rec ..Set RNr=$O(Order(0,Nr,"")) ..Set:$L(RNr) IsTBXOrAventos=$P(Order(0,Nr,RNr),D,3) ..Kill Order(0,Nr) ..Set $P(Order(ONr),D,25)=$S(IsTBXOrAventos:"",1:RNr),$P(Order(ONr),D,26)=IsOrgal,$P(Order(ONr),D,27)=User ..Quit:RNr="" ..For Set Nr=$O(Order(0,Nr)) Quit:Nr="" Do ...Quit:'$D(Order(0,Nr,RNr)) ...; Opzoeken en opnemen van alle bijhorende lijnen (zonder ritnr) ...For Set Nr=$O(Order(0,Nr),-1) Quit:Nr="" Quit:$O(Order(0,Nr,""))'="" ...For Set Nr=$O(Order(0,Nr)) Do Quit:Quit ....Set Rec=Order(0,Nr),PRNr=$P($P(Rec,D,2),"#") ....If PRNr,'IsOrgal Set IsOrgal=$$ISORGAL^PRODUKT2(PRNr) ....Set LNr=LNr+1,Order(ONr,LNr)=Rec ....Set $P(Order(ONr),D,25)=RNr,$P(Order(ONr),D,26)=IsOrgal,$P(Order(ONr),D,27)=User ....Set Quit=$D(Order(0,Nr,RNr)) ....Kill Order(0,Nr) Kill Order(0) Quit CONVERT(Dir,File,Order) ;Order via .Local New R,ONr,LNr,IsTBXOrAventos,Rec,olRec Do STORE^vhTERMINA() Write @F11,@F1 Set FileNm=$$READ^vhDEV(Dir,File,"D`CONVREC^"_$ZN) If $D(olRec) Set Rec=olRec Kill olRec Do CONVREC(Rec) Do SPLITRIT(.Order) If D_$$GETALG^DEFAULTS("ATKEDI","CONVERT","BEVESTIG")_D[(D_KLNr_D) Set $P(Order,D,2)="E" If $P(Order,D,2)'="E" Do .For ONr=1:1 Quit:'$D(Order(ONr)) Do ..For LNr=1:1 Quit:'$D(Order(ONr,LNr)) Do ...Set R=Order(ONr,LNr),$P(R,D)="",$P(R,D,2)=$P($P(R,D,2),"#"),Order(ONr,LNr)=R Else Do SPLITLNR(.Order) Do REFRESH^vhTERMINA() Quit CONVREC(Rec) New Kode Set Kode=$E(Rec,1,2) If Kode="OL" Do . Do:$D(olRec) CONVONE(olRec) . Set olRec=Rec Else If Kode="OT" Do . If "\l\L\p\P\"[(D_$E(Rec,39)_D) Do . . Set IsProject="\p\P\"[(D_$E(Rec,39)_D) . . Do:$D(olRec) CONVONE(olRec,IsProject) . . Do CONVONE(Rec) . . Kill olRec . Else Do . . Do:$D(olRec) CONVONE(olRec) . . Kill olRec . . Do CONVONE(Rec) Else Do . Do:$D(olRec) CONVONE(olRec) . Kill olRec . Do CONVONE(Rec) Quit CONVONE(Rec,IsProject) New R,Kode,C,PRNr,PakFact,blAventosBak Set blAventosBak=##class(BL.MB.UGLYPicking.Aventosbak.Aventosbak).Instantiate(),Kode=$E(Rec,1,2) Set Rec=$$TRANSREC(Rec,Kode) If Kode="BI" Do .If $D(Order) Do ..If $P(Order,D)=$P(Rec,D) Set Error="BI record meermaals voorgekomen" ..Else Do SAVE(.Order) Kill Order ; Verwerken Edi-bericht .Set Order=Rec Else If Kode="OH" Do .If $D(Order(0)) Do ..If Order(0)=Rec Set Error="OH record meermaals voorgekomen" ..Else Do SPLITRIT(.Order) ; Verwerken van een order .Set Order(0)=Rec,LNr=0 Else If Kode="OL" Do .If '$D(Order(0)) Set Error="Geen orderhoofding" .Set PRNr="" Set:$G(IsProject) PRNr=$$FINDPROD($P(Rec,D,3),$P($G(Order(0)),D),$P(Rec,D,4)_" P") .If PRNr Set $P(Rec,D,4)=$P(Rec,D,4)_" P" .Else Set PRNr=$$FINDPROD($P(Rec,D,3),$P($G(Order(0)),D),$P(Rec,D,4)) .Set IsTBXOrAventos="" .If PRNr Set IsTBXOrAventos=$$ISTBX^PRODUKT2($P(PRNr,"#")) Set:'IsTBXOrAventos IsTBXOrAventos=blAventosBak.IsAventos($P(PRNr,"#")) .For Do Quit:PRNr="" ..Set $P(Rec,D,2)=$P($P(PRNr,";"),"#",1,2),PakFact=$P($P(PRNr,";"),"#",2),PRNr=$P(PRNr,";",2,99) ..Set LNr=LNr+1 ..Set Order(0,LNr)=Rec ..Set:PakFact $P(Order(0,LNr),D,6)=$P(Order(0,LNr),D,6)*PakFact Else If Kode="OT" Do .If '$D(Order(0)) Set Error="Geen orderhoofding" .Set $P(Rec,D,3)=+$G(IsTBXOrAventos),Order(0,LNr,$S(IsTBXOrAventos:"TBX",1:$P(Rec,D,2)))=Rec .Set:$G(IsTBXOrAventos) $P(Order(0,LNr),D,11)=$P(Rec,D,2) Quit TRANSREC(Rec,Kode) New Ret,Pos,LNext,LRec,Len,Type,Piece Set Pos=3 Set Ret="" For LNext=1:1:$O(^ATK("EDI","I",Kode,""),-1) Do .Set LRec=^ATK("EDI","I",Kode,LNext) .Set Label=$P(LRec,D,1) .Set Len=$P(LRec,D,2) .Set Type=$P(LRec,D,3) .Set Piece=$P(LRec,D,4) .Set Value=$E(Rec,Pos,Pos+Len\1-1) .Set Pos=Pos+Len\1 .Quit:'Piece ; Filler, dummy .If Type="N" Set Value=$$ADDNUM(Value,$P(Len,".",2)) .Else If Type="D" Set Value=$$ADDDAT(Value) .Else Set Value=$$ADDALFA(Value) .Set $P(Ret,D,Piece)=Value Quit Ret ; Orgaluxreferentie invullen ORGREF(Order) New R,ONr,LNr,INr,RNr For ONr=1:1 Quit:'$D(Order(ONr)) Do .For LNr=1:1 Quit:'$D(Order(ONr,LNr)) Do ..Set RNr=$O(Order(ONr,LNr,"")) ..Quit:RNr="" ..Kill Order(ONr,LNr,RNr) ..Set R=Order(ONr) Set:$P(R,D,25)="" $P(R,D,25)=RNr,Order(ONr)=R Quit ; Klantorderlijnnummers splitsen SPLITLNR(Order) New R,ONr,LNr,UNr For ONr=1:1 Quit:'$D(Order(ONr)) Do .For LNr=1:1 Quit:'$D(Order(ONr,LNr)) Do ..Set R=Order(ONr,LNr),UNr=$P(R,D)_".0" ..For Quit:'$D(UNr("U"_UNr)) Set $P(UNr,".",2)=$P(UNr,".",2)+1 ..Set $P(R,D)=UNr,Order(ONr,LNr)=R,UNr("U"_UNr)="" For ONr=1:1 Quit:'$D(Order(ONr)) Do .For LNr=1:1 Quit:'$D(Order(ONr,LNr)) Do ..Set R=Order(ONr,LNr),UNr=$P(R,D) ..Set:$D(UNr("U"_$P(UNr,".")_".1")) $P(UNr,".",2)=$P(UNr,".",2)+1 ..Set UNr=UNr_".0",$P(R,D)=UNr,Order(ONr,LNr)=R Quit ADDNUM(Value,Dec) For Quit:$E(Value)'=" " Set $E(Value)="" ; Kan alleen integers verwerken, met decimalen niet correct Quit +Value ADDDAT(Value) ; Omvormen naar $H-formaat If '+$E(Value,1,8) Quit "" Set Dat=$E(Value,7,8)_"."_$E(Value,5,6)_"."_$E(Value,1,4) Set HForm=$$INTDATE^vhLib.DataTypes(Dat,"DK") IF '+$E(Value,9,14) Quit HForm Set Tijd=$E(Value,9,10)_":"_$E(Value,11,12)_":"_$E(Value,13,14) Set HForm=HForm_","_$$INTTIME^vhLib.DataTypes(Tijd) Quit HForm ADDALFA(Value) For Quit:$E(Value,$L(Value))'=" " Set $E(Value,$L(Value))="" Quit Value FINDPROD(IDNr,KLNr,PakRef) New I,PakPRNr,PRNr,PAKNr,NextOL,Exit Set PRNr="",PakRef=$$UPTRIMAN^vhRtn1(PakRef) If KLNr,$L(PakRef) Do .Set PAKNr=$G(^PAKKET("IK",KLNr,PakRef)) .Quit:'PAKNr .Set PakPRNr="" .For Set PakPRNr=$O(^PAKKET("D",PAKNr,PakPRNr)) Quit:PakPRNr="" Set PRNr=PRNr_";"_PakPRNr_"#"_$P(^PAKKET("D",PAKNr,PakPRNr),D) .Set $E(PRNr)="" Do:'PRNr .If $L(IDNr)>6,$L(IDNr)<9 Do ..For I=0:1:9 Set PRNr=$P($G(^KPR2(I_$E(IDNr,$L(IDNr)-6,$L(IDNr))_" ")),D) Quit:PRNr If 'PRNr,$L(PakRef) Do .Set NextOL="OL"_$E(PakRef),Exit="" .For Set NextOL=$O(^KPR1(NextOL)) Quit:$E(NextOL,1,3)'=("OL"_$E(PakRef)) Do Quit:PRNr Quit:Exit ..Quit:$E(NextOL,5,3+$S($L(PakRef)>8:8,1:$L(PakRef)))'=$E(PakRef,2,$S($L(PakRef)>8:8,1:$L(PakRef))) ..If $L(PakRef)>8,$E(PakRef,9,$L(PakRef))'=$E(NextOL,13,4+$L(PakRef)) Quit ..If $E($O(^KPR1(NextOL)),5,3+$S($L(PakRef)>8:8,1:$L(PakRef)))=$E(NextOL,5,3+$S($L(PakRef)>8:8,1:$L(PakRef))) Set Exit=1 ; Korttekst niet uniek ..Else Set PRNr=$P(^KPR1(NextOL),D) Quit PRNr ISORGAL(Order) New R,PRNr,IsOrgal,ONr,LNr Set ONr=$O(Order(""),-1),(LNr,IsOrgal)="" For Set LNr=$O(Order(ONr,LNr)) Quit:LNr="" Do Quit:IsOrgal .Set R=Order(ONr,LNr),PRNr=$P(R,D,2) .Quit:'PRNr .Set IsOrgal=$$ISORGAL^PRODUKT2(PRNr) Quit IsOrgal PRIJS(Rec,KLNr,PRNr) New Prijs,KlRef,PakNr,TotPrijs,Aantal If $G(KLNr) Do .If $G(PRNr) Do ..If $D(^KPR(PRNr)) Do ...Set R=$$KLANTPR^KPRIJS(KLNr,PRNr) ...Set $P(R,D,2)=$$MUNT^vhRtn1($P(R,D,2),1) ...Set Prijs=$$EXTNUM^vhLib.DataTypes($P(R,D),0,".T",2) ..Else Set Prijs="Onbekend" .Else Do ; Berekenen van de pakketprijs ..Set PRNr=$P($P(Rec,D,3),"#"),KlRef=$P(Rec,D,5) ..If $L(KlRef),$D(^PAKKET("IK",KLNr,KlRef)),'$$EENOPEEN(KLNr,KlRef) Do ...Set TotPrijs=0,PakNr=^PAKKET("IK",KLNr,KlRef),PRNr="" ...For Set PRNr=$O(^PAKKET("D",PakNr,PRNr)) Quit:PRNr="" Do ....Set R=^PAKKET("D",PakNr,PRNr),Aantal=$P(R,D) ....Set R=$$KLANTPR^KPRIJS(KLNr,PRNr) ....Set TotPrijs=TotPrijs+($P(R,D)*Aantal),$P(R,D,2)=$$MUNT^vhRtn1($P(R,D,2),1) ...Set Prijs=$$EXTNUM^vhLib.DataTypes(TotPrijs,0,".T",2)_$P(R,D,2)_$J("",3-$L($P(R,D,2)))_$S($P(R,D,3)="H":"%",1:" ") ..Else Do ...If PRNr,$D(^KPR(PRNr)) Do ....Set R=$$KLANTPR^KPRIJS(KLNr,PRNr) ....Set $P(R,D,2)=$$MUNT^vhRtn1($P(R,D,2),1) ....Set Prijs=$$EXTNUM^vhLib.DataTypes($P(R,D),0,".T",2) ....Set Prijs=Prijs_$P(R,D,2)_$J("",3-$L($P(R,D,2)))_$S($P(R,D,3)="H":"%",1:" ") ...Else Set Prijs="Onbekend" Else Do .Set Prijs=$$EXTNUM^vhLib.DataTypes($P(Rec,D,9),0,".T",2) .Set Prijs=Prijs_$P(Rec,D,11)_$J("",3-$L($P(Rec,D,11)))_$S($P(Rec,D,10)="H":"%",1:" ") Quit Prijs ; Kijken of het paket een een op een relatie heeft EENOPEEN(KLNr,KlRef) New EenOpEen,PakNr Set PakNr=$G(^PAKKET("IK",KLNr,KlRef)) Set EenOpEen=$S(PakNr:$O(^PAKKET("D",PakNr,$O(^PAKKET("D",PakNr,""))))="",1:0) Quit EenOpEen OPENST(KLNr,RPLKL) New R,IntVw,KlNaam,Openst,Verwerk Set Openst=$D(^MBLOG("EDI",KLNr)) Do:Openst .If '$G(CUserId) New CUserId Set CUserId=$$DEVUSER^vhUSER($G(io,$$IO^cQ5)) .Set IntVw=$$INTVW^KLOPV(KLNr) .Do:";"_IntVw_";"[(";"_$P(CUserId,";")_";") ..Set R=^KKL(^KK1(KLNr),0),KlNaam=$P(R,D,2) ..Set Verwerk=$$^vhTXTPOP("ATKEDI","OPENST","",KlNaam) ..If Verwerk,'$G(RPLKL) Set R=$$RAADPL^KLANT(KLNr,"V"),Verwerk=0 Quit $S(Openst:$G(Verwerk,0),1:Openst) ; Verwerk kennisankers voor alle producten van het EDI order KENANK(KLNr,ORDNr,EDIORDNr) New R,KenAnk,Next,PRNr,BINr,lbPRNrs Set BINr=$P(EDIORDNr,".") If $L($G(EDIORDNr)),$D(^MBLOG("EDI",KLNr,BINr,EDIORDNr)) Do .Set Next="" .For Set Next=$O(^MBLOG("EDI",KLNr,BINr,EDIORDNr,Next)) Quit:Next="" Do ..Set R=^MBLOG("EDI",KLNr,BINr,EDIORDNr,Next),PRNr=$P($P(R,D,2),"#") ..If PRNr,$D(^KPR(PRNr)) Set PRNr(PRNr)="" .Quit:'$D(PRNr) .Set (lbPRNrs,PRNr)="" .For Set PRNr=$O(PRNr(PRNr)) Quit:'PRNr Set lbPRNrs=lbPRNrs_$LB(PRNr) .Set KenAnk=##class(CHUI.Derde.Kennis.Kennis).KlantProductUnRead(KLNr,lbPRNrs,$LB($$$adOrderVerwerkingIngave),1,"ORD",ORDNr) Quit $G(KenAnk) IMPORD(KLNr,ORDNr,EDIORDNr) New I,R,Next,PRNr,Aantal,Prijs,Korting1,Korting2,LevWk,LDefault,BINr,OLNr Set BINr=$P(EDIORDNr,".") If $L($G(EDIORDNr)),$D(^MBLOG("EDI",KLNr,BINr,EDIORDNr)) Do .Write @FCH .Set Next="" .For Set Next=$O(^MBLOG("EDI",KLNr,BINr,EDIORDNr,Next)) Quit:Next="" Do ..Set R=^MBLOG("EDI",KLNr,BINr,EDIORDNr,Next),PRNr=$P($P(R,D,2),"#") ..Quit:'PRNr Quit:'$D(^KPR(PRNr)) ..Set LDefault(35)=$P(R,D),LDefault(36)=$P($P(R,D,2),"#",2),LDefault(37)=$P(R,D,4),LDefault(40)=$P(R,D,7),LDefault(45)=$P(R,D,11) ..Set Aantal=$P(R,D,6),LevWk=$P(R,D,7) ..Set R=$$KLANTPR^KPRIJS(KLNr,PRNr),Prijs=$P(R,D),Korting1=$P(R,D,5),Korting2=$P(R,D,6) ..Do PINSERT^FLOWORD("","",PRNr,Aantal,Prijs,Korting1,Korting2,LevWk,0,,,,,.LDefault) Kill PrCount,Detail Set OLNr=100,PrCount=0 For I=1:1 Set OLNr=$O(^KOD(KLNr,"F",ORDNr,OLNr)) Quit:OLNr="" Set Detail(I)=OLNr,@DL(1)@(9)=I If $P(^KOD(KLNr,"F",ORDNr,OLNr),D,2) Set PrCount=PrCount+1 Do PRCOUNT^FLOW(PrCount,"KOD") If @DL(1)@(9)'>@DL(1)@(4) Do WL^PROC Set DL(2)="EN" Do ML^PROC Quit IMPTOE(LEVNr,TOENr,EDIORDNr) New EDIKLNr,ToeRef,BINr,Next,NoSa New R,Next,PRNr,Aantal,Prijs,Korting1,Korting2,LevWk If $L($G(EDIORDNr)) Do .Set EDIKLNr="",BINr=$P(EDIORDNr,".") .For Set EDIKLNr=$O(^MBLOG("EDI",EDIKLNr)) Quit:EDIKLNr="" Quit:$D(^MBLOG("EDI",EDIKLNr,BINr,EDIORDNr)) .Quit:'EDIKLNr .Set Next="" .For Set Next=$O(^MBLOG("EDI",KLNr,BINr,EDIORDNr,Next)) Quit:Next="" Do ..Set R=^MBLOG("EDI",KLNr,BINr,EDIORDNr,Next),PRNr=$P($P(R,D,2),"#") ..Quit:'PRNr Quit:'$D(^KPR(PRNr)) ..Set Aantal=$P(R,D,6),LevWk=$$EXTDATE^vhLib.DataTypes($P(R,D,7),"DW") ..Set NoSa="" Set:$P(^KLE(^KL1(LEVNr),2),D,3) NoSa="S" ..Set R=$$LEVPR^KPRIJS(LEVNr,PRNr,NoSa),Prijs=$P(R,D),Korting1=$P(R,D,5),Korting2=$P(R,D,6) ..Do PINSERT^FLOWTOE("","",PRNr,Aantal,Prijs,Korting1,Korting2,LevWk) Quit LOG(KLNr,EDIORDNr,Aktie,EdiTime,LogRef) New R,Line,PRNr,Aantal,LevWk,Prijs,GrOrde,Munt,KlOLNr,LCount If '$G(CUserId) New CUserId Set CUserId=$$DEVUSER^vhUSER($G(io,$$IO^cQ5)) Set EdiTime=$G(EdiTime,$H) Do:Aktie="I" .Set Line="",LCount=0 .For Set Line=$O(^MBLOG("EDI",KLNr,$P(EDIORDNr,"."),EDIORDNr,Line)) Quit:Line="" Do ..Set R=^MBLOG("EDI",KLNr,$P(EDIORDNr,"."),EDIORDNr,Line),KlOLNr=$P(R,D),PRNr=$P($P(R,D,2),"#") ..Set Aantal=$P(R,D,6),LevWk=$P(R,D,7),Prijs=$P(R,D,8),GrOrde=$P(R,D,9),Munt=$P(R,D,10) ..Set R=KlOLNr_D_PRNr_D_Aantal_D_LevWk_D_Prijs_D_GrOrde_D_Munt,^ATK("EDI","L",KLNr,"I",EDIORDNr,Aktie,EdiTime,Line)=R ..Set LCount=LCount+1 Set R=$G(^ATK("EDI","L",KLNr,"I",EDIORDNr)) Set:$L(R) R=R_D Set R=R_CUserId_"#"_Aktie_"#"_EdiTime_"#"_$G(LogRef)_"#"_$G(LCount),^ATK("EDI","L",KLNr,"I",EDIORDNr)=R Quit GETLOG(KLNr,EDIORDNr,Aktie,Vertaald) New I,R,LogRec Set LogRec=$G(^ATK("EDI","L",KLNr,"I",EDIORDNr)) Do:$L(LogRec) .If $L($G(Aktie)) Do ..For Quit:$P($P(LogRec,D,$L(LogRec,D)),"#",2)=Aktie Set LogRec=$P(LogRec,D,1,$L(LogRec,D)-1) ..Set LogRec=$P(LogRec,D,$L(LogRec,D)) .If $G(Vertaald) For I=1:1 Set R=$P(LogRec,D,I) Quit:R="" Do ..Set UserId=$P(R,"#"),EdiTime=$P(R,"#",3) ..Set $P(R,"#")=$$USERNAME^vhUSER(UserId),$P(R,"#",3)=$$FMTDT^vhLib.DataTypes(EdiTime),$P(LogRec,D,I)=R Quit LogRec CLEANLOG New Set $ZT="^cA406",Q="K" Do ^cA604 Set Maanden=$G(^ATK("EDI","E","PAR","DEL"),3) Set KLNr="",CompDate=$$CALCDATE^vhLib.DataTypes(,"M",-Maanden) For Set KLNr=$O(^ATK("EDI","L",KLNr)) Quit:KLNr="" Do .Set EDIORDNr="" .For Set EDIORDNr=$O(^ATK("EDI","L",KLNr,"I",EDIORDNr)) Quit:EDIORDNr="" Do ..Set R=^ATK("EDI","L",KLNr,"I",EDIORDNr),R=$P(R,D,$L(R,D)) ..Quit:$P(R,"#",2)'="B" Quit:$P(R,"#",3)>CompDate ..Set EDIBEVNr=$P(R,"#",4) ..Kill ^ATK("EDI","L",KLNr,"I",EDIORDNr) Kill:$L(EDIBEVNr) ^ATK("EDI","L",KLNr,"E",EDIBEVNr) Quit