GIN -> on_load_gin_create

PHOTO EMBED

Tue Jan 07 2025 14:34:10 GMT+0000 (Coordinated Universal Time)

Saved by @Pooja

emptylist = List();
//move the status into form mode to handle.
if(input.Form_Mode == null || input.Form_Mode == "")
{
	input.Form_Mode = "Direct GIN";
	//info Form_Mode;
}
if(input.Status == "GIN against MRQ" && input.Material_Request_Subform_record_id != emptylist || input.Material_Request_Subform_record_id != null)
{
	input.Form_Mode = "GIN against MRQ";
	hide Item_Details.Available_Qty;
	hide Item_Details.Block_Qty;
	input.Status = "";
	matreqsf = Material_Request_Subform[ID == input.Material_Request_Subform_record_id];
	Material_Req_Exis_ID = matreqsf.Material_Req_Exis_ID;
	mat_req = Material_Request[ID == Material_Req_Exis_ID];
	input.Material_Request_RECID = Material_Req_Exis_ID;
	input.Warehouse = matreqsf.Material_Req_Exis_ID.Warehouse;
	input.Work_Order_No = matreqsf.Material_Req_Exis_ID.Work_Order_No;
	input.Finished_Good = mat_req.FG_Part_Description;
	mrn = mat_req.Material_Request_No;
	input.Project_Name = Zoho_Projects_Data[ID == mat_req.Project_Name].ID;
	input.Machine_Name = Machine_Master[ID == mat_req.Machine_Name].ID;
	input.Status = "Draft";
	input.Request_raised_By = mat_req.Request_Raised_By;
	//input.Department = Department[ID==mat_req.Department].Department_Name;
	input.Request_Date = mat_req.Request_Date;
	//info mat_req.Material_Type;
	input.Material_Request_Type = mat_req.Material_Type;
	//input.Project_Name = ifnull(mat_req.Project_Name,"");
	row1 = Goods_Issued_Note.Item_Details();
	i = 0;
	grstot = 0;
	for each  i1 in matreqsf
	{
		i = i + 1;
		//Store will issue Itmes from Satellite stores and engineering stores - erp channel - 14/12/2024 from user.
		//inv = Inventory[Part_No == i1.Part_No && Warehouse == input.Warehouse && Total_Qty > 0];
		inv = Inventory[Part_No == i1.Part_No && Warehouse == input.Warehouse && Total_Qty > 0 && Location_Name.Location__Name == "Satellite Stores" || Location_Name.Location__Name == "Engineering Stores"];
		//info inv;
		fet_stockvalue = Stock_Value[Part_No == i1.Part_No] sort by Unit_Price desc;
		row1.S_No=i;
		row1.Part_No=i1.Part_No;
		row1.Part_Description=i1.Part_Description;
		row1.Material_Type=i1.Material_Type;
		row1.Unit_of_Measurement=i1.UoM;
		row1.Required_Quantity=ifnull(i1.Required_Qty,0.00);
		row1.Quantity_issued_so_far=ifnull(i1.Quantity_issued_so_far,0);
		row1.Specification=i1.Specification;
		if(i1.Quantity_issued_so_far > 0 && i1.Required_Qty > 0)
		{
			if(i1.Quantity_issued_so_far > i1.Required_Qty)
			{
				row1.Issued_Quantity=ifnull(i1.Quantity_issued_so_far,0) - ifnull(i1.Required_Qty,0);
			}
		}
		else
		{
			row1.Issued_Quantity=ifnull(i1.Required_Qty,0);
		}
		//row1.Issued_Quantity=ifnull(i1.Required_Qty,0) - ifnull(i1.Quantity_issued_so_far,0);
		//row1.Sub_Total=row1.Issued_Quantity * row1.Rate;
		//new function is written to calculate the rate by Mr.Varun - dt 5/12/2023 - Mail on 5/12/2023
		//row1.Rate=fet_stockvalue.Unit_Price;
		getrate = thisapp.Stock_Value.Average_Stock_Value(row1.Part_No,row1.Issued_Quantity);
		row1.Rate=ifnull(getrate,0);
		if(row1.Issued_Quantity > 0 && row1.Rate > 0)
		{
			sub = ifnull(row1.Issued_Quantity,0) * ifnull(row1.Rate,0);
		}
		grstot = ifnull(grstot,0) + ifnull(sub,0);
		//row1.Sub_Total=sub;
		row1.Value=sub;
		row1.Balance_Quantity=0.00;
		row1.Stock_Quantity=ifnull(inv.Total_Qty,0.00);
		row1.Available_Qty=ifnull(inv.Available_Qty,0.00);
		row1.Block_Qty=ifnull(inv.Block_Qty,0.00);
		row1.Work_Order_No=i1.Work_Order_No;
		row1.Sales_Order_No=i1.Sales_Order_No;
		row1.Material_Request_No=Material_Req_Exis_ID.Material_Request_No;
		row1.Material_Request_Subform_lu=i1.ID;
		row1.Material_type_from_mrq=Material_Req_Exis_ID.Material_Type;
		row1.Location=inv.Location_Name.getall();
		row1.Sub_Location=inv.Sub_Location.getall();
		row1.Racks_Bins=inv.Rack_Number.getall();
		input.Item_Details.insert(row1);
	}
	input.Grand_Total1 = grstot;
	for each  row2 in input.Item_Details
	{
		if(row2.Racks_Bins != null)
		{
			ava = 0;
			for each  i1 in row2.Racks_Bins
			{
				inv2 = Inventory[Warehouse == input.Warehouse && Part_No == row2.Part_No && Location_Name == row2.Location && Sub_Location == row2.Sub_Location && Rack_Number == i1 && Total_Qty > 0];
				//info inv2;
				ava = ava + ifnull(inv2.Available_Qty,0.0);
			}
			row2.Stock_Quantity=ifnull(ava,0.00);
			row2.Qty_after_Issued=ifnull(row2.Stock_Quantity,0.0) - ifnull(row2.Issued_Quantity,0.0);
			//info row2.Qty_after_Issued;
		}
	}
	disable Request_raised_By;
	disable Request_Date;
	disable Material_Request_Type;
}
else if(input.Form_Mode == "GIN against WO")
{
	disable Item_Details.Available_Qty;
	disable Item_Details.Block_Qty;
	input.Status = "";
	matreqsf = Material_Request_Subform[ID == input.Material_Request_Subform_record_id];
	Material_Req_Exis_ID = matreqsf.Material_Req_Exis_ID;
	mat_req = Material_Request[ID == Material_Req_Exis_ID];
	input.Material_Request_RECID = Material_Req_Exis_ID;
	input.Warehouse = matreqsf.Material_Req_Exis_ID.Warehouse;
	input.Work_Order_No = matreqsf.Material_Req_Exis_ID.Work_Order_No;
	input.Finished_Good = mat_req.FG_Part_Description;
	mrn = mat_req.Material_Request_No;
	input.Project_Name = Zoho_Projects_Data[ID == mat_req.Project_Name].ID;
	input.Machine_Name = Machine_Master[ID == mat_req.Machine_Name].ID;
	input.Status = "Draft";
	input.Request_raised_By = mat_req.Request_Raised_By;
	input.Request_Date = mat_req.Request_Date;
	input.Material_Request_Type = mat_req.Material_Type;
	partno_list = List();
	qtylist = List();
	mymap = Map();
	qtymap = Map();
	for each  bomrec in matreqsf
	{
		partno_list.add(bomrec.Part_No);
		qtyvar = ifnull(qtymap.get(bomrec.Part_No),0) + bomrec.Required_Qty;
		qtymap.put(bomrec.Part_No,qtyvar);
		//partno_list.add(bomrec.Required_Qty);
	}
	partno_list.sort();
	i = 0;
	grstot = 0;
	for each  recpartlist in partno_list.distinct()
	{
		row1 = Goods_Issued_Note.Item_Details();
		mrqsflist = Material_Request_Subform[ID = input.Material_Request_Subform_record_id && Part_No == recpartlist];
		mymap.put("Partno",recpartlist);
		mymap.put("partdesc",mrqsflist.Part_Description);
		i = i + 1;
		getinv = Inventory[Part_No == mrqsflist.Part_No && Warehouse == input.Warehouse && Total_Qty > 0];
		getin = Inventory[Part_No == mrqsflist.Part_No && Location_Name.Location__Name != "Production WIP"].sum(Total_Qty);
		////Store will issue Itemss from Satellite stores and engineering stores - erp channel - 14/12/2024 from user.
		getstokqty = Inventory[Part_No == mrqsflist.Part_No && Warehouse == input.Warehouse && Total_Qty > 0 && Location_Name.Location__Name == "Satellite Stores" || Location_Name.Location__Name == "Engineering Stores"].sum(Total_Qty);
		//info "getstokqty " + getstokqty;
		fet_stockvalue = Stock_Value[Part_No == mrqsflist.Part_No] sort by Unit_Price desc;
		row1.S_No=i;
		row1.Part_No=recpartlist;
		row1.Part_Description=mrqsflist.Part_Description;
		row1.Material_Type=mrqsflist.Material_Type;
		row1.Unit_of_Measurement=mrqsflist.UoM;
		qtv = qtymap.get(mrqsflist.Part_No);
		//info "line 155 qty " + qtv;
		row1.Required_Quantity=qtv;
		row1.Quantity_issued_so_far=ifnull(mrqsflist.Quantity_issued_so_far,0);
		row1.Specification=mrqsflist.Specification;
		if(mrqsflist.Quantity_issued_so_far > 0 && mrqsflist.Required_Qty > 0)
		{
			if(mrqsflist.Quantity_issued_so_far > qtv)
			{
				row1.Issued_Quantity=ifnull(mrqsflist.Quantity_issued_so_far,0) - ifnull(qtv,0);
			}
			else if(mrqsflist.Quantity_issued_so_far < qtv)
			{
				row1.Issued_Quantity=ifnull(qtv,0) - ifnull(mrqsflist.Quantity_issued_so_far,0);
			}
		}
		else
		{
			row1.Issued_Quantity=ifnull(qtv,0);
		}
		getrate = thisapp.Stock_Value.Average_Stock_Value(row1.Part_No,row1.Issued_Quantity);
		if(getrate == null)
		{
			getrate = Stock_Value[Part_No == row1.Part_No && Unit_Price > 0].Unit_Price sort by Added_Time asc;
		}
		if(getrate > 0 || getrate != null)
		{
			row1.Rate=ifnull(getrate,0);
			sub = ifnull(row1.Issued_Quantity,0) * ifnull(row1.Rate,0);
		}
		grstot = ifnull(grstot,0) + ifnull(sub,0);
		//row1.Sub_Total=sub;
		row1.Value=sub;
		row1.Balance_Quantity=0.00;
		//Stock Quantity should be from engineering and satellite locations only - 16/12/2024
		//row1.Stock_Quantity=ifnull(getinv.Total_Qty,0.00);
		//	row1.Stock_Quantity=ifnull(getin,0);
		row1.Stock_Quantity=ifnull(getstokqty,0);
		row1.Available_Qty=ifnull(getinv.Available_Qty,0.00);
		row1.Block_Qty=ifnull(getinv.Block_Qty,0.00);
		row1.Work_Order_No=mrqsflist.Work_Order_No;
		row1.Sales_Order_No=mrqsflist.Sales_Order_No;
		row1.Material_Request_No=Material_Req_Exis_ID.Material_Request_No;
		row1.Material_Request_Subform_lu=mrqsflist.ID;
		row1.Material_type_from_mrq=Material_Req_Exis_ID.Material_Type;
		// 		row1.Location=getinv.Location_Name.getall();
		// 		row1.Sub_Location=getinv.Sub_Location.getall();
		// 		row1.Racks_Bins=getinv.Rack_Number.getall();
		input.Item_Details.insert(row1);
	}
	input.Grand_Total1 = grstot;
	for each  row2 in input.Item_Details
	{
		if(row2.Racks_Bins != null)
		{
			ava = 0;
			for each  mrqsflist in row2.Racks_Bins
			{
				////Store will issue Itemss from Satellite stores and engineering stores - erp channel - 14/12/2024 from user.
				//inv2 = Inventory[Warehouse == input.Warehouse && Part_No == row2.Part_No && Location_Name == row2.Location && Sub_Location == row2.Sub_Location && Rack_Number == mrqsflist && Total_Qty > 0];
				inv2 = Inventory[Warehouse == input.Warehouse && Part_No == row2.Part_No && Location_Name.Location__Name == "Satellite Stores" || Location_Name.Location__Name == "Engineering Stores" && Rack_Number == mrqsflist && Total_Qty > 0];
				//info inv2;
				ava = ava + ifnull(inv2.Available_Qty,0.0);
			}
			row2.Stock_Quantity=ifnull(ava,0.00);
			row2.Qty_after_Issued=ifnull(row2.Stock_Quantity,0.0) - ifnull(row2.Issued_Quantity,0.0);
			//info row2.Qty_after_Issued;
		}
	}
	disable Request_raised_By;
	disable Request_Date;
	disable Material_Request_Type;
}
content_copyCOPY