Stock Update - OnSuccess

PHOTO EMBED

Tue Jan 07 2025 15:38:44 GMT+0000 (Coordinated Universal Time)

Saved by @Pooja

//input.Approval = "Pending";
// Nisha.s -- I have commented the below code up to line no 251& used this on blueprint
qty = ifnull(input.Moved_Qty,0.0) + ifnull(input.Moved_Qty_So_Far,0.0);
if(input.Accepted_Quantity > input.Moved_Qty)
{
	input.Balance_Qty_to_Move = ifnull(input.Accepted_Quantity,0.0) - qty;
	input.Moved_Qty_So_Far = ifnull(input.Moved_Qty_So_Far,0.0) + ifnull(input.Moved_Qty,0.0);
}
mts_status = Income_Quality_Check_Process[ID == input.Income_Quality_Check_RECID];
//Coil Id based Stock Maintenace  - User Requirement - 10/02/2023
getmat = Materials[ID == input.Part_No];
getcatg = Category[ID == getmat.Category];
if(getcatg.Category != "HR Coils")
{
	stock = Inventory[Part_No == input.Part_No && Part_Description == input.Part_Description && Warehouse == input.Warehouse && Location_Name == input.Location_Name && Sub_Location == input.Sub_Location && Rack_Number == input.Rack_Number];
}
else
{
	stock = Inventory[Part_No == input.Part_No && Part_Description == input.Part_Description && HR_Coil_id == input.HR_Coil_id && Warehouse == input.Warehouse && Location_Name == input.Location_Name && Sub_Location == input.Sub_Location && Rack_Number == input.Rack_Number];
}
category = Materials[ID == input.Part_Description].Category;
sub_category = Materials[ID == input.Part_Description].Sub_Category;
fet_reg = Regular_Item_Master[Part_No == input.Part_No];
fet_child = Regular_Child_Item_Parts[Part_No == input.Part_No];
if(stock.count() == 0)
{
	insert into Inventory
	[
		Added_User=zoho.loginuser
		Stock_Update_ID=input.ID
		Part_No=input.Part_No
		Part_Description=input.Part_Description
		Specification=input.Specification
		Total_Qty=input.Moved_Qty
		Batch_Number=input.Batch_Number
		Location_Name=input.Location_Name
		Sub_Location=input.Sub_Location
		Rack_Number=input.Rack_Number
		Available_Qty=input.Moved_Qty
		Warehouse=input.Warehouse
		Block_Qty=0.00
		Category=category
		Sub_Category=sub_category
		HR_Coil_id=input.HR_Coil_id
		UOM=input.Unit_of_Measurement
	]
	//Total_Qty=mts_status.Received_Qty
	if(Form_Mode == "Move to Stock")
	{
		if(input.Accepted_Quantity == qty)
		{
			mts_status.Move_to_Stock_status="Moved";
			mts_status.IQC_Status="Stock Updated";
		}
		else if(input.Accepted_Quantity > qty)
		{
			mts_status.Move_to_Stock_status="Partially Moved";
			mts_status.IQC_Status="Stock Partially Updated";
		}
	}
}
else
{
	//dont update the stock again.ie.Move to stock done-vendor inspection done - move to stock cases.
	// 	if(mts_status.IQC_Status != "Stock Update Pending" && Form_Mode == "Move to Stock")
	// 	{
	// 		//stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + mts_status.Received_Qty;
	// 	}
	stock.Available_Qty=ifnull(stock.Available_Qty,0.0) + ifnull(input.Moved_Qty,0.0);
	stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + ifnull(input.Moved_Qty,0.0);
	//stock.Total_Qty=ifnull(stock.Block_Qty,0.0) + ifnull(stock.Available_Qty,0.0);
	//fet_reg.Today_inventory = ifnull(stock.Available_Qty,0.0) + ifnull(input.Moved_Qty,0.0);
	if(Form_Mode == "Move to Stock")
	{
		if(input.Accepted_Quantity == qty)
		{
			mts_status.Move_to_Stock_status="Moved";
			mts_status.IQC_Status="Stock Updated";
		}
		else if(input.Accepted_Quantity > qty)
		{
			mts_status.Move_to_Stock_status="Partially Moved";
			mts_status.IQC_Status="Stock Partially Updated";
		}
	}
}
//rejected qty become accepted qty by manangement spl approval.
if(Form_Mode = "Rejectitem movetostock")
{
	//stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + mts_status.Received_Qty;
	stock.Total_Qty=ifnull(stock.Total_Qty,0.00) + ifnull(input.Moved_Qty,0.0);
	mts_status.Rejected_Qty=ifnull(input.Accepted_Quantity,0.0) - ifnull(mts_status.Rejected_Qty,0.0);
	mts_status.Accepted_Qty=ifnull(mts_status.Accepted_Qty,0.0) + input.Accepted_Quantity;
}
if(input.Purchase_Order_No != null)
{
	fet_posf = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID];
	fet_bat_no = GRN_Subform[Purchase_Order_SubForm_RECID == fet_posf.ID && Batch_Number == input.Batch_Number];
	fet_stockvalue = Stock_Value[Part_No == input.Part_No && Unit_Price == fet_posf.Rate];
	if(fet_stockvalue.count() > 0)
	{
		stockvalue = Stock_Value[Part_No == input.Part_No && Unit_Price == fet_posf.Rate];
		// 		stockvalue.Stock_Qty=stockvalue.Stock_Qty + ifnull(input.Accepted_Quantity,0.00);
		// 		a = ifnull(fet_posf.Rate,0.00) * ifnull(input.Accepted_Quantity,0.00);
		stockvalue.Purchase_Order_No=input.Purchase_Order_No;
		stockvalue.Stock_Qty=ifnull(stockvalue.Stock_Qty,0.0) + ifnull(input.Moved_Qty,0.00);
		a = ifnull(fet_posf.Rate,0.00) * ifnull(input.Moved_Qty,0.00);
		stockvalue.Stock_Value=ifnull(stockvalue.Stock_Value,0.0) + ifnull(a,0.0);
		stockvalue.Inventory_Qty=ifnull(stockvalue.Stock_Qty,0.0);
	}
	else
	{
		insert into Stock_Value
		[
			Added_User=zoho.loginuser
			Purchase_Order_No=input.Purchase_Order_No
			Batch_Number=fet_bat_no.ID
			Part_No=input.Part_No
			Part_Description=input.Part_Description
			Specification=input.Specification
			Location_Name=input.Location_Name
			Sub_Location=input.Sub_Location
			Rack_Number=input.Rack_Number
			Warehouse=input.Warehouse
			Stock_Qty=ifnull(input.Moved_Qty,0.00)
			Unit_Price=ifnull(fet_posf.Rate,0.00)
			Stock_Value=ifnull(fet_posf.Rate,0.00) * ifnull(input.Moved_Qty,0.00)
			Stock_Update=input.ID
			Inventory_Qty=ifnull(input.Moved_Qty,0.0)
		]
	}
}
//-----------------Update po status------------------------
if(input.Purchase_Order_No != null)
{
	//fetch_po_sub = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No].sum(Ordered_Qty);
	fetch_po_sub = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID].sum(Ordered_Qty);
	get_grn_qty = GRN_Subform[Purchase_Order_Number == input.Purchase_Order_No && Part_No == input.Part_No].sum(Received_Qty);
	fet_po_sub = Purchase_Order_Subform[Purchase_Order_ExisID == input.Purchase_Order_No && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID];
	get_IQC = Income_Quality_Check_Process[Purchase_Order_No == input.Purchase_Order_No && IQC_No != "" && Part_No == fet_po_sub.Part_No && GRN_Subform_RECID == input.GRN_Subform_RECID].sum(Accepted_Qty);
	//PO Final Close
	get_po_id = Purchase_Order[ID == input.Purchase_Order_No && Purchase_Order_No != ""];
	// 	sendmail
	// 	[
	// 		from :"erp@carrierwheels.com"
	// 		to :"parthasarathy.m@synprosoft.com"
	// 		subject :"stock update created succussful form sub - afert line 128 if condition-slno1" + input.Part_No.Part_No
	// 		message :"fetchposubqty " + fetch_po_sub + " getiqcqty " + get_IQC + "posfstts " + input.Part_No.Part_No
	// 	]
	if(get_po_id.count() > 0)
	{
		check_po_status = 0;
		for each  po_sub_form in Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID && Part_No == input.Part_No && ID == input.Purchase_Order_Subform_RECID]
		{
			// 			sendmail
			// 			[
			// 				from :"erp@carrierwheels.com"
			// 				to :"parthasarathy.m@synprosoft.com"
			// 				subject :"stock update created succussful form sub - after line 147 for loop po status before slno2" + po_sub_form.ID
			// 				message :po_sub_form.PO_Status + "---" + po_sub_form.ID
			// 			]
			if(po_sub_form.PO_Status != "QC Completed")
			{
				check_po_status = 1;
			}
		}
		// 		sendmail
		// 		[
		// 			from :"erp@carrierwheels.com"
		// 			to :"parthasarathy.m@synprosoft.com"
		// 			subject :"stock update created succussful form sub - after check po status slno3 " + input.Purchase_Order_Subform_RECID
		// 			message :"check_po_status " + check_po_status + "---" + input.Purchase_Order_Subform_RECID
		// 		]
		if(check_po_status == 0)
		{
			//the below line is comment on 27/11/2023 due to main po status is updating po closed,still items are not stock updated fully.
			//get_po_id.PO_Status="PO Closed";
			//get_po_id.PO_Status="QC Partially Completed";
		}
		else
		{
			get_po_id.PO_Status="QC Partially Completed";
		}
	}
	//if po quantity is greater than or equal to the total accepted qty in the IQC, it means the po order is closed
	if(fet_po_sub.count() > 0)
	{
		//Stock Update id for PO History Report in PO subform
		fet_po_sub.Stock_Update_ID=input.ID;
		if(get_IQC >= fetch_po_sub)
		{
			// 		fet_po_sub.PO_Status="QC Completed";--ERP Issue & Queries No.122 dt 10/04/2023.
			fet_po_sub.PO_Status="PO Closed";
		}
		//additional check for Po sf status 
		if(fet_po_sub.Qty_Received_so_far == fet_po_sub.Ordered_Qty)
		{
			fet_po_sub.PO_Status="PO Closed";
		}
	}
	//if purchase order subform status is PO closed for all items,then close the Purchase main form status as PO Closed - 10/10/2023
	posfcount = Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID].count();
	///info posfcount;
	poclosestts = Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID && PO_Status == "PO Closed"].count();
	//info poclosestts;
	posffc = Purchase_Order_Subform[Purchase_Order_ExisID == get_po_id.ID && PO_Status == "Foreclosed"].count();
	//info posffc;
	if(posfcount == poclosestts)
	{
		updtpomain = Purchase_Order[ID == get_po_id.ID];
		if(updtpomain.count() > 0)
		{
			updtpomain.PO_Status="PO Closed";
		}
	}
	else if(poclosestts >= posffc && posfcount == ifnull(posffc,0.0) + ifnull(poclosestts,0.0))
	{
		updtpomain = Purchase_Order[ID == get_po_id.ID];
		if(updtpomain.count() > 0)
		{
			updtpomain.PO_Status="PO Closed";
		}
	}
	//for checking purpose - posf is not closed by po main is closed
	if(posfcount != poclosestts)
	{
		checkpo = Purchase_Order[ID == get_po_id.ID];
		if(checkpo.count() > 0 && checkpo.PO_Status == "PO Closed")
		{
			// 			sendmail
			// 			[
			// 				from :"erp@carrierwheels.com"
			// 				to :"parthasarathy.m@synprosoft.com"
			// 				subject :"ALERT PO SUBFORM ITEMS STILL PENDING AND MAIN PO ISs CLOSED slno-4" + get_po_id
			// 				message :checkpo.Purchase_Order_No + "- " + get_po_id
			// 			]
		}
	}
}
//Insert records in Inventory Ageing form
insert into Inventory_Ageing
[
	Added_User=zoho.loginuser
	Part_No=input.Part_No
	Part_Description=input.Part_Description
	Specification=input.Specification
	Added_Stock=input.Moved_Qty
	Stock_Added_Issued_Date=zoho.currentdate
	Expiry_Date=input.Expiry_Date
]
//Insert record in Stock Ledger for Report purpose
fet_iqc1 = Income_Quality_Check_Process[ID == input.Income_Quality_Check_RECID];
GRNsubformID = GRN_Subform[ID == fet_iqc1.GRN_Subform_ID];
fetch_grn1 = GRN[ID == GRNsubformID.GRN_ID];
Vend_name = Vendor[ID = fetch_grn1.Vendor_Name].Vendor_Name;
//the below function will insert the record in stock ledger
thisapp.Stock_Ledger.Quantity_in_for_Stock_Ledger(input.ID);
//Update the Stock in ZOHO CRM --> Products--> Quantity in Stock Field- as per Mr.Senthil Advice the below fucntion is not required.19/05/2023
//thisapp.Update_Stock_in_CRM(input.Part_No);
//------
//_________Updating Moved Qty value & subform calculation to create Bills__________Nisha___________________________
get_bill = Create_Bills[GRN_No == input.GRN_Recid];
fet_Hold = Accept_Quantity[IQC_RECID == input.ID];
if(get_bill.count() > 0 && fet_Hold.Hold_Flag != "Hold Flag")
{
	updbills = Create_Bills_Subform[Exists_ID == get_bill.ID && Part_No == input.Part_No && GRN_Subform_ID == input.GRN_Subform_RECID];
	if(updbills.count() > 0)
	{
		get_data = Stock_Update[ID == input.ID];
		updbills.Qty=ifnull(get_data.Moved_Qty,0);
		updbills.Subtotal=ifnull(updbills.Qty,0) * ifnull(updbills.Rate,0);
		get_po = Purchase_Order_Subform[ID == updbills.Purchase_Order_Subform_ID];
		tot = updbills.Subtotal + get_po.Tax_Value;
		//info get_po.Tax_Value;
		//info get_po.Tax;
		subtot = Ifnull(get_po.Rate,0.0) * ifnull(get_data.Moved_Qty,0.0);
		get_tax_value = GST_Details[ID == get_po.Tax].Total_Rate;
		tax_calc = ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100;
		Total = ifnull(get_data.Moved_Qty,0.00) * ifnull(get_po.Rate,0.00) + ifnull(tax_calc,0.00);
		updbills.Tax=ifnull(get_po.Tax,null);
		updbills.Tax_Value=ifnull(tax_calc,0.00);
		//updbills.Tax_Value=ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100;
		updbills.Total=ifnull(Total,0.00);
	}
	itemtot = 0;
	taxtot = 0;
	Grndtot = 0;
	dftbill = True;
	for each  item in Create_Bills_Subform[Exists_ID == get_bill.ID]
	{
		itemtot = itemtot + ifNull(item.Subtotal,0);
		taxtot = taxtot + ifNull(item.Tax_Value,0);
		Grndtot = Grndtot + ifNull(item.Total,0);
		if(item.Qty == null)
		{
			dftbill = False;
		}
		// 		else if (item.Qty == null && fet_iqc1.Rejected_Qty  > 0 && fet_iqc1.Accepted_Qty == 0 ) 
		//         {
		// 			dftbill = True;
		//         }
	}
	get_bill.Item_Total=itemtot;
	get_bill.Tax_Total=taxtot;
	get_bill.Grand_Total=Grndtot;
	get_bill.Create_Draft_Bill=dftbill;
	if(fetch_grn1.count() > 0)
	{
		fetch_grn1.Create_Draft_Bill=dftbill;
	}
	// 	get_bill.Item_Total=ifnull(updbills.Subtotal,0.00);
	// 	get_bill.Tax_Total=ifnull(updbills.Total,0.00);
	// get_bill.Grand_Total =ifnull(updbills.Subtotal,0.00)+ifnull(updbills.Total,0.00);
}
//-----------------If Accepted > 0 & hold > 0 ,calculation for Moved Qty--------------------
// if(get_bill.count() > 0 && fet_iqc1.Hold_Qty > 0 && fet_iqc1.Accepted_Qty > 0  && fet_iqc1.IQC_Status =="IQC Completed" && fet_iqc1.Hold_Flag = "Bill Generated by Hold Qty")
// if(get_bill.count() > 0 && fet_iqc1.Hold_Qty > 0 && fet_iqc1.Accepted_Qty > 0  && fet_iqc1.Hold_Flag = "Bill Generated by Hold Qty")
// {
// 	updbills1 = Create_Bills_Subform[Exists_ID == get_bill.ID && Part_No == input.Part_No && GRN_Subform_ID == input.GRN_Subform_RECID];
// 	if(updbills1.count() > 0 &&  fet_iqc1.Hold_Qty > 0)
// 	{
// 		get_data = Stock_Update[ID == input.ID];
// 		movqty = get_data.Moved_Qty + fet_iqc1.Hold_Qty ;
// 		updbills1.Qty=movqty;
// 		updbills1.Subtotal=ifnull(updbills1.Qty,0) * ifnull(updbills1.Rate,0);
// 		get_po = Purchase_Order_Subform[ID == updbills1.Purchase_Order_Subform_ID];
// 		tot = updbills1.Subtotal + get_po.Tax_Value;
// 		info get_po.Tax_Value;
// 		info get_po.Tax;
// 		subtot = Ifnull(get_po.Rate,0.0) * ifnull(movqty,0.0);
// 		get_tax_value = GST_Details[ID == get_po.Tax].Total_Rate;
// 		tax_calc = ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100;
// 		Total = ifnull(movqty,0.00) * ifnull(get_po.Rate,0.00) + ifnull(tax_calc,0.00);
// 		updbills1.Tax=ifnull(get_po.Tax,null);
// 		updbills1.Tax_Value=ifnull(tax_calc,0.00);
// 	    //updbills1.Tax_Value=ifnull(subtot,0.00) * ifnull(get_tax_value,0.00) / 100;
// 		updbills1.Total=ifnull(Total,0.00);
// 	}
// 	itemtot = 0;
// 	taxtot = 0;
// 	Grndtot = 0;
// 	dftbill = True;
// 	for each  item1 in Create_Bills_Subform[Exists_ID == get_bill.ID]
// 	{
// 		itemtot = itemtot + ifNull(item1.Subtotal,0);
// 		taxtot = taxtot + ifNull(item1.Tax_Value,0);
// 		Grndtot = Grndtot + ifNull(item1.Total,0);
// 		if(item1.Qty == null)
// 		{
// 			dftbill = False;
// 		}
// 	}
// 	get_bill.Item_Total=itemtot;
// 	get_bill.Tax_Total=taxtot;
// 	get_bill.Grand_Total=Grndtot;
// 	get_bill.Create_Draft_Bill=dftbill;
// 	fetch_grn1.Create_Draft_Bill=dftbill;
// }
//______________________________________________________________________________________________________________
// if (zoho.loginuserid =="admin@carrierwheels.com") 
// {
//--------Run DRaft Wo function-----------------------
fet_reg = Regular_Item_Master[Part_No == input.Part_No];
if(fet_reg.count() > 0)
{
	thisapp.workorder.Draft_WO();
	//------------Daily Total Inventory Update by Schedule in Regular Item Master------
	thisapp.workorder.RegularItem_Master_Total_Qty_DailyUpdate();
}
reg_child = Regular_Child_Item_Parts[Part_No == input.Part_No];
if(reg_child.count() > 0)
{
	thisapp.workorder.Draft_WO_Child_Parts();
}
//_____________Deleting the records in Create WO for Regular wheels( if Stock > MIn stock in comparing Reg item Master )
//thisapp.Delete_DraftWO_When_Stock_Increases();
//}
//__________________________________________________________________________________________________________________
val = input.Part_No.Part_No + " - " + input.Moved_Qty;
if(Form_Mode == "Move to Stock")
{
	openUrl("#Form:Alert_Messages?Status=StockUpdate&Value=" + val + "&zc_LoadIn=dialog","same window");
}
if(Form_Mode == "Rejectitem movetostock")
{
	openUrl("#Form:Alert_Messages?Status=RejMovetoStock&Value=" + val + "&zc_LoadIn=dialog","same window");
}
content_copyCOPY