Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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
        }
Exemplo n.º 5
0
        public DataTable ListTransactionHistory(DateTime pdtmStockTakingDate)
        {
            MST_TransactionHistoryDS dsTrans = new MST_TransactionHistoryDS();

            return(dsTrans.ListForUpdateStockTaking(pdtmStockTakingDate));
        }