WO on Success
Thu Jan 16 2025 04:50:45 GMT+0000 (Coordinated Universal Time)
Saved by @Nisha
if(input.Auto_Approval == "Yes") { input.Approval = "Approved"; //input.WO_Status = "Open"; input.WO_Status = "WO Created"; input.Material_Details.Work_Order_Status = "WO Created"; if(input.Form_Mode == "Direct WO") { // input.Approval = "Approved"; // input.WO_Status = "WO Created"; // input.Material_Details.Work_Order_Status = "WO Created"; input.Approval = "Pending"; input.WO_Status = "Waiting for approval"; for each stat in input.Material_Details { stat.Work_Order_Status="Waiting for approval"; } } if(input.Form_Mode == "Draft WO-Regular Wheels") { input.Approval = "Approved"; //input.WO_Status = "Open"; input.WO_Status = "WO Created"; input.Material_Details.Work_Order_Status = "WO Created"; //---------After creating WO, status Change in Draft WO-Regular Wheels Form DFWO = Create_WO_for_Regular_Wheels[ID == input.Draft_Work_Order_ID]; DFWOSUB = DF_Work_Order_Subform[Draft_Work_Order_RecID == DFWO.ID]; DFWO.WO_Status="WO Created"; DFWOSUB.Status="Draft WO Created"; // input.Material_Details.Work_Order_Status = "WO Created"; for each darftstat in input.Material_Details { darftstat.Work_Order_Status="WO Created"; } } fet_so = Sales_Order[ID == input.Sales_Order_Nos]; for each var in input.Material_Details { sosub = Sale_Order_Subform[ID == var.Sale_Order_Subform_ID]; wosub = Work_Order_Subform[Sale_Order_Subform_ID == sosub.ID].sum(WO_Qty); //----------Block the Qty in Inventory while creating WO------------- if(input.Form_Mode == "WO against SO") { inventory = Inventory[Part_No == sosub.Part_No] sort by Available_Qty desc; //------------Changing inventory as Virtual stock ---------------------- //inventory = Virtual_Stock[Part_No == sosub.Part_No] sort by Available_Qty desc; WosubID = Work_Order_Subform[Part_No == var.Part_No]; // WO_RECID = WosubID.Work_Order_Exis_ID; //var.Block_Qty=var.WO_Qty; blkqty = if(var.WO_Qty >= var.Stock_Qty,var.Stock_Qty,var.WO_Qty); blkqty = if(var.Stock_Qty >= var.SO_Quantity,var.Block_Qty,blkqty); var.Block_Qty=blkqty; sosub.WO_Blk_Qty=blkqty; if(inventory.count() > 0) { balqty = 0; i = 1; if(var.Block_Qty != null) { for each inven in inventory { if(blkqty > inven.Available_Qty) { inven.Block_Qty=ifnull(inven.Available_Qty,0) + ifnull(inven.Block_Qty,0); blkqty = blkqty - ifnull(inven.Available_Qty,0); inven.Available_Qty=0.00; // inventory.Total_Qty = 0.00; } else if(blkqty <= inven.Available_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(blkqty,0) + ifnull(inven.Block_Qty,0); blkqty = 0.00; } //----------New Code checking for block & wo are same eg 50=50 & stock 100 is > 50-------- // else if ( var.WO_Qty == var.Block_Qty && var.Stock_Qty >= var.Block_Qty ) // { // inven.Available_Qty=ifnull(inven.Available_Qty,0) - ifnull(blkqty,0); // inven.Block_Qty=ifnull(blkqty,0) + ifnull(inven.Block_Qty,0); // blkqty = 0.00; // } //------------------------------------------------------------------------------ /* if(balqty > 0 && i > 1) { //info "balance qty is more than zero"; //Balance Qty is less if(balqty <= inven.Available_Qty) { //info "balance qty is less than total qty"; //inven.Total_Qty=ifnull(inven.Total_Qty,0.0) - ifnull(balqty,0.0); inven.Available_Qty=ifnull(inven.Available_Qty,0.0) - ifnull(balqty,0.0); balqty = 0; } //----Balance Qty is More------ else if(balqty >= inven.Available_Qty) { //info "balance qty is greater than total qty"; balqty = ifnull(balqty,0.0) - ifnull(inven.Available_Qty,0.0); //inven.Total_Qty=0; inven.Available_Qty=0; } } */ if(blkqty == 0) { //info "before break"; break; } //i = i + 1; } insblock = insert into Block_Quantity [ Part_No=var.Part_No Part_Name=var.Part_Description Form_Type=input.Form_Mode Block_Qty=var.Block_Qty WO_No=input.ID WO_RECID=input.ID Status="Blocked from WO" Added_User=zoho.loginuser ]; insblock = insert into FG_Block_Stock1 [ Part_No=var.Part_No Part_Name=var.Part_Description Form_Type=input.Form_Mode Block_Qty=var.Block_Qty WO_No=input.ID WO_RECID=input.ID Status="Blocked from WO" Added_User=zoho.loginuser ]; } } } //______________________________________________________________________________________ if(sosub.count() > 0 && fet_so.count() > 0) { /* if(sosub.Qty != wosub && input.Form_Mode == "WO against SO") { sosub.Status="WO Partially Completed"; input.WO_Status = "WO Partially Completed"; fet_so.SO_Status="WO Partially Completed"; fet_so.CWPL_SO_Status="WO Partially Completed"; } */ // if( input.Form_Mode == "WO against SO") // { // sosub.Status="Active"; // //input.WO_Status = "WO Partially Completed"; // fet_so.SO_Status="Open"; // fet_so.CWPL_SO_Status="Active"; // } salsub = Sale_Order_Subform[Sales_Order_Exis_ID == fet_so.ID && ID != var.Sale_Order_Subform_ID && Status == "Active"]; if(input.Form_Mode == "WO against SO") { sosub.Status="WO Created"; input.WO_Status = "WO Created"; for each wotstat in input.Material_Details { wotstat.Work_Order_Status="WO Created"; //---------If stock > So & Wo is 0 , WO is closed ,then Wo status is WO Closed if(wotstat.Stock_Qty >= wotstat.SO_Quantity && wotstat.WO_Qty == 0) { input.WO_Status = "WO Closed"; wotstat.Work_Order_Status="WO Closed"; sosub.Status="WO Closed"; } //------------------------------------------------ } //---------------------------------------------------- sosub.Work_Order_RECID=input.ID; sosub.Work_Order_Subform_ID=WosubID.ID; sosub.Wo_Delivery_Date_in_sosub=input.Expected_Delivery_Date; sosub.WO_Status_in_sosub=input.WO_Status; //------------------------------------------------ if(salsub.count() == 0) { fet_so.SO_Status="WO Created"; fet_so.CWPL_SO_Status="WO Created"; } //fet_so.SO_Status="WO Created"; //fet_so.CWPL_SO_Status="WO Created"; /* for each updstatus in Work_Order[Sales_Order_Nos == input.Sales_Order_Nos] { updstatus.WO_Status="WO Created"; } */ } } } //-----------------Direct WO , Block QTY Calculation----------------- /* for each var1 in input.Material_Details { var1.Block_Qty=var1.WO_Qty; if(var1.Block_Qty != null) { wo = Work_Order[ID == input.ID]; wosub = Work_Order_Subform[Work_Order_Exis_ID = wo.ID]; if(input.Form_Mode == "Direct WO") { //info input.Form_Mode; //fet_inventory = Inventory[Part_No == var1.Part_No] sort by Available_Qty desc; //------------Changing inventory as Virtual stock ---------------------- fet_inventory = Virtual_Stock[Part_No == var1.Part_No] sort by Available_Qty desc; WOSUB = Work_Order_Subform[Part_No == var1.Part_No]; if(fet_inventory.count() > 0) { balqty = 0; i = 1; info fet_inventory.count(); //info var1.Block_Qty + "block qty"; for each inv1 in fet_inventory { //info "inven for"; //info var1.WO_Qty ; //info inv1.Available_Qty; if(var1.WO_Qty > inv1.Available_Qty) { //info " WO > INV"; inv1.Block_Qty=ifnull(inv1.Available_Qty,0); inv1.Available_Qty=0.00; } else if(var1.WO_Qty <= inv1.Available_Qty) { //info " WO <= INV"; //avail = ifnull(inv1.Available_Qty,0) - ifnull(var1.Block_Qty,0); //info avail; inv1.Available_Qty=ifnull(inv1.Available_Qty,0) - ifnull(var1.Block_Qty,0); inv1.Block_Qty=ifnull(var1.Block_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 <= inv1.Total_Qty) { //info "balance qty is less than total qty"; inv1.Total_Qty=ifnull(inv1.Total_Qty,0.0) - ifnull(balqty,0.0); inv1.Available_Qty=ifnull(inv1.Available_Qty,0.0) - ifnull(balqty,0.0); balqty = 0; } //----Balance Qty is More------ else if(balqty >= inv1.Total_Qty) { //info "balance qty is greater than total qty"; balqty = ifnull(balqty,0.0) - ifnull(inv1.Total_Qty,0.0); inv1.Total_Qty=0; inv1.Available_Qty=0; } } if(balqty == 0) { //info "before break"; break; } i = i + 1; } } } } } */ //----------Draft WO- Reguakr Wheels Block QTY Calculation------------------ /* for each var2 in input.Material_Details { var2.Block_Qty=var2.WO_Qty; if(var2.Block_Qty != null) { DFWO = Create_WO_for_Regular_Wheels[ID == input.Draft_Work_Order_ID]; DFWOSUB = DF_Work_Order_Subform[Draft_Work_Order_RecID == DFWO.ID]; if(input.Form_Mode == "Draft WO-Regular Wheels") { //info input.Form_Mode; //get_inventory = Inventory[Part_No == var2.Part_No] sort by Available_Qty desc; //------------Changing inventory as Virtual stock ---------------------- get_inventory = Virtual_Stock[Part_No == var2.Part_No] sort by Available_Qty desc; dfsub = DF_Work_Order_Subform[Part_No == var2.Part_No]; if(get_inventory.count() > 0) { balqty = 0; i = 1; //info get_inventory.count(); //info var2.Block_Qty + "block qty"; for each inv in get_inventory { //info "inven for"; if(var2.WO_Qty > inv.Available_Qty) { inv.Block_Qty=ifnull(inv.Available_Qty,0); inv.Available_Qty=0.00; } else if(var2.WO_Qty < inv.Available_Qty) { inv.Available_Qty=ifnull(inv.Available_Qty,0) - ifnull(var2.Block_Qty,0); inv.Block_Qty=ifnull(var2.Block_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 <= inv.Total_Qty) { //info "balance qty is less than total qty"; inv.Total_Qty=ifnull(inv.Total_Qty,0.0) - ifnull(balqty,0.0); inv.Available_Qty=ifnull(inv.Available_Qty,0.0) - ifnull(balqty,0.0); balqty = 0; } //Balance Qty is More else if(balqty >= inv.Total_Qty) { //info "balance qty is greater than total qty"; balqty = ifnull(balqty,0.0) - ifnull(inv.Total_Qty,0.0); inv.Total_Qty=0; inv.Available_Qty=0; } } if(balqty == 0) { //info "before break"; break; } i = i + 1; } } } } } */ //------------end of If statement------------- } else if(input.Auto_Approval == "No") { input.Approval = "Pending"; input.WO_Status = "Waiting for approval"; // if(input.Form_Mode == "Direct WO") // { // input.Approval = "Pending"; // //input.WO_Status = "Waiting for approval"; // } fet_so = Sales_Order[ID == input.Sales_Order_Nos]; for each var in input.Material_Details { sosub = Sale_Order_Subform[ID == var.Sale_Order_Subform_ID]; wosub = Work_Order_Subform[Sale_Order_Subform_ID == sosub.ID].sum(WO_Qty); //wo = Work_Order[Sales_Order_Nos == input.Sales_Order_Nos]; //info "sosub" + sosub.Qty; //info "wosub" + wosub; if(sosub.count() > 0 && fet_so.count() > 0) { /* if(sosub.Qty != wosub && input.Form_Mode == "WO against SO") { sosub.Status="WO Partially Completed"; input.WO_Status = "Waiting for approval"; fet_so.SO_Status="WO Partially Completed"; fet_so.CWPL_SO_Status="WO Partially Completed"; } */ salsub = Sale_Order_Subform[Sales_Order_Exis_ID == fet_so.ID && ID != var.Sale_Order_Subform_ID && Status == " Active"]; if(input.Form_Mode == "WO against SO") { sosub.Status="WO Created"; //input.WO_Status = "Waiting for approval"; if(salsub.count() == 0) { fet_so.SO_Status="WO Created"; fet_so.CWPL_SO_Status="WO Created"; } for each updstatus in Work_Order[Sales_Order_Nos == input.Sales_Order_Nos] { updstatus.WO_Status="Waiting for approval"; } } } } } var = 0; if(isBlank(input.Work_Order_No.trim())) { var = 1; input.Work_Order_No = thisapp.Common.Number_Function_New("Work Order"); } if(var == 1 && input.Form_Mode == "WO against SO") { openUrl("#Form:Alert_Messages?Status=" + "WO" + "&Value=" + input.Work_Order_No + "&zc_LoadIn=dialog","same window"); } else if(input.Form_Mode == "Direct WO") { openUrl("#Form:Alert_Messages?Status=" + "WOAlert" + "&Value=" + input.Work_Order_No + "&zc_LoadIn=dialog","same window"); } else if(input.Form_Mode == "Draft WO-Regular Wheels") { openUrl("#Form:Alert_Messages?Status=" + "DWO" + "&Value=" + input.Work_Order_No + "&zc_LoadIn=dialog","same window"); }
Comments