Edited -> OnSuccess_edited
Tue Jan 07 2025 14:02:22 GMT+0000 (Coordinated Universal Time)
Saved by @Pooja
if(input.Dispatch_Type == "Actual")
{
disp = 0;
disp1 = 0;
bal = 0;
so = Sales_Order[ID == input.Sales_Order_ID];
wo = Work_Order[Sales_Order_Nos.Sale_Order_No == so.Sale_Order_No];
invmain = Invoice[ID == input.Invoice_ID];
invsub = Invoice_Subform[Invoice_Exist_ID == invmain.ID];
if(input.Sales_Type == "Direct Order" || input.Sales_Type == "Tooling")
{
if(so.CWPL_SO_Status == "Dispatch Note Partial")
{
so.CWPL_SO_Status="Invoice Created";
}
}
for each rec in input.Product_Details
{
invsub.Dispatch_Actual_Date_Time=rec.Disp_Actual_Date_Time;
disp = ifNull(rec.Actual_Qty,0) + disp;
rec.Ac_so_far=ifNull(rec.Actual_Qty_so_far,0) + ifNull(rec.Actual_Qty,0);
rec.Balance_Qty=ifNull(rec.Balance_Qty,0) - ifNull(rec.Actual_Qty,0);
rec.Edit_stk_qty=ifNull(rec.Actual_Qty,0);
so = Sales_Order[ID == input.Sales_Order_ID];
bal = ifNull(rec.Balance_Qty,0) + bal;
if(rec.Balance_Qty < 0 || rec.Balance_Qty == rec.Actual_Qty)
{
rec.Balance_Qty=0;
}
if(rec.Actual_Qty == rec.Planned_Qty)
{
rec.Sales_Lost_Qty=0.0;
}
getsosub = Sale_Order_Subform[Sales_Order_Exis_ID == so.ID && Part_No == rec.Product_Code];
if(so.count() > 0)
{
get_inven = Inventory[Part_No == rec.Product_Code && Location_Name.Location__Name == "FG Warehouse"];
getstk = Inventory[Part_No == rec.Product_Code && Location_Name.Location__Name == "FG Warehouse"];
fetwo = Work_Order[Sales_Order_Nos == input.Sales_Order_No];
blksosub = Sale_Order_Subform[Part_No == rec.Product_Code && Sales_Order_Exis_ID.Sale_Order_No == input.Sales_Order_No.Sale_Order_No];
wosub = Work_Order_Subform[Part_No == blksosub.Part_No];
getsoblk = Sales_Order[ID == input.Sales_Order_ID];
if(getsosub.Balance_Qty < 0 || getsosub.Balance_Qty == getsosub.Actual_Qty_So_far)
{
getsosub.Balance_Qty=0;
}
if(get_inven.count() > 0 && get_inven.Available_Qty > 0 && rec.Block_Qty == 0 && getsosub.DQR_Blk_Qty == null || getsosub.DQR_Blk_Qty <= 0 && getsosub.Logistics_Status != "Logistics Confirmed" || getsosub.Logistics_Status == "" || getsosub.Logistics_Status == null)
{
get_inven.Available_Qty=ifNull(get_inven.Available_Qty,0) - rec.Actual_Qty;
get_inven.Total_Qty=ifNull(get_inven.Total_Qty,0) - rec.Actual_Qty;
if(get_inven.Available_Qty < 0)
{
get_inven.Available_Qty=0;
get_inven.Total_Qty=0;
}
}
//Below code is to use the block qty for dispatch, only for the logistics confirmed Sale Order. ---Commented on 06/12/2024
if(getsoblk.count() > 0 && getsosub.DQR_Blk_Qty > 0 && getstk.Block_Qty > 0 && input.Sales_Order_No == fetwo.Sales_Order_Nos && getsosub.Logistics_Status == "Logistics Confirmed")
{
if(getstk.count() > 0 && rec.Product_Code == wosub.Part_No && rec.Actual_Qty <= rec.Block_Qty)
{
getstk.Block_Qty=ifNull(getstk.Block_Qty,0) - ifnull(rec.Actual_Qty,0);
getstk.Total_Qty=ifNull(getstk.Total_Qty,0) - ifnull(rec.Actual_Qty,0);
fetwo.WO_Status="Dispatched";
getsosub.WO_Status_in_sosub="Dispatched";
}
else if(getstk.count() > 0 && rec.Product_Code == wosub.Part_No && rec.Actual_Qty > rec.Block_Qty)
{
balc = rec.Actual_Qty - getstk.Block_Qty;
getstk.Block_Qty=0;
getstk.Available_Qty=ifNull(getstk.Available_Qty,0) - ifnull(balc,0);
getstk.Total_Qty=ifNull(getstk.Total_Qty,0) - ifnull(rec.Actual_Qty,0);
fetwo.WO_Status="Dispatched";
getsosub.WO_Status_in_sosub="Dispatched";
}
sendmail
[
from :zoho.loginuserid
to :"pooja.s@synprosoft.com"
subject :"Dispatch Successful form submission - using Block" + input.Sales_Order_No.Sale_Order_No
message :"Part No " + rec.Product_Code.Part_No + "TOT QTY-" + get_inven.Total_Qty + "AVL QTY-" + get_inven.Available_Qty + "BLK QTY-" + get_inven.Block_Qty + "ID-" + rec.ID + "Actual Qty=" + rec.Actual_Qty
]
}
getsosub.Actual_Qty_So_far=ifNull(getsosub.Actual_Qty_So_far,0) + ifNull(rec.Ac_so_far,0);
if(getsosub.count() > 0)
{
getsosub.Create_Dispatch_Note_Plan_ID=input.ID;
so.Create_Dispatch_Note_REC_ID=input.ID;
getsosub.Balance_Qty=ifnull(getsosub.Balance_Qty,0) - ifnull(rec.Ac_so_far,0);
if(getsosub.Balance_Qty > 0)
{
so.DP_Status=False;
}
getsosub.Planned_Qty_So_far=0;
}
input.Disptach_Status = "Approved";
}
}
//Below For-Each is for utilizing the Block Qty for dispatch
if(rec.Actual_Weight != rec.Product_Weight || rec.Actual_Weight == rec.Product_Weight)
{
thisapp.Books.DispatchEmailTemplate(input.ID);
}
sasub = Sale_Order_Subform[Sales_Order_Exis_ID == so.ID];
solist = List();
solist.addAll(so.Dispatch_Note_No);
solist.add(input.ID);
so.Dispatch_Note_No=solist;
so.Dispatch_Qty=sasub.sum(Actual_Qty_So_far);
so.Balance_Qty=sasub.sum(Balance_Qty);
//so.Dispatch_Qty=ifNull(so.Dispatch_Qty,0) + disp;
so.Shipped_Qty=so.Dispatch_Qty;
//so.Balance_Qty=bal;
openUrl("#Report:Dispatch_Note_Actual","same window");
thisapp.Update_Salesorder_Books(input.Sales_Order_ID,input.Dispatch_Type);
thisapp.DC.DCtoBooks(input.ID);
for each var in input.Returnable_Packing_Material
{
insdc = insert into Create_DC_Subform
[
Qty=var.Qty
Part_Description=var.Part_Name
Part_No=var.Part_No
S_No=var.S_No
Added_User=zoho.loginuser
];
}
//thisapp.Books.Dispatch_Note_Actual_In_Books(input.ID);
// thisapp.Books.Create_invoice_individual(input.ID);
thisapp.Books.Create_Packages(input.ID);
thisapp.Books.Create_Shipment(input.ID);
con = true;
for each sal in Sale_Order_Subform[Sales_Order_Exis_ID == so.ID]
{
if(sal.Balance_Qty > 0 && sal.Planned_Qty_So_far == null || sal.Planned_Qty_So_far == 0)
{
con = false;
}
}
so.DP_Status=con;
}
else if(input.Dispatch_Type == "Actual Edit")
{
dispt = 0;
balan = 0;
for each rec1 in input.Product_Details
{
getso = Sales_Order[ID == input.Sales_Order_ID];
getsosub = Sale_Order_Subform[Sales_Order_Exis_ID == input.Sales_Order_ID && Part_No == rec1.Product_Code];
getsosub.Actual_Qty_So_far=ifNull(getsosub.Actual_Qty_So_far,0) + ifNull(rec1.Actual_Qty,0);
getsosub.Balance_Qty=ifnull(getsosub.Balance_Qty,0) - ifnull(rec1.Actual_Qty,0);
getso = Sales_Order[ID == input.Sales_Order_ID];
balan = ifNull(getsosub.Balance_Qty,0) + balan;
dispt = ifNull(rec1.Actual_Qty,0) + dispt;
if(getsosub.Balance_Qty > 0)
{
so = Sales_Order[ID == input.Sales_Order_ID];
so.DP_Status=False;
}
// get_invent = Inventory[Part_No == rec1.Product_Code];
// if(get_invent.count() > 0)
// {
// if(get_invent.Total_Qty < get_invent.Available_Qty)
// {
// //get_invent.Total_Qty=get_invent.Available_Qty;
// }
// // get_invent.Available_Qty=ifNull(get_invent.Available_Qty,0) - rec1.Actual_Qty;
// // get_invent.Total_Qty=ifNull(get_invent.Total_Qty,0) - rec1.Actual_Qty;
// sendmail
// [
// from :zoho.loginuserid
// to :"parthasarathy.m@synprosoft.com"
// subject :"Edited>Successful form submission>OnSuccess_edited input.Dispatch_Type == Actual Edit"
// message :"PartNo " + get_inven.Part_No.Part_No + "Total Qty is " + get_inven.Total_Qty + "Available Qty.. " + get_inven.Available_Qty
// ]
// }
}
if(rec1.Actual_Weight != rec1.Product_Weight || rec1.Actual_Weight == rec1.Product_Weight)
{
thisapp.Books.DispatchEmailTemplate(input.ID);
}
subsa = Sale_Order_Subform[Sales_Order_Exis_ID == getso.ID];
getso.Dispatch_Qty=subsa.sum(Actual_Qty_So_far);
getso.Balance_Qty=subsa.sum(Balance_Qty);
//getso.Dispatch_Qty=dispt;
getso.Shipped_Qty=getso.Dispatch_Qty;
// getso.Balance_Qty=balan;
openUrl("#Report:Edit_Dispatch_Note_Actual","same window");
thisapp.Books.Edit_discpatch_note_actual_invoice(input.ID);
}
else
{
openUrl("#Report:Order_Gate_Process","same window");
}
fet_dis = Create_Dispatch_Note_Format[ID == input.ID];
insrec = insert into Dispatch_Note_Actual_History
[
Dispatch_Type=fet_dis.Dispatch_Type
Added_User=zoho.loginuser
CDNF_ID=fet_dis.CDNF_ID
Currency_Code=fet_dis.Currency_Code
Dispatch_Note_Date=fet_dis.Dispatch_Note_Date
Customer_Address=fet_dis.Customer_Address
Sales_Type=fet_dis.Sales_Type
Sales_Order_No=fet_dis.Sales_Order_No
Customer_Name=fet_dis.Customer_Name
Incoterms=fet_dis.Incoterms
Incoterms_Location=fet_dis.Incoterms_Location
Product_List=fet_dis.Product_List
Load_Products=fet_dis.Load_Products
Transport_Type=fet_dis.Transport_Type
Transporter_Name=fet_dis.Transporter_Name
Vehicle_No_dup=fet_dis.Vehicle_No_dup
GR_No=fet_dis.GR_No
Driver_Name=fet_dis.Driver_Name
Driver_Mobile_Number=fet_dis.Driver_Mobile_Number
Vehicle_Type=fet_dis.Vehicle_Type
Total_Qty=fet_dis.Total_Qty
Total_Weight=fet_dis.Total_Weight
];
for each recsub in input.Product_Details
{
subins = insert into Dispatch_Note_Actual_History_Subform
[
Added_User=zoho.loginuser
Dispatch_Note_Actual_History_Exis_ID=insrec
S_NO=recsub.S_NO
Product_Code=recsub.Product_Code
Product_Description=recsub.Product_Description
Customer_Product_Code=recsub.Customer_Product_Code
Packing_Details1=recsub.Packing_Details1
UoM=recsub.UoM
Planned_Qty=recsub.Planned_Qty
Plan_Qty_so_far=recsub.Plan_Qty_so_far
Product_Weight=recsub.Product_Weight
Actual_Qty=recsub.Actual_Qty
Ac_so_far=recsub.Ac_so_far
Actual_Qty_so_far=recsub.Actual_Qty_so_far
Actual_Weight=recsub.Actual_Weight
Remarks=recsub.Remarks
Reason=recsub.Reason
Individual=recsub.Individual
Stock_Qty=recsub.Stock_Qty
Ordered_Qty=recsub.Ordered_Qty
Balance_Qty=recsub.Balance_Qty
];
}
for each retmat in input.Returnable_Packing_Material
{
retins = insert into Returnable_Packing_Material_History
[
Qty=retmat.Qty
Part_No=retmat.Part_No
Part_Name=retmat.Part_Name
Added_User=zoho.loginuser
];
}
if(input.Dispatch_Type == "Gate")
{
invmain = Invoice[ID == input.Invoice_ID];
invsub = Invoice_Subform[Invoice_Exist_ID == invmain.ID];
invsub.Vehicle_Gate_in_Time=input.In_Time;
invsub.Vehicle_Gate_out_time=input.Out_Time;
}



Comments