#Include %occInclude
Go()
New LocID,LLocM,LocG,LocX,LocY,LocZ,QtyPcs,QtyRes,ProductNr,Sectie,Batch,Quality,Owner
Kill %msg,SQLCODE
#Define DoNotReset 1
&sql(DECLARE crPPP CURSOR FOR SELECT Inv.loc_id,Loc.loc_m,Loc.loc_g,Loc.loc_x,Loc.loc_y,Loc.loc_z,Inv.qty_pcs,Inv.qty_res,Inv.product,Inv.sectie,Inv.batch,Inv.quality,Inv.owner
INTO :LocID,LLocM,LocG,LocX,LocY,LocZ,QtyPcs,QtyRes,ProductNr,Sectie,Batch,Quality,Owner
FROM EWMS.Inventory AS Inv, EWMS.Locations AS Loc
WHERE (Inv.qty_res<>0) AND (Inv.loc_id=Loc.loc_id) AND (Loc.loc_m>=1) AND (Loc.loc_m<=4))
&sql(OPEN crPPP)
Quit:((SQLCODE<0) || ($L($G(%msg)))) "Error: "_SQLCODE_", "_%msg //ERROR?
;Alles uit query tijdelijk bewaren in array (er traden fouten op wanneer nog andere zaken binnenin deze
;query werden uitgevoerd, zaken die waarschijnlijk ook met gelijke variabelen werken (%msg, SQLCODE)
New FatalErr,PurgeCnt,aReservation,InvID,ConsNrs
Set FatalErr=0
Set PurgeCnt=0
For &sql(FETCH crPPP) Quit:(SQLCODE || FatalErr) Do
. Set:((SQLCODE<0) || ($L($G(%msg)))) FatalErr=1 //Foutje?
. Quit:(LLocM=1)
. Set InvID=##class(EWMS.Inventory).ComposeID(LocID,Sectie,ProductNr,Batch,Quality,Owner)
. ;plaats reeds html data in array nu we de velden van de query nog ter beschikking hebben
. Set ConsNrs=$$GetConsNrsViaLocIDAndProd(LocID,+ProductNr)
. Set aReservation(InvID)="
"_LocID_" | "_$J(LLocM,4)_" | "_$J(LocG,4)_" | "_$J(LocX,4)_" | "_$J(LocY,4)_" | "_$J(LocZ,4)_" | "_$J(+ProductNr,7)_" | "_##class(Prod.Product).GetPropViaNr(+ProductNr,"KortTekst")_" | "_$J(QtyRes,7,0)_" | "_$J(QtyPcs,7,0)_" | "_ConsNrs_" | "
. Set aReservation(InvID,$$$DoNotReset)=(LLocM=1)
. Set PurgeCnt=PurgeCnt+1
Quit:(FatalErr) "Error: "_SQLCODE_", "_%msg //ERROR?
&sql(CLOSE crPPP)
;Sluiten indien query geen resultaten heeft
Quit:(PurgeCnt=0) ""
;HTML mail opstellen met daarin palletten waarvan de reservatie <> 0
New MailBody,StyleTable
Set StyleTable="border-collapse:collapse; border:solid 1px;"
Set MailBody=" "
New ResetQtyResStatus,InvID
Set InvID=""
For Set InvID=$O(aReservation(InvID)) Quit:(InvID="") Do
. Set MailBody=MailBody_$C(13,10)_aReservation(InvID) //bevat HTML inhoud, daarnet opgebouwd
. If aReservation(InvID,$$$DoNotReset) Do
.. Set MailBody=MailBody_"Unchanged | "
. Else Do
.. Set ResetQtyResStatus=""
.. If ResetQtyResStatus="" Do
... Set MailBody=MailBody_"Ok | "
.. Else Do
... Set MailBody=MailBody_""_ResetQtyResStatus_" | "
Set MailBody=MailBody_"
"
Do SendMiniMail^vhLib("UGLY Picking ",$LB("tr@vanhoecke.be"),"UGLY Picking: reservaties verwijderd.",MailBody,0,1)
Quit ""
GetConsNrsViaLocIDAndProd(LocID,ProdNr)
New RS,Query
Set Query="Flow.OrderWMS.PalletReservatie:GetReservatiesViaPallIDAndProd"
Set RS=##class(%ResultSet).%New(Query)
Quit:(RS=$$$NULLOREF) "Kan geen nieuwe instantie van de query '"_Query_"' maken."
New tmpStatus
Set tmpStatus=RS.Execute(LocID,ProdNr)
Quit:($$$ISERR(tmpStatus)) "Fout bij het uitvoeren van de query '"_Query_"': "_$C(13,10)_$$ParseStatus^vhLib(tmpStatus)
New ConsStr,ConsNr
Set ConsStr=""
For Quit:('RS.Next()) Do
. Set ConsNr=RS.Get("ConsolidatieNr")
. If $$IsLocked^vhLib("^UGLYOrderPick("_ConsNr_")") Do
.. Set ConsNr="+"_$$FormatNumber^vhLib(".",ConsNr)
. Else Do //Indien locked: nu actief, niet meetellen
.. Set ConsNr=$$FormatNumber^vhLib(".",ConsNr)
. Set ConsStr=$S(ConsStr="":"",1:ConsStr_",")_ConsNr // '.': Thousand Sep
Quit ConsStr