WO - OnLoad

PHOTO EMBED

Tue Jan 07 2025 15:40:41 GMT+0000 (Coordinated Universal Time)

Saved by @Pooja

disable Part_No;
disable Part_Name;
disable WO_Qty;
disable Packing_Std;
hide Packing_Std;
fet_pref = Preferences[Module_Name = "Work Order"];
input.Auto_Approval = fet_pref.Auto_Approval;
input.Virtual_Stock_Enable = fet_pref.Virtual_Stock;
//info input.Form_Mode;
input.Created_By = Employee_Details[Employee_Email == zoho.loginuserid].ID;
if(input.Sale_Order_Subform_ID != null || input.Sale_Order_Subform_ID.size() > 0 || input.Sale_Order_Subform_ID.len() > 0)
{
	// 	fetch_sosub = Sale_Order_Subform[ID == input.Sales_Order_Nos];
	// 	fetch_so = Sales_Order[ID == fetch_sosub.Sales_Order_Exis_ID];
	// 	Sales_Order_Nos = fetch_so.ID;
	// 	info fetch_so;
	sno = 0;
	for each  a1 in input.Sale_Order_Subform_ID
	{
		sosub = Sale_Order_Subform[ID == a1.ID];
		fetch_so = Sales_Order[ID == a1.Sales_Order_Exis_ID];
		inven = Inventory[Part_No == sosub.Part_No].sum(Available_Qty);
		fet_inven = Inventory[Part_No == sosub.Part_No].sum(Total_Qty);
		WO = Work_Order[Draft_Work_Order_ID == input.ID];
		Wosub = Work_Order_Subform[Part_No == a1.Part_No && Work_Order_Status != "WO Closed" && Work_Order_Status != "WO Cancelled" && Work_Order_Status != "Cancelled"].sum(WO_Qty);
		// 		if(a1.WO_Qty > = a1.Stock_Qty) 
		//     {
		// 		alert "Stock is already Available, Check and Proceed";
		//     }
		//----------- fet_mat = MPS_Master [Part_No == row.Part_No];
		//input.Front1 = Materials[ID == sosub.Part_No].Front;
		//input.Regular1 = Materials[ID == sosub.Part_No].Regular;
		//input.CED_Product1 = Materials[ID == sosub.Part_No].CED_Product;
		//input.Batch_Size1 = Materials[ID == sosub.Part_No].Batch_Size;
		row1 = Work_Order.Material_Details();
		row1.Stock_Qty=inven;
		row1.Total_Stock=fet_inven;
		row1.WO_Pipeline=Wosub;
		row1.SO_Quantity=a1.Qty;
		row1.Part_No=a1.Part_No;
		sno = sno + 1;
		row1.S_No=sno;
		row1.Sales_Order_No=fetch_so.ID;
		row1.Part_Description=a1.Part_Description;
		row1.UOM=a1.UoM;
		input.Category = Materials[ID == sosub.Part_No].Category;
		input.Sub_Category = Materials[ID == sosub.Part_No].Sub_Category;
		input.Part_No = a1.Part_No;
		input.Part_Name = a1.Part_Description;
		input.Packing_Std = ifnull(sosub.Packing_Std,null);
		wosub = Work_Order_Subform[Sale_Order_Subform_ID == sosub.ID && Part_No == a1.Part_No].sum(WO_Qty);
		row1.WO_Sofar=wosub;
		woqty = a1.Qty - wosub;
		if(row1.WO_Sofar > 0)
		{
			row1.Balance=woqty;
		}
		else
		{
			row1.Balance=0.00;
		}
		//row1.Balance=ifnull(row1.Quantity,0) - ifnull(row1.WO_Sofar,0) + ifnull(row1.WO_Qty,0);
		//row1.WO_Qty=woqty;
		row1.Buffer_Percentage=0.0;
		//row1.Required_Qty=ifnull(row1.SO_Quantity,0) - ifnull(row1.WO_Pipeline,0) - ifnull(row1.Stock_Qty,0);
		row1.Required_Qty=ifnull(row1.SO_Quantity,0) - ifnull(row1.Stock_Qty,0);
		if(row1.Stock_Qty >= row1.SO_Quantity)
		{
			// info"Stk > so";			
			row1.Block_Qty=ifnull(row1.SO_Quantity,0);
		}
		if(row1.Stock_Qty <= row1.SO_Quantity)
		{
			//info"Stk < so ";
			row1.Block_Qty=ifnull(row1.Stock_Qty,0);
		}
		if(row1.Stock_Qty <= row1.SO_Quantity && row1.Stock_Qty == 0)
		{
			//info"stk < so & stk =0";
			row1.Block_Qty=ifnull(row1.Stock_Qty,0);
		}
		// 		if(row1.Required_Qty > 0 && row1.Stock_Qty != 0)
		// 		{
		// 			info "req is > than 0";
		// 			row1.WO_Qty=row1.Required_Qty;
		// 			row1.Block_Qty=row1.WO_Qty;
		// 		}
		if(row1.Required_Qty < 0)
		{
			//	info "req is 0";
			row1.Required_Qty=0.0;
			row1.WO_Qty=0.0;
			input.WO_Qty = 0.0;
			//row1.Block_Qty=ifnull(row1.SO_Quantity,0) - ifnull(row1.Stock_Qty,0);
		}
		else
		{
			//	info " req > 0";
			//row1.WO_Qty=woqty;
			row1.WO_Qty=row1.Required_Qty;
			input.WO_Qty = row1.Required_Qty;
			//row1.Block_Qty=row1.WO_Qty;
		}
		//if(row1.Required_Qty > 0 && row1.Stock_Qty != 0)
		row1.WO_Qty_with_buffer=(ifnull(row1.WO_Qty,0.0) + ifnull(row1.WO_Qty,0.0) * ifnull(row1.Buffer_Percentage,0.0) / 100).ceil();
		//row1.To_be_Blocked=a1.Blocke_Qty;
		inventory = Inventory[Part_No == sosub.Part_No];
		//row1.Block_Qty=row1.WO_Qty;
		row1.Specification=a1.Remarks_multiline;
		row1.Sale_Order_Subform_ID=sosub.ID;
		row1.Work_Order_Exis_ID=input.ID;
		input.Material_Details.insert(row1);
	}
	if(fetch_so.count() > 0)
	{
		input.Customer_Name = ifnull(fetch_so.Customer_Name,"");
		disable Customer_Name;
		input.Expected_Delivery_Date = ifnull(fetch_so.Expected_Shipment_Date,"");
		/* 		if(fetch_so.Expected_Shipment_Date.getDay() >= 20)
		{
			input.Expected_Delivery_Date = ifnull(fetch_so.Expected_Shipment_Date,"");
		}
		else if(fetch_so.Expected_Shipment_Date.getDay() <= 20)
		{
			input.Expected_Delivery_Date = ifnull(fetch_so.Sale_Order_Date.addDay(20),"");
		}
		//info "salesorder " + fetch_so.Expected_Shipment_Date;
		// 		if(fetch_so.Expected_Shipment_Date >= zoho.currentdate && fetch_so.Expected_Shipment_Date != null)
		// 		{
		//input.Expected_Delivery_Date = ifnull(fetch_so.Expected_Shipment_Date,"");
		//} */
		input.Sales_Order_Nos = fetch_so.ID;
	}
}
//----------------------------------DRAFT WO ---------------------------------------------
//info Draft_Work_Order_ID ;
//info Form_Mode;
if(Draft_Work_Order_ID != null && input.Form_Mode == "Draft WO-Regular Wheels")
{
	//info "IF";
	hide Material_Details.SO_Quantity;
	DFWO = Create_WO_for_Regular_Wheels[ID == input.Draft_Work_Order_ID];
	DFWOSUB = DF_Work_Order_Subform[Draft_Work_Order_RecID == DFWO.ID];
	// 	childwo = Regular_Child_Item_Parts[ID == input.Draft_Work_Order_ID];
	//WO = Work_Order[Draft_Work_Order_ID == input.ID];
	//Wosub = Work_Order_Subform[Work_Order_Exis_ID == WO.ID];
	//inven1 = Inventory[Part_No == DFWOSUB.Part_No].sum(Available_Qty);
	//------------Changing inventory as Virtual stock ----------------------
	inven1 = Inventory[Part_No == DFWOSUB.Part_No].sum(Available_Qty);
	input.Draft_WO_Date = DFWO.Draft_WO_Date;
	input.Draft_Work_Order_ID = DFWO.ID;
	info input.Draft_Work_Order_ID + "after";
	input.Created_By = DFWO.Created_By;
	input.Work_Order_Date = zoho.currentdate;
	input.WO_Status = "Draft WO";
	input.Production_Start_Date = DFWO.Production_Start_Date;
	input.Expected_Delivery_Date = DFWO.Delivery_Date;
	// 	if(DFWO.Delivery_Date != null && DFWO.Delivery_Date >= zoho.currentdate)
	// 	{
	// 		//info "if";
	// 		input.Expected_Delivery_Date = ifnull(DFWO.Delivery_Date,"");
	// 	}
	// 	else
	// 	{
	// 		input.Expected_Delivery_Date = zoho.currentdate;
	// 	}
	input.Production_End_Date = DFWO.Production_End_Date;
	input.Approval = DFWO.Approval;
	input.CED_Product1 = DFWO.Category;
	input.Front1 = DFWO.Front1;
	input.Regular1 = DFWO.Regular1;
	input.Batch_Size1 = DFWO.BATCH_SIZE1;
	input.Category = Materials[ID == DFWOSUB.Part_No].Category;
	input.Sub_Category = Materials[ID == DFWOSUB.Part_No].Sub_Category;
	sno = 0;
	for each  var in DFWO.Material_Details_SF
	{
		//info"FOR";
		WO = Work_Order[Draft_Work_Order_ID == input.ID];
		Wosub = Work_Order_Subform[Part_No == var.Part_No && Work_Order_Status != "WO Closed" && Work_Order_Status != "WO Cancelled" && Work_Order_Status != "Cancelled" && Work_Order_Status != "WO Reverted"].sum(WO_Qty);
		inven2 = Inventory[Part_No == var.Part_No].sum(Available_Qty);
		fet_inv2 = Inventory[Part_No == var.Part_No].sum(Total_Qty);
		reg_master = Regular_Item_Master[Part_No == var.Part_No];
		childwo = Regular_Child_Item_Parts[Part_No == var.Part_No];
		row2 = Work_Order.Material_Details();
		row2.Stock_Qty=inven2;
		row2.Total_Stock=fet_inv2;
		row2.WO_Pipeline=Wosub;
		sno = sno + 1;
		row2.S_No=sno;
		row2.Part_No=var.Part_No;
		row2.Part_Description=var.Part_Description;
		input.Part_No = var.Part_No;
		input.Part_Name = var.Part_Description;
		row2.UOM=var.UOM;
		row2.SO_Quantity=0;
		// 		row2.WO_Qty=var.WO_Qty;
		// 		row2.Block_Qty=row2.WO_Qty;
		row2.Buffer_Percentage=0.0;
		//row2.Required_Qty=ifnull(row2.SO_Quantity,0) - ifnull(row2.WO_Pipeline,0) - ifnull(row2.Stock_Qty,0);
		row2.Required_Qty=ifnull(row2.SO_Quantity,0) - ifnull(row2.Stock_Qty,0);
		if(row2.Required_Qty < 0)
		{
			row2.Required_Qty=0.0;
			row2.WO_Qty=0.0;
			input.WO_Qty = 0.0;
		}
		else
		{
			//row2.WO_Qty=var.WO_Qty;
			row2.WO_Qty=row2.Required_Qty;
			input.WO_Qty = row2.Required_Qty;
			//row2.Block_Qty=row2.WO_Qty;
		}
		row2.WO_Qty_with_buffer=(ifnull(row2.WO_Qty,0.0) + ifnull(row2.WO_Qty,0.0) * ifnull(row2.Buffer_Percentage,0.0) / 100).ceil();
		// 		inv_subform = Invoice_Subform[Part_No == var.Part_No && Added_Time >= "01-Jan-2023" && Added_Time <= "31-Dec-2023"].sum(Qty);
		//row2.Six_Month_Sale = ifnull(thisapp.Invoice.Calculation_last_6_months_invoiceQty(row2.Part_No)," ");
		//_________Calculating Six month sales Qty in invoice________________
		//info curdate;
		//curdate = "17-Jan-2024";
		curdate = zoho.currentdate;
		startmonth = curdate.eomonth(-6);
		//info startmonth;
		startdate = startmonth.toStartOfMonth();
		curstartdate = curdate.toStartOfMonth();
		enddate = curstartdate.subday(1);
		startdate = startdate + " 00:00:00";
		enddate = enddate + " 23:59:59";
		//info "startdate " + startdate;
		//info "enddate " + enddate;
		inv_qty = Invoice_Subform[Part_No == row2.Part_No && Added_Time >= startdate && Added_Time <= enddate].sum(Qty);
		//info inv_qty;
		average_sale = ifnull(inv_qty / 6,0.00);
		row2.Six_Month_Sale=average_sale;
		//___________________________________________________________
		row2.Min_Stock=reg_master.Min_Stock;
		row2.Batch_Size=reg_master.Batch_Size;
		row2.Specification=var.Specification;
		input.Six_Month_Avg_Sale = average_sale;
		// 		input.Minimum_Stock = reg_master.Min_Stock;
		// 				input.Batch_Size = reg_master.Batch_Size;
		if(reg_master.Min_Stock != null)
		{
			//info "reg";
			input.Minimum_Stock = reg_master.Min_Stock;
			input.Batch_Size = reg_master.Batch_Size;
		}
		else
		{
			//info"else";
			//info childwo.Minimum_Qty +"m";
			//info childwo.Batch_Size +"b";
			input.Minimum_Stock = childwo.Minimum_Qty;
			input.Batch_Size = childwo.Batch_Size;
		}
		input.Material_Details.insert(row2);
	}
	//--------------------------------------
	disable Six_Month_Avg_Sale;
	disable Minimum_Stock;
	disable Batch_Size;
	hide Material_Details.Six_Month_Sale;
	hide Material_Details.Batch_Size;
	hide Material_Details.Min_Stock;
	hide Draft_WO_Date;
	disable Material_Details.Min_Stock;
	disable Material_Details.Six_Month_Sale;
	disable Material_Details.Batch_Size;
	disable Schedule_WO;
	hide Sales_Order_Nos;
	hide Customer_Name;
	hide Material_Details.WO_Sofar;
	hide Material_Details.Balance;
	hide Material_Details.Buffer_Percentage;
	hide Material_Details.WO_Qty_with_buffer;
	//hide Material_Details.SO_Quantity;
	disable Material_Details.WO_Pipeline;
	disable Material_Details.Stock_Qty;
	//-------------------
	disable Created_By;
	disable Sales_Order_Nos;
	disable Customer_Name;
	disable Expected_Delivery_Date;
	disable Warehouse;
	hide Material_Details.To_be_Blocked;
	disable Material_Details.S_No;
	hide Material_Details.MRP_ID;
	disable Material_Details.WO_Qty_with_buffer;
	disable Material_Details.To_be_Blocked;
	disable Material_Details.Part_Description;
	disable Material_Details.Part_No;
	disable Material_Details.SO_Quantity;
	disable Material_Details.Buffer_Percentage;
	disable Material_Details.WO_Sofar;
	disable Material_Details.Balance;
	disable Material_Details.UOM;
	disable Material_Details.Required_Qty;
	hide WO_Status;
	hide Approval;
	hide Approval;
	//hide Status;
	hide Schedule_WO;
	hide Production_Start_Date;
	hide Production_End_Date;
	hide Delivery_Address;
	hide Sale_Order_Subform_ID;
	hide Material_Details.Stock_FG_Qty;
	hide Material_Details.Stock_SFG_Qty;
	hide Material_Details.MRP_Qty;
	hide Material_Details.To_be_Blocked;
	hide Material_Details.Work_Order_Status;
	hide Material_Details.Scheduled_so_far;
	hide Material_Details.Sale_Order_Subform_ID;
	hide Material_Details.Balance_Qty;
	hide Form_Mode;
	hide Draft_Work_Order_ID;
	disable Front1;
	disable Regular1;
	//disable Batch_Size1;
	disable CED_Product1;
	disable Material_Details.S_No;
	disable Material_Details.Block_Qty;
	disable Category;
	disable Sub_Category;
	hide Category;
	hide Sub_Category;
	hide Material_Details.Block_Qty;
}
//-------------------------------------------
// 		if(row1.Stock_Qty > row1.SO_Quantity && row1.Stock_Qty > row1.WO_Pipeline)
// 		{
// 			reqqty = ifnull(row1.Stock_Qty,0) - ifnull(row1.WO_Pipeline,0) - ifnull(row1.SO_Quantity,0);
// 			info reqqty + " Stock > So & Stock > wopipe";
// 			row1.Required_Qty=reqqty;
// 		}
// 		else if(row1.SO_Quantity > row1.WO_Pipeline && row1.SO_Quantity > row1.Stock_Qty)
// 		{
// 			reqqty2 = ifnull(a1.Qty,0) - ifnull(Wosub,0) - ifnull(inven,0);
// 			info reqqty2 + " So > wopipe & So > stock";
// 			row1.Required_Qty=reqqty2;
// 		}
// 		else if(row1.WO_Pipeline > row1.SO_Quantity && row1.WO_Pipeline > row1.Stock_Qty)
// 		{
// 			reqqty3 = ifnull(Wosub,0) - ifnull(a1.Qty,0) - ifnull(inven,0);
// 			info reqqty3 + " wopipe > So & wopipe > stock";
// 			row1.Required_Qty=reqqty3;
// 		}
// 		else if(row1.WO_Pipeline > row1.WO_Qty || row1.WO_Pipeline > row1.Stock_Qty)
// 		{
// 			reqqty4 = ifnull(row1.WO_Pipeline,0) - ifnull(row1.WO_Qty,0) - ifnull(row1.Stock_Qty,0);
// 			info reqqty4 + " Wopipe > Wo (Or) wopipe > stock";
// 			row1.Required_Qty=reqqty4;
// 		}
// 		else if(row1.WO_Qty > row1.WO_Pipeline && row1.WO_Pipeline > row1.Stock_Qty)
// 		{
// 			reqqty5 = ifnull(row1.WO_Qty,0) - ifnull(row1.WO_Pipeline,0) - ifnull(row1.Stock_Qty,0);
// 			info reqqty5 + "  Wo > wopipe > stock";
// 			row1.Required_Qty=reqqty5;
// 		}
// ----- To Remove the Negative values in Requires Qty -----
// 		reqqty = ifnull(a1.Qty,0) - ifnull(Wosub,0) - ifnull(inven,0);
// 		Req = reqqty.toString();
// 		if(Req.contains("-"))
// 		{
// 			row1.Required_Qty=Req.removeFirstOccurence("-").toLong();
// 		}
// 		else
// 		{
// 			row1.Required_Qty=reqqty;
// 		}
//-------------------------------------
content_copyCOPY