Ejemplo 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);
        }
Ejemplo n.º 2
0
        public void UpdateIVMasterLocationCache(DataRow pdrowReturnedGoodsDetail, bool blnNewReturnedGood, PO_ReturnToVendorMasterVO pobjPO_ReturnToVendorMasterVO)
        {
            try
            {
                if (blnNewReturnedGood && pdrowReturnedGoodsDetail.RowState == DataRowState.Deleted)
                {
                    //in case of adding a new returned goods
                    //we don't care the deleted record
                    //we only care the other states : Modified and AddNew
                    return;
                }

                /*
                 *      MasterLocCache (CCN, MasLoc, CODE(PRODUCTID), AVG Cost, On Hand Qty)
                 *              AVG Cost = SO_CommitInventoryDetail.CostOfGoodsSold (SO -> SO Detail -> CommitInventoryDetail)
                 */
                IV_MasLocCacheDS objIV_MasLocCacheDS = new IV_MasLocCacheDS();

                bool blnHasProductID = objIV_MasLocCacheDS.HasProductID(int.Parse(pdrowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString()),
                                                                        pobjPO_ReturnToVendorMasterVO.CCNID,
                                                                        pobjPO_ReturnToVendorMasterVO.MasterLocationID);

                //Initialize the VO for the MasLocCache object
                IV_MasLocCacheVO objIV_MasLocCacheVO = new IV_MasLocCacheVO();
                objIV_MasLocCacheVO.ProductID        = int.Parse(pdrowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString());
                objIV_MasLocCacheVO.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
                objIV_MasLocCacheVO.CCNID            = pobjPO_ReturnToVendorMasterVO.CCNID;
                //objIV_MasLocCacheVO.AVGCost = (float)pintAVGCost;

                //first we implement the case of totally adding new returned goods record
                //incase of updating an existing returned goods record
                //according to Mr.Nguyen Manh Cuong ==> Implement later ==> because it is very very complicated
                if (blnNewReturnedGood)
                {
                    objIV_MasLocCacheVO.OHQuantity = Decimal.Parse(pdrowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD].ToString()) * (-1);
                }
                else
                {
                    //this one is implemented later
                }
                if (blnHasProductID)
                {
                    //update an existing product
                    objIV_MasLocCacheDS.UpdateReturnedGoods(objIV_MasLocCacheVO);
                }
                else
                {
                    //Insert a new product into inventory
                    objIV_MasLocCacheDS.AddReturnedGoods(objIV_MasLocCacheVO);
                }
            }
            catch (PCSDBException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 3
0
        private void UpdateIVMasterLocationCache(DataRow pdrowReturnedGoodsDetail, bool blnNewReturnedGood, PO_ReturnToVendorMasterVO pobjPO_ReturnToVendorMasterVO)
        {
            if (blnNewReturnedGood && pdrowReturnedGoodsDetail.RowState == DataRowState.Deleted)
            {
                return;
            }

            IV_MasLocCacheDS objIV_MasLocCacheDS = new IV_MasLocCacheDS();

            bool blnHasProductID = objIV_MasLocCacheDS.HasProductID(int.Parse(pdrowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString()),
                                                                    pobjPO_ReturnToVendorMasterVO.CCNID,
                                                                    pobjPO_ReturnToVendorMasterVO.MasterLocationID);

            //Initialize the VO for the MasLocCache object
            IV_MasLocCacheVO objIV_MasLocCacheVO = new IV_MasLocCacheVO();

            objIV_MasLocCacheVO.ProductID        = int.Parse(pdrowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString());
            objIV_MasLocCacheVO.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
            objIV_MasLocCacheVO.CCNID            = pobjPO_ReturnToVendorMasterVO.CCNID;
            //objIV_MasLocCacheVO.AVGCost = (float)pintAVGCost;

            //first we implement the case of totally adding new returned goods record
            //incase of updating an existing returned goods record
            //according to Mr.Nguyen Manh Cuong ==> Implement later ==> because it is very very complicated
            if (blnNewReturnedGood)
            {
                objIV_MasLocCacheVO.OHQuantity = Decimal.Parse(pdrowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD].ToString()) * (-1);
            }
            if (blnHasProductID)
            {
                objIV_MasLocCacheDS.UpdateReturnedGoods(objIV_MasLocCacheVO);
            }
            else
            {
                objIV_MasLocCacheDS.AddReturnedGoods(objIV_MasLocCacheVO);
            }
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        public DataTable GetOnhandCacheQuantity(int pintCCNID)
        {
            IV_MasLocCacheDS dsMasLocCache = new IV_MasLocCacheDS();

            return(dsMasLocCache.GetOnhandQuantity(pintCCNID));
        }
Ejemplo n.º 6
0
        public void UpdateTransactionHistory(DataRow pdrowReturnedGoodsDetail, bool blnNewReturnedGood, SO_ReturnedGoodsMasterVO pobjSO_ReturnedGoodsMasterVO, decimal pdcmAvgCost, decimal pdecUMRate)
        {
            const string RETURNED_GOODS_TRANSACTION_NAME = "SOReturnGoodsReceive";
            const string QASTATUS_STATUS_1 = "1";
            const string QASTATUS_STATUS_3 = "3";

            if (blnNewReturnedGood && pdrowReturnedGoodsDetail.RowState == DataRowState.Deleted)
            {
                //in case of adding a new returned goods
                //we don't care the deleted record
                //we only care the other states : Modified and AddNew
                return;
            }
            MST_TransactionHistoryVO objMST_TransactionHistoryVO = new MST_TransactionHistoryVO();

            objMST_TransactionHistoryVO.MasterLocationID = int.Parse(pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.MASTERLOCATIONID_FLD].ToString().Trim());
            if (pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.BINID_FLD].ToString().Trim() != String.Empty)
            {
                objMST_TransactionHistoryVO.BinID = int.Parse(pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.BINID_FLD].ToString().Trim());
            }
            objMST_TransactionHistoryVO.TransDate   = new UtilsBO().GetDBDate();
            objMST_TransactionHistoryVO.PostDate    = pobjSO_ReturnedGoodsMasterVO.TransDate;
            objMST_TransactionHistoryVO.RefMasterID = pobjSO_ReturnedGoodsMasterVO.ReturnedGoodsMasterID;
            objMST_TransactionHistoryVO.RefDetailID = int.Parse(pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.RETURNEDGOODSDETAILID_FLD].ToString().Trim());
            objMST_TransactionHistoryVO.Lot         = pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.LOT_FLD].ToString().Trim();
            objMST_TransactionHistoryVO.Serial      = pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.SERIAL_FLD].ToString().Trim();

            //try to get the inspection status
            if (pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.QASTATUS_FLD].ToString().Trim() == String.Empty)
            {
                objMST_TransactionHistoryVO.InspStatus = 0;
            }
            else
            {
                if (pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.QASTATUS_FLD].ToString().Trim() == QASTATUS_STATUS_1)
                {
                    objMST_TransactionHistoryVO.InspStatus = int.Parse(QASTATUS_STATUS_1);
                }
                else
                {
                    objMST_TransactionHistoryVO.InspStatus = int.Parse(QASTATUS_STATUS_3);
                }
            }

            objMST_TransactionHistoryVO.CCNID = pobjSO_ReturnedGoodsMasterVO.CCNID;

            //get the TransType ID
            MST_TranTypeDS objMST_TranTypeDS = new MST_TranTypeDS();

            objMST_TransactionHistoryVO.TranTypeID = objMST_TranTypeDS.GetIDFromCode(RETURNED_GOODS_TRANSACTION_NAME);


            objMST_TransactionHistoryVO.PartyID         = pobjSO_ReturnedGoodsMasterVO.PartyID;
            objMST_TransactionHistoryVO.PartyLocationID = pobjSO_ReturnedGoodsMasterVO.PartyLocationID;
            objMST_TransactionHistoryVO.LocationID      = int.Parse(pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.LOCATIONID_FLD].ToString().Trim());
            objMST_TransactionHistoryVO.ProductID       = int.Parse(pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.PRODUCTID_FLD].ToString().Trim());
            if (pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.UNITID_FLD].ToString().Trim() != String.Empty)
            {
                objMST_TransactionHistoryVO.StockUMID = int.Parse(pdrowReturnedGoodsDetail[ITM_ProductTable.STOCKUMID_FLD].ToString().Trim());
            }

            //calculate the NewAvg Cost
            //1.Get the OnHand Quantity from Master Location Cache
            //2.Calculate the Average Cost
            //3.Then NewAvgCost = (ReceiveQty + OnHanQty)/ ((ReceiveQty * AvgCost) + (OnHanQty * AvgCost))
            IV_MasLocCacheDS objIV_MasLocCacheDS = new IV_MasLocCacheDS();
            decimal          dcmOnHanQty         = objIV_MasLocCacheDS.GetOnHanQty(objMST_TransactionHistoryVO.ProductID, objMST_TransactionHistoryVO.CCNID, objMST_TransactionHistoryVO.MasterLocationID);

            if (pdcmAvgCost < 0)
            {
                pdcmAvgCost = 0;
            }
            decimal dcmReceiveQty = decimal.Parse(pdrowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.RECEIVEQUANTITY_FLD].ToString());

            try
            {
                objMST_TransactionHistoryVO.NewAvgCost = (dcmReceiveQty + dcmOnHanQty) / ((dcmReceiveQty * pdcmAvgCost) + (dcmOnHanQty * pdcmAvgCost));
            }
            catch
            {
                objMST_TransactionHistoryVO.NewAvgCost = 0;
            }

            objMST_TransactionHistoryVO.Quantity = dcmReceiveQty * pdecUMRate;

            new InventoryUtilsBO().SaveTransactionHistory(TransactionTypeEnum.SOReturnGoodsReceive.ToString(), (int)PurposeEnum.ReturnGoodReceipt, objMST_TransactionHistoryVO);
        }
Ejemplo n.º 7
0
        public DataTable GetBeginMRP(DateTime pdtmAsOfDate)
        {
            IV_MasLocCacheDS dsMasLoc = new IV_MasLocCacheDS();

            return(dsMasLoc.GetBeginQuantityOfNiguri(pdtmAsOfDate));
        }