/// <summary> /// Calculate Begin quantity from transaction history and onhand quantity in period of time /// </summary> /// <param name="pintCCNID">CCN</param> /// <param name="pdtmFromDate">From Date</param> /// <param name="pdtmToDate">To Date</param> /// <param name="pdtbAllItems">All Items</param> /// <returns>List of Item which have begin quantity</returns> public DataTable GetBeginQuantity(int pintCCNID, DateTime pdtmFromDate, DateTime pdtmToDate, DataTable pdtbAllItems, bool pblnIsFirstPeriod) { MST_TransactionHistoryDS dsTranHis = new MST_TransactionHistoryDS(); IV_MasLocCacheDS dsMasLocCache = new IV_MasLocCacheDS(); // in quantity DataTable dtbInQuantity = dsTranHis.GetInQuantity(pintCCNID, pdtmFromDate, pdtmToDate); DataTable dtbResult = dtbInQuantity.Clone(); // out quantity DataTable dtbOutQuantity = dsTranHis.GetOutQuantity(pintCCNID, pdtmFromDate, pdtmToDate); // onhand quantity DataTable dtbOHQuantity = dsMasLocCache.GetQuantityOnHand(pintCCNID, pblnIsFirstPeriod); foreach (DataRow drowItem in pdtbAllItems.Rows) { string strProductID = drowItem[ITM_ProductTable.PRODUCTID_FLD].ToString(); string strFilter = ITM_ProductTable.PRODUCTID_FLD + "='" + strProductID + "'"; decimal decInQty = 0, decOutQty = 0, decOHQty = 0, decBeginQty = 0; DataRow[] drowsIN = dtbInQuantity.Select(strFilter); DataRow[] drowsOut = dtbOutQuantity.Select(strFilter); DataRow[] drowsOH = dtbOHQuantity.Select(strFilter); if (drowsIN.Length == 0 && drowsOut.Length == 0 && drowsOH.Length == 0) { continue; } foreach (DataRow drowData in drowsIN) { try { decInQty += Convert.ToDecimal(drowData[MST_TransactionHistoryTable.QUANTITY_FLD]); } catch {} } foreach (DataRow drowData in drowsOut) { try { decOutQty += Convert.ToDecimal(drowData[MST_TransactionHistoryTable.QUANTITY_FLD]); } catch {} } foreach (DataRow drowData in drowsOH) { try { decOHQty += Convert.ToDecimal(drowData[IV_MasLocCacheTable.OHQUANTITY_FLD]); } catch {} } // Begin quantity = Onhand - In + Out decBeginQty = decOHQty - decInQty + decOutQty; if (decBeginQty != 0) { DataRow drowBegin = dtbResult.NewRow(); drowBegin[ITM_ProductTable.PRODUCTID_FLD] = drowItem[ITM_ProductTable.PRODUCTID_FLD]; drowBegin[MST_TransactionHistoryTable.QUANTITY_FLD] = decBeginQty; dtbResult.Rows.Add(drowBegin); } } return(dtbResult); }
public void UpdateInventory(DataTable pdtbAdjustmentTable, DataTable pdtbCache, string pstrComment) { // update adjustment if (pdtbAdjustmentTable.Rows.Count > 0) { DataSet dstData = new DataSet(); dstData.Tables.Add(pdtbAdjustmentTable); IV_AdjustmentDS dsAdjustment = new IV_AdjustmentDS(); dsAdjustment.UpdateDataSet(dstData); IV_BinCacheDS dsBinCache = new IV_BinCacheDS(); DataSet dstCache = new DataSet(); dstCache.Tables.Add(pdtbCache); dsBinCache.UpdateDataSetForTaking(dstCache); // update location and master location cache IV_LocationCacheDS dsLocation = new IV_LocationCacheDS(); dsLocation.UpdateAllQuantityFromBin(); // update transaction history InventoryUtilsBO boIVUtils = new InventoryUtilsBO(); DataSet dstTransaction = boIVUtils.ListTransactionHistory(0); // get the list of new adjustment DataSet dstAdjust = dsAdjustment.List(pstrComment); foreach (DataRow drowData in dstAdjust.Tables[0].Rows) { // each row will be on transaction history #region Transaction history //SaveTransactionHistory DataRow drowTransaction = dstTransaction.Tables[0].NewRow(); drowTransaction[MST_TransactionHistoryTable.CCNID_FLD] = drowData[IV_AdjustmentTable.CCNID_FLD]; drowTransaction[MST_TransactionHistoryTable.TRANSDATE_FLD] = drowData[IV_AdjustmentTable.POSTDATE_FLD]; drowTransaction[MST_TransactionHistoryTable.POSTDATE_FLD] = drowData[IV_AdjustmentTable.POSTDATE_FLD]; drowTransaction[MST_TransactionHistoryTable.REFMASTERID_FLD] = drowData[IV_AdjustmentTable.ADJUSTMENTID_FLD]; drowTransaction[MST_TransactionHistoryTable.PRODUCTID_FLD] = drowData[IV_AdjustmentTable.PRODUCTID_FLD]; drowTransaction[MST_TransactionHistoryTable.TRANTYPEID_FLD] = 17; drowTransaction[MST_TransactionHistoryTable.USERNAME_FLD] = drowData[IV_AdjustmentTable.USERNAME_FLD]; drowTransaction[MST_TransactionHistoryTable.QUANTITY_FLD] = drowData[IV_AdjustmentTable.ADJUSTQUANTITY_FLD]; drowTransaction[MST_TransactionHistoryTable.MASTERLOCATIONID_FLD] = drowData[IV_AdjustmentTable.MASTERLOCATIONID_FLD]; drowTransaction[MST_TransactionHistoryTable.LOCATIONID_FLD] = drowData[IV_AdjustmentTable.LOCATIONID_FLD]; drowTransaction[MST_TransactionHistoryTable.BINID_FLD] = drowData[IV_AdjustmentTable.BINID_FLD]; drowTransaction[MST_TransactionHistoryTable.STOCKUMID_FLD] = drowData[IV_AdjustmentTable.STOCKUMID_FLD]; dstTransaction.Tables[0].Rows.Add(drowTransaction); #endregion } MST_TransactionHistoryDS dsTransactionHistory = new MST_TransactionHistoryDS(); dsTransactionHistory.UpdateDataSet(dstTransaction); } }
public void UpdateRelease(ArrayList parrMaster, DataSet pdstCommitDetail, DataSet pdstMasLocCache, DataSet pdstLocCache, DataSet pdstBinCache, DataSet pdstTransaction) { const string METHOD_NAME = THIS + ".UpdateRelease()"; SO_CommitInventoryMasterDS dsMaster = new SO_CommitInventoryMasterDS(); DataSet dstCopyOfDetail = pdstCommitDetail.Clone(); DataSet dstCopyOfTransaction = pdstTransaction.Clone(); UtilsBO boUtils = new UtilsBO(); foreach (SO_CommitInventoryMasterVO voMaster in parrMaster) { int intOldID = voMaster.CommitInventoryMasterID; voMaster.CommitmentNo = boUtils.GetNoByMask(SO_CommitInventoryMasterTable.TABLE_NAME, SO_CommitInventoryMasterTable.COMMITMENTNO_FLD, voMaster.CommitDate, Constants.YYYYMMDD0000); // add new master object and get new id voMaster.CommitInventoryMasterID = dsMaster.AddAndReturnID(voMaster); #region find all detail object to assign new master id DataRow[] drowDetails = pdstCommitDetail.Tables[0].Select(SO_CommitInventoryDetailTable.COMMITINVENTORYMASTERID_FLD + "=" + intOldID); foreach (DataRow drowDetail in drowDetails) { if (drowDetail.RowState != DataRowState.Deleted) { DataRow drowCommitDetail = dstCopyOfDetail.Tables[0].NewRow(); foreach (DataColumn dcol in dstCopyOfDetail.Tables[0].Columns) { drowCommitDetail[dcol.ColumnName] = drowDetail[dcol.ColumnName]; } drowCommitDetail[SO_CommitInventoryDetailTable.COMMITINVENTORYMASTERID_FLD] = voMaster.CommitInventoryMasterID; dstCopyOfDetail.Tables[0].Rows.Add(drowCommitDetail); } } #endregion #region find all transaction history object to assign new master id DataRow[] drowTransaction = pdstTransaction.Tables[0].Select(MST_TransactionHistoryTable.REFMASTERID_FLD + "=" + intOldID); foreach (DataRow drowDetail in drowTransaction) { if (drowDetail.RowState != DataRowState.Deleted) { DataRow drowNewTransaction = dstCopyOfTransaction.Tables[0].NewRow(); foreach (DataColumn dcol in dstCopyOfTransaction.Tables[0].Columns) { drowNewTransaction[dcol.ColumnName] = drowDetail[dcol.ColumnName]; } drowNewTransaction[MST_TransactionHistoryTable.REFMASTERID_FLD] = voMaster.CommitInventoryMasterID; dstCopyOfTransaction.Tables[0].Rows.Add(drowNewTransaction); } } #endregion } // update detail dataset SO_CommitInventoryDetailDS dsCommitDetail = new SO_CommitInventoryDetailDS(); dsCommitDetail.UpdateDataSet(dstCopyOfDetail); // update transaction history MST_TransactionHistoryDS dsTransaction = new MST_TransactionHistoryDS(); dsTransaction.UpdateDataSet(dstCopyOfTransaction); // update bin cache IV_BinCacheDS dsBinCache = new IV_BinCacheDS(); dsBinCache.UpdateDataSet(pdstBinCache); // update location cache IV_LocationCacheDS dsLocCache = new IV_LocationCacheDS(); dsLocCache.UpdateDataSet(pdstLocCache); // update master location cache IV_MasLocCacheDS dsMasLocCache = new IV_MasLocCacheDS(); dsMasLocCache.UpdateDataSet(pdstMasLocCache); }
public void DeleteReturnToVendor(int printReturnToVendorMasterID) { #region 1. Variable InventoryUtilsBO boInventory = new InventoryUtilsBO(); PO_ReturnToVendorMasterDS RTVMasterDS = new PO_ReturnToVendorMasterDS(); PO_ReturnToVendorDetailDS RTVDetailDS = new PO_ReturnToVendorDetailDS(); MST_TransactionHistoryDS TransactionDS = new MST_TransactionHistoryDS(); DataSet dsRTVDetail = null; PO_ReturnToVendorMasterVO voRTVMaster = new PO_ReturnToVendorMasterVO(); #endregion #region 2. Get Master Infomation voRTVMaster = (PO_ReturnToVendorMasterVO)RTVMasterDS.GetObjectVORTV(printReturnToVendorMasterID); if (voRTVMaster == null) { return; } #endregion #region 3. Get Detail Infomation dsRTVDetail = RTVDetailDS.ListReturnToVendorDetail(voRTVMaster.ReturnToVendorMasterID); #endregion #region 4. Update Inventory foreach (DataRow drow in dsRTVDetail.Tables[0].Rows) { //4.0 Variable int LocationID = (int)drow[PO_ReturnToVendorDetailTable.LOCATIONID_FLD]; int BinID = (int)drow[PO_ReturnToVendorDetailTable.BINID_FLD]; int ProductionID = (int)drow[PO_ReturnToVendorDetailTable.PRODUCTID_FLD]; decimal decQuantity = (decimal)drow[PO_ReturnToVendorDetailTable.QUANTITY_FLD]; //4.1 Update Add Item in Detail boInventory.UpdateAddOHQuantity(voRTVMaster.CCNID, voRTVMaster.MasterLocationID, LocationID, BinID, ProductionID, decQuantity, null, null); #region 4.2. Update Substract Bom Item if (voRTVMaster.ProductionLineId > 0) { //4.2.1.Get BomDetail by ProductID DataTable dtBomDetail = new ITM_BOMDS().ListBomDetailOfProduct((int)drow[ITM_ProductTable.PRODUCTID_FLD]); if (dtBomDetail.Rows.Count <= 0) { return; } //4.2.2.Get LocationID and BinID by ProductionLineID DataTable dtLocBin = new PO_ReturnToVendorMasterDS().GetLocationBin(voRTVMaster.ProductionLineId); int intProLocationID = Convert.ToInt32(dtLocBin.Rows[0][MST_BINTable.LOCATIONID_FLD]); int intProBinID = Convert.ToInt32(dtLocBin.Rows[0][MST_BINTable.BINID_FLD]); //4.2.3.Scan DataTable foreach (DataRow dataRow in dtBomDetail.Rows) { int intBomProductionID = (int)dataRow[ITM_BOMTable.COMPONENTID_FLD]; decimal decBomQuantity = (decimal)drow[PO_ReturnToVendorDetailTable.QUANTITY_FLD] * (decimal)dataRow[ITM_BOMTable.QUANTITY_FLD]; new InventoryUtilsBO().UpdateSubtractOHQuantity(voRTVMaster.CCNID, voRTVMaster.MasterLocationID, intProLocationID, intProBinID, intBomProductionID, decBomQuantity, string.Empty, string.Empty); } } #endregion } #endregion #region 5. Update TransactionHistory int OldTranTypeIDBom = new MST_TranTypeDS().GetTranTypeID(TransactionType.MATERIAL_ISSUE); int OldTranTypeIDDetail = new MST_TranTypeDS().GetTranTypeID(TransactionType.RETURN_TO_VENDOR); int InspStatus = 12; //5.1 Update TransactionHistory by Item detail TransactionDS.UpdateTranType(voRTVMaster.ReturnToVendorMasterID, OldTranTypeIDDetail, (int)TransactionTypeEnum.DeleteTransaction, InspStatus); //5.2 Update TransactionHistory by Bom Item TransactionDS.UpdateTranType(voRTVMaster.ReturnToVendorMasterID, OldTranTypeIDBom, (int)TransactionTypeEnum.DeleteTransaction, InspStatus); #endregion #region 6. Delete ReturnToVendor RTVMasterDS.DeleteReturnToVendor(voRTVMaster.ReturnToVendorMasterID); #endregion }
public DataTable ListTransactionHistory(DateTime pdtmStockTakingDate) { MST_TransactionHistoryDS dsTrans = new MST_TransactionHistoryDS(); return(dsTrans.ListForUpdateStockTaking(pdtmStockTakingDate)); }