Index: EWORDS.mac.rou =================================================================== diff -u -r47699 -r48104 --- EWORDS.mac.rou (.../EWORDS.mac.rou) (revision 47699) +++ EWORDS.mac.rou (.../EWORDS.mac.rou) (revision 48104) @@ -463,64 +463,96 @@ Set:X="-" %SC=1 Quit ; -SAVE(NoAsk) +SAVE(NoAsk) New R,Ok,Count,VerzW,VerzDat,DOutDate,DOutTime,VerzZ,LevAdr,CONSNr,Send,ORDNr,ORDNrs,Check,Rembours,ChkBeletDone,OLU,LijnRec,ReturnLocal Set Ok=0 - If $D(^HULP(%J,KLNr,"M","A")) Do - . // Alle onderstaande code 2x uitvoeren: 1x voor ORGALUX, 1x voor niet-ORGALUX. - . // De volledige lijst kopi�ren van de M-node naar Mtemp of MVolledig, en daarna uit M de ongewenste killen. En als er niets overschiet, niets doen. - . // Merge ^HULP(%J,KLNr,"MVolledig") = ^HULP(%J,KLNr,"M") - .Set Ok=$$CHKMUNT(%J,KLNr,$G(NoAsk)) - .If Ok,KLNr'=$$$KlantHalux Do AnderTransport^EWORDS5(%J,KLNr) ; altijd uitvoeren niet afhankelijk van NoAsk param, niet voor Halux. - .If Ok Set Ok=$G(NoAsk) Set:'Ok Ok=$$^vhTXTPOP("EWORDS","SAVE") - .Quit:'Ok - .Set CONSNr=$$GETNUM^FLOW("KUL","KU1") ; Tijdelijk - .Set R=$G(^HULP(%J,KLNr,"V")) - .Set VerzW=$P(R,D),DOutDate=$P($P(R,D,2),","),DOutTime=$P(R,D,3),VerzZ=$P(R,D,4),VerzDat=$P(R,D,5) - .Set ORDNr=$O(^HULP(%J,KLNr,"M","A","")) - .If VerzW="" Do - ..Set VerzW=$$DEFAULT^KLVERZW(,KLNr,ORDNr) - ..Do ##class(vhLib.Logger).%New().Warning("Order doorsturen voor picking", "Verzendwijze was leeg bij order '" _ ORDNr _ "', en wordt ingesteld op '" _ VerzW _ "'.") - .Set OLU = "" - . // We gaan nagaan of er backorderlijnen moeten gesplitst worden. Indien de 2de piece is ingevuld moet die gebruikt worden als BO aantal. - . // Achteraf maken we die piece leeg zodat de rest van de code zijn werk blijft doen. - .For Set OLU=$O(^HULP(%J,KLNr,"M","A",ORDNr,OLU)) Quit:OLU="" Do - ..New LeverDatum, AantalVoorBackOrder - ..Set LijnRec = ^HULP(%J,KLNr,"M","A",ORDNr,OLU) - ..Set AantalVoorBackOrder = $Piece(LijnRec,"\",2) - ..If (AantalVoorBackOrder > 0) Do - ...Set LeverDatum = $Piece(LijnRec,"\",3) /// gebruik eerst de LevWk die werd ingevuld. - ...If $Piece(LijnRec,"\",4)'= "" Do /// nagaan of de BoLevWk was ingevuld en anders die gebruiken. - .... Set LeverDatum = $Piece(LijnRec,"\",4) /// dan gebruik de BoLevWk die was ingevuld. - ...Do SPLITOLN^FLOWORD6(,ORDNr,^ORD("IU",ORDNr,OLU),AantalVoorBackOrder,LeverDatum,,.ReturnLocal) - ...Set $Piece(LijnRec,"\",2)="" - ...Set $Piece(^KOD(KLNr,"F",ORDNr,^ORD("IU",ORDNr,ReturnLocal("NewOLUNr"))),"\",53) = 1 - ...Set ^HULP(%J,KLNr,"M","A",ORDNr,OLU) = LijnRec - .If 'DOutTime do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("DOutTime mag niet null zijn")) - .Set LevAdr=^HULP(%J,KLNr,"C","LA") - .Do BLDCONS^EWORDS2(KLNr,$NA(^HULP(%J,KLNr,"M")),CONSNr,$P(VerzW,";"),VerzDat,DOutDate_","_DOutTime,VerzZ,LevAdr,.ChkBeletDone) ; Creatie suborderlijnen - .Set (ORDNr,ORDNrs)="" - .For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Set ORDNrs=ORDNrs_";"_ORDNr - .Set $E(ORDNrs)="" - .Do STORE^LOG("ORDW",CONSNr,"O",ORDNrs) - .Set ChkBeletDone=$G(ChkBeletDone) - .Do VERWERK^EWORDSS(CONSNr) ; Eventueel opsplitsen in groepen - .If $D(^ORDW("D",CONSNr)) Do ; Kan bij terugname niet meer bestaan - ..Do ShowKennisAnker^EWORDS5(KLNr,CONSNr,1) - ..Do:$$ChkTRANSPORT(CONSNr) TRANSPORT(CONSNr) - ..Set R=^ORDW("D",CONSNr) - ..Quit:$P(R,D,20)="K" Quit:$P(R,D,20)="B" Quit:$P(R,D,20)="C" Quit:ChkBeletDone="B" - ..Set:ChkBeletDone="" Check=$$CHECK^EWORDS3(CONSNr,1),Rembours=$P(Check,D,2) - ..If ChkBeletDone="",'Check!Rembours Do BELET^EWORDS3(CONSNr) Quit - ..Quit:'$$MagazijnBeschikbaar(CONSNr) - ..Set Send=$S($G(DOutSend)="L":0,1:1) - ..If Send,DOutDate>$H Do - ...Set Send=$S(DOutSend="V":1,1:"") - ...Set:Send="" Send=$$^vhTXTPOP("EWORDS","SENDWMS",,$$EXTNUM^vhLib.DataTypes(CONSNr,0,".",0),$$EXTDATE^vhLib.DataTypes(DOutDate))="V" - ..If Send Do ; Doorsturen naar WMS - ...Set Send=$$WMSACTIV^EWRECS() - ...Do:Send SEND^EWORDSW(CONSNr) - .Kill ^HULP(%J,KLNr,"C") + + If $D(^HULP(%J,KLNr,"M","A")) { + // Alle onderstaande code 2x uitvoeren: 1x voor ORGALUX, 1x voor niet-ORGALUX. + // De volledige lijst kopi�ren van de M-node naar Mtemp of MVolledig, en daarna uit M de ongewenste killen. En als er niets overschiet, niets doen. + // Merge ^HULP(%J,KLNr,"MVolledig") = ^HULP(%J,KLNr,"M") + Set Ok=$$CHKMUNT(%J,KLNr,$G(NoAsk)) + If Ok,KLNr'=$$$KlantHalux Do AnderTransport^EWORDS5(%J,KLNr) ; altijd uitvoeren niet afhankelijk van NoAsk param, niet voor Halux. + If Ok Set Ok=$G(NoAsk) Set:'Ok Ok=$$^vhTXTPOP("EWORDS","SAVE") + + Quit:'Ok + + Set CONSNr=$$GETNUM^FLOW("KUL","KU1") ; Tijdelijk + Set R=$G(^HULP(%J,KLNr,"V")) + Set VerzW=$P(R,D),DOutDate=$P($P(R,D,2),","),DOutTime=$P(R,D,3),VerzZ=$P(R,D,4),VerzDat=$P(R,D,5) + Set ORDNr=$O(^HULP(%J,KLNr,"M","A","")) + + If VerzW="" { + Set VerzW=$$DEFAULT^KLVERZW(,KLNr,ORDNr) + Do ##class(vhLib.Logger).%New().Warning("Order doorsturen voor picking", "Verzendwijze was leeg bij order '" _ ORDNr _ "', en wordt ingesteld op '" _ VerzW _ "'.") + } + + // We gaan nagaan of er backorderlijnen moeten gesplitst worden. Indien de 2de piece is ingevuld moet die gebruikt worden als BO aantal. + // Achteraf maken we die piece leeg zodat de rest van de code zijn werk blijft doen. + Set OLU = "" + For { + Set OLU=$O(^HULP(%J,KLNr,"M","A",ORDNr,OLU)) + Quit:OLU="" + + New LeverDatum, AantalVoorBackOrder + Set LijnRec = ^HULP(%J,KLNr,"M","A",ORDNr,OLU) + Set AantalVoorBackOrder = $Piece(LijnRec,"\",2) + + If (AantalVoorBackOrder > 0) { + Set LeverDatum = $Piece(LijnRec,"\",3) /// gebruik eerst de LevWk die werd ingevuld. + + If $Piece(LijnRec,"\",4)'= "" { /// nagaan of de BoLevWk was ingevuld en anders die gebruiken. + Set LeverDatum = $Piece(LijnRec,"\",4) /// dan gebruik de BoLevWk die was ingevuld. + } + + Do SPLITOLN^FLOWORD6(,ORDNr,^ORD("IU",ORDNr,OLU),AantalVoorBackOrder,LeverDatum,,.ReturnLocal) + Set $Piece(LijnRec,"\",2)="" + Set $Piece(^KOD(KLNr,"F",ORDNr,^ORD("IU",ORDNr,ReturnLocal("NewOLUNr"))),"\",53) = 1 + Set ^HULP(%J,KLNr,"M","A",ORDNr,OLU) = LijnRec + } + } + + If 'DOutTime do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("DOutTime mag niet null zijn")) + Set LevAdr=^HULP(%J,KLNr,"C","LA") + Do BLDCONS^EWORDS2(KLNr,$NA(^HULP(%J,KLNr,"M")),CONSNr,$P(VerzW,";"),VerzDat,DOutDate_","_DOutTime,VerzZ,LevAdr,.ChkBeletDone) ; Creatie suborderlijnen + Set (ORDNr,ORDNrs)="" + For Set ORDNr=$O(^ORDW("D",CONSNr,"D",ORDNr)) Quit:ORDNr="" Set ORDNrs=ORDNrs_";"_ORDNr + Set $E(ORDNrs)="" + Do STORE^LOG("ORDW",CONSNr,"O",ORDNrs) + Set ChkBeletDone=$G(ChkBeletDone) + Do VERWERK^EWORDSS(CONSNr) ; Eventueel opsplitsen in groepen + + If $D(^ORDW("D",CONSNr)) { + ; Kan bij terugname niet meer bestaan + Do ShowKennisAnker^EWORDS5(KLNr,CONSNr,1) + Do:$$ChkTRANSPORT(CONSNr) TRANSPORT(CONSNr) + + Set R=^ORDW("D",CONSNr) + + Quit:$P(R,D,20)="K" Quit:$P(R,D,20)="B" Quit:$P(R,D,20)="C" Quit:ChkBeletDone="B" + + Set:ChkBeletDone="" Check=$$CHECK^EWORDS3(CONSNr,1),Rembours=$P(Check,D,2) + If ChkBeletDone="",'Check!Rembours Do BELET^EWORDS3(CONSNr) Quit + + Quit:'$$MagazijnBeschikbaar(CONSNr) + + Set Send=$S($G(DOutSend)="L":0,1:1) + + If Send,DOutDate>$H { + Set Send=$S(DOutSend="V":1,1:"") + Set:Send="" Send=$$^vhTXTPOP("EWORDS","SENDWMS",,$$EXTNUM^vhLib.DataTypes(CONSNr,0,".",0),$$EXTDATE^vhLib.DataTypes(DOutDate))="V" + } + + If Send { + ; Doorsturen naar WMS + Set Send=$$WMSACTIV^EWRECS() + Do:Send SEND^EWORDSW(CONSNr) + } + } + + Kill ^HULP(%J,KLNr,"C") + } + Quit Ok ; ; Controle van de facturatiemunt @@ -986,4 +1018,3 @@ ; -