Edited -> OnSuccess_edited

PHOTO EMBED

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;
}
content_copyCOPY