var = 0; if(isBlank(input.Revert_No.trim())) { var = 1; str = thisapp.Common.Number_Function_New("Revert MRP"); input.Revert_No = str; } fet_mrp = MRP[Work_Order_No1 == input.Work_Order_No]; fetwo = Work_Order[Work_Order_No == input.Work_Order_No.Work_Order_No]; fetwosf = Work_Order_Subform[Work_Order_Exis_ID == fetwo.ID]; sosub = Sale_Order_Subform[Sales_Order_Exis_ID.Sale_Order_No == fetwo.Sales_Order_Nos.Sale_Order_No]; DFWOSUB = DF_Work_Order_Subform[Part_No == fetwosf.Part_No]; DFWO = Create_WO_for_Regular_Wheels[ID == DFWOSUB.Draft_Work_Order_RecID]; if(input.Work_Order_Subform_ID != null) { input.Status = "WO Reverted"; fetwo.WO_Status="WO Reverted"; fetwosf.Work_Order_Status="WO Reverted"; if(fetwo.Form_Mode == "Draft WO-Regular Wheels") { if(DFWO.count() > 0) { DFWO.WO_Status="Draft WO"; DFWOSUB.Status=""; } thisapp.workorder.RegularItem_Master_Total_Qty_DailyUpdate(); thisapp.workorder.Draft_WO(); } if(fetwo.Form_Mode == "WO against SO") { sosub.WO_Status_in_sosub="Pending WO"; for each wosub in fetwosf { get_inv = Inventory[Part_No == wosub.Part_No] sort by Block_Qty desc; if(get_inv.count() > 0) { /* get_inv.Available_Qty=ifnull(get_inv.Available_Qty,0.00) + ifnull(get_inv.Block_Qty,0.00); //get_inv.Block_Qty=0.00; get_inv.Block_Qty=ifnull(get_inv.Block_Qty,0.00) - ifnull(wosub.Block_Qty,0.00); */ blkqty = wosub.Block_Qty; for each inven in get_inv { if(blkqty > inven.Block_Qty) { inven.Available_Qty=ifnull(inven.Available_Qty,0) + ifnull(inven.Block_Qty,0); blkqty = blkqty - ifnull(inven.Block_Qty,0); inven.Block_Qty=0.00; // inventory.Total_Qty = 0.00; } else if(blkqty <= inven.Block_Qty) { // inven.Total_Qty = ifnull(inven.Total_Qty,0) - ifnull(var.Block_Qty ,0); inven.Available_Qty=ifnull(inven.Available_Qty,0) + ifnull(blkqty,0); inven.Block_Qty=ifnull(inven.Block_Qty,0) - ifnull(blkqty,0); blkqty = 0.00; } if(blkqty == 0) { break; } } } } } } if(fet_mrp.MRP_Status == "MRP Done" || fet_mrp.MRP_Status = "Release Production") { //fet_mrp.MRP_Status="MRP Reverted"; input.Status = "MRP Reverted"; fet_mrp.MRP_Status="MRP Reverted"; fetwo.WO_Status="MRP Reverted"; fetwosf.Work_Order_Status="MRP Reverted"; //fetwosf.Work_Order_Status="MRP Reverted"; for each blk in fet_mrp.BoM_Details_CWPL { fet_inv = Inventory[Part_No == blk.Part_No && Block_Qty > 0]; if(fet_inv.count() > 0) { if(blk.Block_Qty = True) { balqty = 0; i = 1; for each invcwplrec in fet_inv { //blocked Quantiy is less inventory available qty if(blk.Blocked_Qty <= invcwplrec.Block_Qty && i == 1) { //info "issued qty is less than total qty"; invcwplrec.Available_Qty=ifnull(invcwplrec.Available_Qty,0.0) + ifnull(blk.Blocked_Qty,0.0); invcwplrec.Block_Qty=ifnull(invcwplrec.Block_Qty,0) - ifnull(blk.Blocked_Qty,0); } //blocked Quantiy is more than inventory available qty else if(blk.Blocked_Qty > invcwplrec.Block_Qty && i == 1) { //info "issued qty is more than total qty"; balqty = ifnull(blk.Blocked_Qty,0.0) - ifnull(invcwplrec.Block_Qty,0.0); invcwplrec.Available_Qty=balqty; invcwplrec.Block_Qty=ifnull(invcwplrec.Block_Qty,0) - ifnull(blk.Blocked_Qty,0); } //for first time it should not get inside the loop if(balqty > 0 && i > 1) { //info "balance qty is more than zero"; //Balance Qty is less if(balqty <= invcwplrec.Block_Qty) { //info "balance qty is less than total qty"; invcwplrec.Available_Qty=ifnull(invcwplrec.Available_Qty,0.0) + ifnull(balqty,0.0); invcwplrec.Block_Qty=ifnull(blk.Blocked_Qty,0) - ifnull(invcwplrec.Block_Qty,0); balqty = 0; } //----Balance Qty is More------ else if(balqty >= invcwplrec.Block_Qty) { //info "balance qty is greater than total qty"; balqty = ifnull(balqty,0.0) - ifnull(invcwplrec.Block_Qty,0.0); invcwplrec.Available_Qty=ifnull(balqty,0); invcwplrec.Block_Qty=ifnull(balqty,0) - ifnull(invcwplrec.Block_Qty,0); } } if(balqty == 0) { break; } i = i + 1; } } } } for each blk1 in fet_mrp.BoM_Details_General_Purchase { fet_virstk = Inventory[Part_No == blk1.Part_No && Block_Qty > 0]; if(fet_virstk.count() > 0) { if(blk1.Block_Qty = True) { balqty = 0; i1 = 1; for each invgprec in fet_virstk { if(blk1.Blocked_Qty <= invgprec.Block_Qty && i1 == 1) { //info "blocked qty is less than total qty"; invgprec.Block_Qty=ifnull(invgprec.Block_Qty,0) - ifnull(blk1.Blocked_Qty,0); invgprec.Available_Qty=ifnull(invgprec.Available_Qty,0) + ifnull(blk1.Blocked_Qty,0); } else if(blk1.Blocked_Qty > invgprec.Block_Qty && i == 1) { //info "blocked qty is more than available qty"; balqty = ifnull(blk1.Blocked_Qty,0.0) - ifnull(invgprec.Block_Qty,0.0); invgprec.Available_Qty=balqty; invgprec.Block_Qty=ifnull(invgprec.Block_Qty,0) - ifnull(blk1.Blocked_Qty,0); } if(balqty > 0 && i > 1) { //info "balaance qty is more than zero"; //Balance Qty is less if(balqty <= invgprec.Block_Qty) { // info "balance qty is less than available qty"; invgprec.Available_Qty=ifnull(invgprec.Available_Qty,0.0) + ifnull(balqty,0.0); invgprec.Block_Qty=ifnull(invgprec.Block_Qty,0) - ifnull(blk1.Blocked_Qty,0); balqty = 0; } //Balance Qty is More else if(balqty >= invgprec.Block_Qty) { //info "balance qty is greater than available qty"; balqty = ifnull(balqty,0.0) - ifnull(invgprec.Block_Qty,0.0); invgprec.Available_Qty=balqty; invgprec.Block_Qty=ifnull(invgprec.Block_Qty,0) - ifnull(blk1.Blocked_Qty,0); } } if(balqty == 0) { break; } i = i + 1; } } } } } //openUrl("#Script:page.refresh","same window"); openUrl("##Report:MRP_Reverse","same window"); if(var == 1 && input.Form_Mode == "Front") { openUrl("#Form:Alert_Messages?Status=" + "RMRP" + "&Value=" + input.Revert_No + "&zc_LoadIn=dialog","same window"); } else if(input.Form_Mode == "Rear") { openUrl("#Form:Alert_Messages?Status=" + "REVMRP" + "&Value=" + input.Revert_No + "&zc_LoadIn=dialog","same window"); } else if(input.Form_Mode == "ReverseWO") { openUrl("#Form:Alert_Messages?Status=" + "MRPRev" + "&Value=" + input.Revert_No + "&zc_LoadIn=dialog","same window"); }