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