Revert - OnSuccess

PHOTO EMBED

Tue Jan 07 2025 15:35:04 GMT+0000 (Coordinated Universal Time)

Saved by @Pooja

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");
}
content_copyCOPY