Work Order On Load
Thu Jan 16 2025 04:49:36 GMT+0000 (Coordinated Universal Time)
Saved by @Nisha
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;
// }
//-------------------------------------



Comments