/** * Close Document. * Cancel not delivered Qunatities * @return true if success */ public bool CloseIt() { try { log.Info("closeIt - " + ToString()); // Close Not delivered Qty MRequisitionLine[] lines = GetLines(); Decimal totalLines = Env.ZERO; MProduct product = null; for (int i = 0; i < lines.Length; i++) { MRequisitionLine line = lines[i]; if (line.GetM_Product_ID() > 0) { product = MProduct.Get(GetCtx(), line.GetM_Product_ID()); } Decimal finalQty = line.GetQty(); if (line.GetC_OrderLine_ID() == 0) { finalQty = Env.ZERO; } else { MOrderLine ol = new MOrderLine(GetCtx(), line.GetC_OrderLine_ID(), Get_TrxName()); finalQty = ol.GetQtyOrdered(); } Tuple <String, String, String> mInfo = null; if (Env.HasModulePrefix("DTD001_", out mInfo)) { int quant = Util.GetValueOfInt(line.GetQty() - line.GetDTD001_DeliveredQty()); // new 6jan 0 int _count = Util.GetValueOfInt(DB.ExecuteScalar(" SELECT Count(*) FROM AD_Column WHERE columnname = 'DTD001_SourceReserve' ")); //Update storage requisition reserved qty //if (Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(AD_MODULEINFO_ID) FROM AD_MODULEINFO WHERE PREFIX='VA203_'", null, null)) > 0) if (Env.IsModuleInstalled("VA203_") && product != null && product.GetProductType() == X_M_Product.PRODUCTTYPE_Item) { if (GetDocAction() != "VO" && GetDocStatus() != "DR") { if (quant > 0) { //int loc_id = GetLocation(GetM_Warehouse_ID()); int loc_id = line.GetOrderLocator_ID(); storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (storage == null) { storage = MStorage.GetCreate(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); } storage.SetDTD001_QtyReserved((Decimal.Subtract(storage.GetDTD001_QtyReserved(), (Decimal)quant))); storage.Save(); //new 6jan 5 if (_count > 0) { //int Swhloc_id = GetSwhLocation(GetDTD001_MWarehouseSource_ID()); int Swhloc_id = line.GetReserveLocator_ID(); Swhstorage = MStorage.Get(GetCtx(), Swhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (Swhstorage == null) { Swhstorage = MStorage.GetCreate(GetCtx(), Swhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); } Swhstorage.SetDTD001_SourceReserve((Decimal.Subtract(Swhstorage.GetDTD001_SourceReserve(), (Decimal)quant))); Swhstorage.Save(); } //end } } } else if (GetDocAction() != "VO" && GetDocStatus() != "DR" && product != null && product.GetProductType() == X_M_Product.PRODUCTTYPE_Item) { if (quant > 0) { int loc_id = 0; if (line.Get_ColumnIndex("OrderLocator_ID") > 0) { loc_id = line.GetOrderLocator_ID(); } else { loc_id = GetLocation(GetM_Warehouse_ID()); } storage = MStorage.Get(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (storage == null) { storage = MStorage.GetCreate(GetCtx(), loc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); } storage.SetDTD001_QtyReserved((Decimal.Subtract(storage.GetDTD001_QtyReserved(), (Decimal)quant))); storage.Save(); //new 6jan 6 if (_count > 0) { int Swhloc_id = 0; if (line.Get_ColumnIndex("ReserveLocator_ID") > 0) { Swhloc_id = line.GetReserveLocator_ID(); } else { Swhloc_id = GetSwhLocation(GetM_Warehouse_ID()); } Swhstorage = MStorage.Get(GetCtx(), Swhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); if (Swhstorage == null) { Swhstorage = MStorage.GetCreate(GetCtx(), Swhloc_id, line.GetM_Product_ID(), line.GetM_AttributeSetInstance_ID(), Get_Trx()); } Swhstorage.SetDTD001_SourceReserve((Decimal.Subtract(Swhstorage.GetDTD001_SourceReserve(), (Decimal)quant))); Swhstorage.Save(); } //end } } } // final qty is not line qty if (finalQty.CompareTo(line.GetQty()) != 0) { String description = line.GetDescription(); if (description == null) { description = ""; } description += " [" + line.GetQty() + "]"; line.SetDescription(description); // Amit 9-feb-2015 // line.SetQty(finalQty); //Amit line.SetLineNetAmt(); line.Save(); } //get Grand Total or SubTotal totalLines = Decimal.Add(totalLines, line.GetLineNetAmt()); } if (totalLines.CompareTo(GetTotalLines()) != 0) { SetTotalLines(totalLines); Save(); } } catch (Exception ex) { // MessageBox.Show("MRequisition--CloseIt"); log.Severe(ex.ToString()); } return(true); }