コード例 #1
0
        /// <summary>
        /// DeleteInventoryAdjustmentTransaction
        /// </summary>
        /// <param name="printInventoryAdjustmentID"></param>
        /// <returns></returns>
        /// <author>CanhNV</author>
        /// <date>24-03-2007</date>

        public void DeleteInventoryAdjustmentTransaction(int printInventoryAdjustmentID)
        {
            // 0. Variable
            IV_AdjustmentDS          objAdjustmentDS      = new IV_AdjustmentDS();
            IV_AdjustmentVO          voAdjustment         = new IV_AdjustmentVO();
            MST_TransactionHistoryVO voTransactionHistory = new MST_TransactionHistoryVO();
            decimal decQuantity = 0;
            int     InspStatus  = 172;

            // 1. Get Infomation of InventoryAdjustment
            voAdjustment = (IV_AdjustmentVO)objAdjustmentDS.GetObjectVOByAdjustmentID(printInventoryAdjustmentID);

            // 2. Delete InventoryAdjustment
            objAdjustmentDS.DeleteByAdjustmentID(printInventoryAdjustmentID);

            #region Set voTransactionHistory value
            voTransactionHistory.TransDate        = new UtilsBO().GetDBDate();
            voTransactionHistory.TranTypeID       = new MST_TranTypeDS().GetTranTypeID(TransactionType.INVENTORY_ADJUSTMENT);
            voTransactionHistory.ProductID        = voAdjustment.ProductID;
            voTransactionHistory.CCNID            = voAdjustment.CCNID;
            voTransactionHistory.Lot              = voAdjustment.Lot;
            voTransactionHistory.StockUMID        = voAdjustment.StockUMID;
            voTransactionHistory.Serial           = voAdjustment.Serial;
            voTransactionHistory.PostDate         = voAdjustment.PostDate;
            voTransactionHistory.RefMasterID      = voAdjustment.AdjustmentID;
            voTransactionHistory.Quantity         = voAdjustment.AdjustQuantity;
            voTransactionHistory.MasterLocationID = voAdjustment.MasterLocationID;
            voTransactionHistory.LocationID       = voAdjustment.LocationID;
            voTransactionHistory.BinID            = voAdjustment.BinID;
            #endregion

            // 3. Update TransactionHistory
            new MST_TransactionHistoryDS().UpdateTranType(voAdjustment.AdjustmentID, voTransactionHistory.TranTypeID, (int)TransactionTypeEnum.DeleteTransaction, InspStatus);
        }
コード例 #2
0
        /// <summary>
        /// AddAndReturnID
        /// </summary>
        /// <param name="pobjObject"></param>
        /// <author>Trada</author>
        /// <date>Wednesday, July 27 2005</date>

        public int AddAndReturnID(object pobjObject)
        {
            string          METHODE_NAME    = "AddAndReturnID()";
            IV_AdjustmentVO voIV_Adjustment = (IV_AdjustmentVO)pobjObject;
            decimal         decRemain       = 0;
            //Check Available Quantity
            InventoryUtilsBO boInventoryUtils = new InventoryUtilsBO();
            DateTime         dtmCurrentDate   = new UtilsBO().GetDBDate().AddDays(1);

            if (voIV_Adjustment.AdjustQuantity < 0)
            {
                decRemain = boInventoryUtils.GetAvailableQtyByPostDate(dtmCurrentDate, voIV_Adjustment.CCNID, voIV_Adjustment.MasterLocationID, voIV_Adjustment.LocationID, voIV_Adjustment.BinID, voIV_Adjustment.ProductID)
                            + voIV_Adjustment.AdjustQuantity;

                if (decRemain < 0)
                {
                    throw new PCSBOException(ErrorCode.MESSAGE_IV_ADJUSTMENT_ADJUSTQTY_MUST_BE_SMALLER_THAN_AVAILABLEQTY, METHODE_NAME, new Exception());
                }
                else
                {
                    decimal decAvailableQty = boInventoryUtils.GetAvailableQtyByPostDate(new UtilsBO().GetDBDate(), voIV_Adjustment.CCNID, voIV_Adjustment.MasterLocationID, voIV_Adjustment.LocationID, voIV_Adjustment.BinID, voIV_Adjustment.ProductID);
                    if (-voIV_Adjustment.AdjustQuantity > decAvailableQty)
                    {
                        throw new PCSBOException(ErrorCode.MESSAGE_AVAILABLE_WAS_USED_AFTER_POSTDATE, METHODE_NAME, new Exception());
                    }
                }
            }

            //AddAndReturnID
            int             pintIV_AdjustmentID;
            IV_AdjustmentDS dsIV_Adjustment = new IV_AdjustmentDS();

            pintIV_AdjustmentID = dsIV_Adjustment.AddAndReturnID(pobjObject);

            //Update Add Onhand Quantity
            boInventoryUtils.UpdateAddOHQuantity(voIV_Adjustment.CCNID, voIV_Adjustment.MasterLocationID, voIV_Adjustment.LocationID, voIV_Adjustment.BinID,
                                                 voIV_Adjustment.ProductID, voIV_Adjustment.AdjustQuantity, voIV_Adjustment.Lot, voIV_Adjustment.Serial);
            //Save history to MST_TransactionHistory
            MST_TransactionHistoryVO voMST_TransactionHistory = new MST_TransactionHistoryVO();

            voMST_TransactionHistory.CCNID            = voIV_Adjustment.CCNID;
            voMST_TransactionHistory.MasterLocationID = voIV_Adjustment.MasterLocationID;
            voMST_TransactionHistory.LocationID       = voIV_Adjustment.LocationID;
            voMST_TransactionHistory.BinID            = voIV_Adjustment.BinID;
            voMST_TransactionHistory.ProductID        = voIV_Adjustment.ProductID;
            voMST_TransactionHistory.RefMasterID      = pintIV_AdjustmentID;
            voMST_TransactionHistory.TranTypeID       = new MST_TranTypeDS().GetTranTypeID(TransactionType.INVENTORY_ADJUSTMENT);
            voMST_TransactionHistory.PostDate         = voIV_Adjustment.PostDate;
            voMST_TransactionHistory.TransDate        = new UtilsBO().GetDBDate();
            voMST_TransactionHistory.Quantity         = voIV_Adjustment.AdjustQuantity;
            voMST_TransactionHistory.StockUMID        = voIV_Adjustment.StockUMID;
            boInventoryUtils.SaveTransactionHistory(TransactionType.INVENTORY_ADJUSTMENT, (int)PurposeEnum.Adjustment, voMST_TransactionHistory);
            return(pintIV_AdjustmentID);
        }
コード例 #3
0
        public void  CancelCommitment(DataTable pdtbData, int pintCCNID)
        {
            const string Cancel = "Cancel", True = "True";
            SO_CommitInventoryDetailDS dsCommitDetail = new SO_CommitInventoryDetailDS();
            UtilsBO boUtils = new UtilsBO();

            foreach (DataRow drowData in pdtbData.Rows)
            {
                if ((drowData.RowState == DataRowState.Modified) && (drowData[Cancel].ToString() == True))
                {
                    decimal decRate       = boUtils.GetUMRate(int.Parse(drowData[SO_CommitInventoryDetailTable.SELLINGUMID_FLD].ToString()), int.Parse(drowData[ITM_ProductTable.STOCKUMID_FLD].ToString()));
                    int     intProductID  = int.Parse(drowData[SO_CommitInventoryDetailTable.PRODUCTID_FLD].ToString());
                    int     intSOMasterID = int.Parse(drowData[SO_CommitInventoryDetailTable.COMMITINVENTORYMASTERID_FLD].ToString());
                    int     intSODetailID = int.Parse(drowData[SO_CommitInventoryDetailTable.COMMITINVENTORYDETAILID_FLD].ToString());
                    Decimal decQuantity   = Decimal.Parse(drowData[SO_CommitInventoryDetailTable.COMMITQUANTITY_FLD].ToString());
                    int     intMasLocID   = 0;
                    if (drowData[SO_CommitInventoryDetailTable.MASTERLOCATIONID_FLD].ToString() != string.Empty)
                    {
                        intMasLocID = int.Parse(drowData[SO_CommitInventoryDetailTable.MASTERLOCATIONID_FLD].ToString());
                    }
                    int intLocationID = 0;
                    if (drowData[SO_CommitInventoryDetailTable.LOCATIONID_FLD].ToString() != string.Empty)
                    {
                        intLocationID = int.Parse(drowData[SO_CommitInventoryDetailTable.LOCATIONID_FLD].ToString());
                    }
                    int intBinID = 0;
                    if (drowData[SO_CommitInventoryDetailTable.BINID_FLD].ToString() != string.Empty)
                    {
                        intBinID = int.Parse(drowData[SO_CommitInventoryDetailTable.BINID_FLD].ToString());
                    }
                    MST_TransactionHistoryVO voTransaction = new MST_TransactionHistoryVO();
                    voTransaction.CCNID            = pintCCNID;
                    voTransaction.MasterLocationID = intMasLocID;
                    voTransaction.ProductID        = intProductID;
                    voTransaction.LocationID       = intLocationID;
                    voTransaction.BinID            = intBinID;
                    voTransaction.RefMasterID      = intSOMasterID;
                    voTransaction.RefDetailID      = intSODetailID;
                    voTransaction.PostDate         = boUtils.GetDBDate();
                    voTransaction.TransDate        = boUtils.GetDBDate();
                    voTransaction.Quantity         = decQuantity * decRate;
                    voTransaction.TranTypeID       = new MST_TranTypeDS().GetTranTypeID(TransactionType.CANCEL_COMMITMENT);
                    voTransaction.StockUMID        = (int)drowData[SO_CommitInventoryDetailTable.STOCKUMID_FLD];

                    new InventoryUtilsBO().UpdateSubtractCommitQuantity(pintCCNID, intMasLocID, intLocationID, intBinID, intProductID, decQuantity * decRate, string.Empty, string.Empty);
                    dsCommitDetail.Delete(int.Parse(drowData[SO_CommitInventoryDetailTable.COMMITINVENTORYDETAILID_FLD].ToString()));
                    new InventoryUtilsBO().SaveTransactionHistory(TransactionType.CANCEL_COMMITMENT, (int)PurposeEnum.CancelCommitment, voTransaction);
                }
            }
            AutoDeleteCommitInventoryMaster();
        }
コード例 #4
0
        /// <summary>
        /// AddComponentScrapAndReturnID
        /// </summary>
        /// <param name="pobjCompScrapMasterVO"></param>
        /// <param name="pdstData"></param>
        /// <returns></returns>
        /// <author>Trada</author>
        /// <date>Friday, July 1 2005</date>

        public int AddComponentScrapAndReturnID(object pobjCompScrapMasterVO, DataSet pdstData)
        {
            //Add a new CompScrapMasterVO to PRO_ComponentScrapMaster Table
            int pintComponentScrapMasterID;
            PRO_ComponentScrapMasterDS dsComponentScrapMaster = new PRO_ComponentScrapMasterDS();

            pintComponentScrapMasterID = dsComponentScrapMaster.AddAndReturnID(pobjCompScrapMasterVO);
            PRO_ComponentScrapMasterVO voComponentScrapMaster = (PRO_ComponentScrapMasterVO)pobjCompScrapMasterVO;

            //UpdateDataSet into PRO_ComponentScrapDetail Table
            foreach (DataRow drow in pdstData.Tables[0].Rows)
            {
                drow[PRO_ComponentScrapDetailTable.COMPONENTSCRAPMASTERID_FLD] = pintComponentScrapMasterID;
            }

            foreach (DataRow drow in pdstData.Tables[0].Rows)
            {
                InventoryUtilsBO boInventoryUtils = new InventoryUtilsBO();
                //update add inventory
                boInventoryUtils.UpdateAddOHQuantity(voComponentScrapMaster.CCNID, voComponentScrapMaster.MasterLocationID,
                                                     int.Parse(drow[PRO_ComponentScrapDetailTable.TOLOCATIONID_FLD].ToString()),
                                                     int.Parse(drow[PRO_ComponentScrapDetailTable.TOBINID_FLD].ToString()),
                                                     int.Parse(drow[PRO_ComponentScrapDetailTable.COMPONENTID_FLD].ToString()),
                                                     decimal.Parse(
                                                         drow[PRO_ComponentScrapDetailTable.SCRAPQUANTITY_FLD].ToString()),
                                                     string.Empty, string.Empty);
                //update subtract inventory
                boInventoryUtils.UpdateSubtractOHQuantity(voComponentScrapMaster.CCNID,
                                                          voComponentScrapMaster.MasterLocationID,
                                                          int.Parse(
                                                              drow[PRO_ComponentScrapDetailTable.FROMLOCATIONID_FLD].ToString()),
                                                          int.Parse(
                                                              drow[PRO_ComponentScrapDetailTable.FROMBINID_FLD].ToString()),
                                                          int.Parse(
                                                              drow[PRO_ComponentScrapDetailTable.COMPONENTID_FLD].ToString()),
                                                          decimal.Parse(
                                                              drow[PRO_ComponentScrapDetailTable.SCRAPQUANTITY_FLD].ToString()),
                                                          string.Empty, string.Empty);
                //update transaction history
                MST_TransactionHistoryVO voTransactionHistory = new MST_TransactionHistoryVO();
                voTransactionHistory.CCNID            = voComponentScrapMaster.CCNID;
                voTransactionHistory.MasterLocationID = voComponentScrapMaster.MasterLocationID;
                voTransactionHistory.PostDate         = voComponentScrapMaster.PostDate;
                voTransactionHistory.TransDate        = (new UtilsBO()).GetDBDate();
                voTransactionHistory.RefMasterID      = pintComponentScrapMasterID;
                //voTransactionHistory.RefDetailID = int.Parse(drow[PRO_ComponentScrapDetailTable.COMPONENTSCRAPDETAILID_FLD].ToString());
                voTransactionHistory.LocationID = int.Parse(drow[PRO_ComponentScrapDetailTable.FROMLOCATIONID_FLD].ToString());
                voTransactionHistory.BinID      = int.Parse(drow[PRO_ComponentScrapDetailTable.FROMBINID_FLD].ToString());
                voTransactionHistory.Quantity   =
                    -decimal.Parse(drow[PRO_ComponentScrapDetailTable.SCRAPQUANTITY_FLD].ToString());
                voTransactionHistory.ProductID  = int.Parse(drow[PRO_ComponentScrapDetailTable.COMPONENTID_FLD].ToString());
                voTransactionHistory.PurposeID  = (int)PurposeEnum.Scrap;
                voTransactionHistory.TranTypeID =
                    new MST_TranTypeDS().GetTranTypeID(TransactionTypeEnum.IVMiscellaneousIssue.ToString());
                voTransactionHistory.StockUMID = int.Parse(drow[ITM_ProductTable.STOCKUMID_FLD].ToString());
                boInventoryUtils.SaveTransactionHistory(TransactionTypeEnum.IVMiscellaneousIssue.ToString(),
                                                        (int)PurposeEnum.Scrap, voTransactionHistory);
                voTransactionHistory.LocationID = int.Parse(drow[PRO_ComponentScrapDetailTable.TOLOCATIONID_FLD].ToString());
                voTransactionHistory.BinID      = int.Parse(drow[PRO_ComponentScrapDetailTable.TOBINID_FLD].ToString());
                voTransactionHistory.Quantity   = decimal.Parse(drow[PRO_ComponentScrapDetailTable.SCRAPQUANTITY_FLD].ToString());
                boInventoryUtils.SaveTransactionHistory(TransactionTypeEnum.IVMiscellaneousIssue.ToString(),
                                                        (int)PurposeEnum.Scrap, voTransactionHistory);
            }
            PRO_ComponentScrapDetailDS dsComponentScrapDetail = new PRO_ComponentScrapDetailDS();

            dsComponentScrapDetail.UpdateDataSet(pdstData);
            return(pintComponentScrapMasterID);
        }
コード例 #5
0
        public int AddAndReturnID(object pobjMasterVO, DataSet pdstData)
        {
            CST_RecoverMaterialMasterVO voRecoverMaterialMaster = new CST_RecoverMaterialMasterVO();

            voRecoverMaterialMaster = (CST_RecoverMaterialMasterVO)pobjMasterVO;
            int intMasterID = new CST_RecoverMaterialMasterDS().AddAndReturnID(pobjMasterVO);

            //update Detail
            for (int i = 0; i < pdstData.Tables[0].Rows.Count; i++)
            {
                if (pdstData.Tables[0].Rows[i].RowState == DataRowState.Deleted)
                {
                    continue;
                }
                pdstData.Tables[0].Rows[i][CST_RecoverMaterialDetailTable.RECOVERMATERIALMASTERID_FLD] = intMasterID;
            }
            new CST_RecoverMaterialDetailDS().UpdateDataSet(pdstData);

            //subtract
            InventoryUtilsBO boInventoryUtils = new InventoryUtilsBO();

            boInventoryUtils.UpdateSubtractOHQuantity(voRecoverMaterialMaster.CCNID, voRecoverMaterialMaster.MasterLocationID, voRecoverMaterialMaster.FromLocationID,
                                                      voRecoverMaterialMaster.FromBinID, voRecoverMaterialMaster.ProductID, voRecoverMaterialMaster.Quantity, string.Empty, string.Empty);
            //update Transaction history

            MST_TransactionHistoryVO voMST_TransactionHistory = new MST_TransactionHistoryVO();

            voMST_TransactionHistory.CCNID            = voRecoverMaterialMaster.CCNID;
            voMST_TransactionHistory.MasterLocationID = voRecoverMaterialMaster.MasterLocationID;
            voMST_TransactionHistory.LocationID       = voRecoverMaterialMaster.FromLocationID;
            voMST_TransactionHistory.BinID            = voRecoverMaterialMaster.FromBinID;
            voMST_TransactionHistory.ProductID        = voRecoverMaterialMaster.ProductID;
            voMST_TransactionHistory.RefMasterID      = intMasterID;
            voMST_TransactionHistory.PostDate         = voRecoverMaterialMaster.PostDate;
            voMST_TransactionHistory.TransDate        = new UtilsBO().GetDBDate();
            voMST_TransactionHistory.Quantity         = -voRecoverMaterialMaster.Quantity;
            boInventoryUtils.SaveTransactionHistory(TransactionType.RECOVERABLE_MATERIAL, (int)PurposeEnum.ThanhLyLinhKienSauHuy, voMST_TransactionHistory);
            //add
            foreach (DataRow drow in pdstData.Tables[0].Rows)
            {
                if ((drow[CST_RecoverMaterialDetailTable.TOLOCATIONID_FLD].ToString() != string.Empty) &&
                    (drow[CST_RecoverMaterialDetailTable.TOBINID_FLD].ToString() != string.Empty))
                {
                    boInventoryUtils.UpdateAddOHQuantity(voRecoverMaterialMaster.CCNID, voRecoverMaterialMaster.MasterLocationID,
                                                         int.Parse(drow[CST_RecoverMaterialDetailTable.TOLOCATIONID_FLD].ToString()),
                                                         int.Parse(drow[CST_RecoverMaterialDetailTable.TOBINID_FLD].ToString()), int.Parse(drow[CST_RecoverMaterialDetailTable.PRODUCTID_FLD].ToString()),
                                                         decimal.Parse(drow[CST_RecoverMaterialDetailTable.RECOVERQUANTITY_FLD].ToString()), string.Empty, string.Empty);
                    //Save history to MST_TransactionHistory
                    voMST_TransactionHistory                  = new MST_TransactionHistoryVO();
                    voMST_TransactionHistory.CCNID            = voRecoverMaterialMaster.CCNID;
                    voMST_TransactionHistory.MasterLocationID = voRecoverMaterialMaster.MasterLocationID;
                    voMST_TransactionHistory.LocationID       = int.Parse(drow[CST_RecoverMaterialDetailTable.TOLOCATIONID_FLD].ToString());
                    voMST_TransactionHistory.BinID            = int.Parse(drow[CST_RecoverMaterialDetailTable.TOBINID_FLD].ToString());
                    voMST_TransactionHistory.ProductID        = int.Parse(drow[CST_RecoverMaterialDetailTable.PRODUCTID_FLD].ToString());
                    voMST_TransactionHistory.RefMasterID      = intMasterID;
                    //Se update lai TrantypeID
                    //voMST_TransactionHistory.TranTypeID = (int)TransactionTypeEnum.IVMiscellaneousIssue;
                    voMST_TransactionHistory.PostDate  = voRecoverMaterialMaster.PostDate;
                    voMST_TransactionHistory.TransDate = new UtilsBO().GetDBDate();
                    voMST_TransactionHistory.Quantity  = decimal.Parse(drow[CST_RecoverMaterialDetailTable.RECOVERQUANTITY_FLD].ToString());
                    voMST_TransactionHistory.StockUMID = int.Parse(drow[CST_RecoverMaterialDetailTable.UNITOFMEASUREID_FLD].ToString());
                    boInventoryUtils.SaveTransactionHistory(TransactionType.RECOVERABLE_MATERIAL, (int)PurposeEnum.TanDungLinhKienSauHuy, voMST_TransactionHistory);
                }
            }
            return(intMasterID);
        }
コード例 #6
0
        public void UpdateInventoryInfor(DataSet dsReturnToVendorDetail, bool blnNewRecord, PO_ReturnToVendorMasterVO pobjPO_ReturnToVendorMasterVO)
        {
            const string AVG_COST_FLD = "AVGCost";

            try
            {
                UtilsBO boUtils = new UtilsBO();
                foreach (DataRow drowReturnedGoodsDetail in dsReturnToVendorDetail.Tables[0].Rows)
                {
                    if (blnNewRecord && drowReturnedGoodsDetail.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
                        continue;
                    }
                    int     intStockUMID  = int.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.STOCKUMID_FLD].ToString());
                    int     intBuyingUMID = int.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.BUYINGUMID_FLD].ToString());
                    Decimal decUMRate     = boUtils.GetUMRate(intBuyingUMID, intStockUMID);
                    if (decUMRate != 0)
                    {
                        drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD] = Decimal.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD].ToString()) * decUMRate;
                    }
                    else
                    {
                        throw new PCSException(ErrorCode.MESSAGE_MUST_SET_UMRATE, string.Empty, new Exception());
                    }
                    //calculate the avergae cost

                    #region Update IV_BinCache
                    if (drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.BINID_FLD].ToString().Trim() != String.Empty)
                    {
                        //update bin cache
                        UpdateIVBinCache(drowReturnedGoodsDetail, blnNewRecord, pobjPO_ReturnToVendorMasterVO);
                    }
                    #endregion

                    #region update into the IV_locationCache
                    UpdateIVLocationCache(drowReturnedGoodsDetail, blnNewRecord, pobjPO_ReturnToVendorMasterVO);
                    #endregion

                    #region Update into the IV_MasterLocationCache
                    UpdateIVMasterLocationCache(drowReturnedGoodsDetail, blnNewRecord, pobjPO_ReturnToVendorMasterVO);
                    #endregion


                    #region UPDATE INTO TABLE MST_TransactionHistory

                    /*
                     * update MST_TransactionHistory
                     *
                     */
                    //UpdateTransactionHistory(drowReturnedGoodsDetail,blnNewRecord,pobjPO_ReturnToVendorMasterVO);
                    #endregion

                    #region INSERT INTO TABLE IV_CostHistory
                    if (drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.LOT_FLD].ToString().Trim() != String.Empty)
                    {
                        UpdateCostHistory(drowReturnedGoodsDetail, blnNewRecord, pobjPO_ReturnToVendorMasterVO);
                    }
                    #endregion

                    #region Add By CanhNV: {Update add Inventory for Bom tree}

                    if (pobjPO_ReturnToVendorMasterVO.ProductionLineId > 0)
                    {
                        //1.Get BomDetail by ProductID
                        DataTable dtBomDetail = new ITM_BOMDS().ListBomDetailOfProduct((int)drowReturnedGoodsDetail[ITM_ProductTable.PRODUCTID_FLD]);
                        if (dtBomDetail.Rows.Count <= 0)
                        {
                            return;
                        }

                        //2.Get LocationID and BinID by ProductionLineID
                        DataTable dtLocBin = new PO_ReturnToVendorMasterDS().GetLocationBin(pobjPO_ReturnToVendorMasterVO.ProductionLineId);
                        if (dtLocBin.Rows.Count == 0)
                        {
                            throw new PCSBOException(ErrorCode.MESSAGE_MUST_SELECT_LOCATION, string.Empty, new Exception());
                        }
                        int intProLocationID = Convert.ToInt32(dtLocBin.Rows[0][MST_BINTable.LOCATIONID_FLD]);
                        int intProBinID      = Convert.ToInt32(dtLocBin.Rows[0][MST_BINTable.BINID_FLD]);

                        //3.Scan DataTable
                        foreach (DataRow dataRow in dtBomDetail.Rows)
                        {
                            //3.1.Set value to voTransactionHistory
                            MST_TransactionHistoryVO voTransactionHistory = new MST_TransactionHistoryVO();
                            voTransactionHistory.TransDate  = new UtilsBO().GetDBDate();
                            voTransactionHistory.TranTypeID = new MST_TranTypeDS().GetTranTypeID(TransactionType.MATERIAL_ISSUE);
                            voTransactionHistory.InspStatus = new MST_TranTypeDS().GetTranTypeID(TransactionType.RETURN_TO_VENDOR);
                            voTransactionHistory.ProductID  = (int)dataRow[ITM_BOMTable.COMPONENTID_FLD];
                            voTransactionHistory.CCNID      = pobjPO_ReturnToVendorMasterVO.CCNID;
                            voTransactionHistory.PostDate   = pobjPO_ReturnToVendorMasterVO.PostDate;

                            voTransactionHistory.RefMasterID = pobjPO_ReturnToVendorMasterVO.ReturnToVendorMasterID;
                            voTransactionHistory.RefDetailID = (int)drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.RETURNTOVENDORDETAILID_FLD];

                            voTransactionHistory.Quantity = -1 * (decimal)drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD] * (decimal)dataRow[ITM_BOMTable.QUANTITY_FLD];
                            decimal decQuantity = voTransactionHistory.Quantity;

                            voTransactionHistory.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
                            voTransactionHistory.LocationID       = intProLocationID;
                            voTransactionHistory.BinID            = intProBinID;

                            //3.2.Update Inventory
                            new InventoryUtilsBO().UpdateSubtractOHQuantity(voTransactionHistory.CCNID,
                                                                            voTransactionHistory.MasterLocationID,
                                                                            voTransactionHistory.LocationID,
                                                                            voTransactionHistory.BinID,
                                                                            voTransactionHistory.ProductID,
                                                                            decQuantity,
                                                                            string.Empty,
                                                                            string.Empty);


                            //3.3.Update TransactionHistory
                            new InventoryUtilsBO().SaveTransactionHistory(TransactionType.MATERIAL_ISSUE, (int)PurposeEnum.ReturnToVendor, voTransactionHistory);
                        }
                    }

                    #endregion
                }
            }
            catch (PCSDBException ex)
            {
                throw ex;
            }
            catch (PCSException ex)
            {
                throw ex;
            }
        }
コード例 #7
0
        public int AddNewReturnToVendor(PO_ReturnToVendorMasterVO pobjReturnToVendorMasterVO, DataSet pdstDetail)
        {
            try
            {
                //check onhand quantity
                CheckOnHandQty(pdstDetail, pobjReturnToVendorMasterVO);

                //store the master first
                PO_ReturnToVendorMasterDS objPO_ReturnToVendorMasterDS = new PO_ReturnToVendorMasterDS();
                PO_ReturnToVendorDetailDS objPO_ReturnToVendorDetailDS = new PO_ReturnToVendorDetailDS();
                //first we need to add to the master and return the latest ID
                int intReturnToVendorMasterID = objPO_ReturnToVendorMasterDS.AddNewReturnToVendor(pobjReturnToVendorMasterVO);

                //assign this ID into the detail
                //update the dataset all of this id
                for (int i = 0; i < pdstDetail.Tables[0].Rows.Count; i++)
                {
                    if (pdstDetail.Tables[0].Rows[i].RowState != DataRowState.Deleted)
                    {
                        pdstDetail.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.RETURNTOVENDORMASTERID_FLD] = intReturnToVendorMasterID;
                    }
                }
                //Add this database into database
                if (pobjReturnToVendorMasterVO.PurchaseOrderMasterID != 0)
                {
                    objPO_ReturnToVendorDetailDS.UpdateReturnToVendorDataSet(pdstDetail, intReturnToVendorMasterID);
                }
                else if (pobjReturnToVendorMasterVO.InvoiceMasterID != 0)
                {
                    objPO_ReturnToVendorDetailDS.UpdateDataSetForInvoice(pdstDetail);
                }

                // Add value to pobjReturnToVendorMasterVO
                pobjReturnToVendorMasterVO.ReturnToVendorMasterID = intReturnToVendorMasterID;

                //Update inventory data
                UpdateInventoryInfor(pdstDetail, true, pobjReturnToVendorMasterVO);
                // HACK: Trada 27-12-2005
                //Update MST_TransactionHistory
                new UtilsBO();
                InventoryUtilsBO          boInventoryUtils       = new InventoryUtilsBO();
                PO_ReturnToVendorDetailDS dsReturnToVendorDetail = new PO_ReturnToVendorDetailDS();
                pdstDetail = dsReturnToVendorDetail.ListReturnToVendorDetail(intReturnToVendorMasterID);
                foreach (DataRow drow in pdstDetail.Tables[0].Rows)
                {
                    MST_TransactionHistoryVO voTransactionHistory = new MST_TransactionHistoryVO();

                    voTransactionHistory.CCNID            = pobjReturnToVendorMasterVO.CCNID;
                    voTransactionHistory.MasterLocationID = pobjReturnToVendorMasterVO.MasterLocationID;
                    voTransactionHistory.PartyID          = pobjReturnToVendorMasterVO.PartyID;
                    voTransactionHistory.PostDate         = pobjReturnToVendorMasterVO.PostDate;
                    voTransactionHistory.PartyLocationID  = pobjReturnToVendorMasterVO.PurchaseLocID;

                    //HACK: Modify by Tuan TQ 03 Apr, 2006. Fix error no. 3279
                    //Rem by Tuan TQ: 03 Apr, 2006
                    //voTransactionHistory.RefMasterID = intReturnToVendorMasterID;

                    //Rem by Tuan TQ: 15 June, 2006
                    //voTransactionHistory.RefMasterID = pobjReturnToVendorMasterVO.PurchaseOrderMasterID;

                    //HACK: Modified by Tuan TQ: 15 June, 2006. RefMasterID must be RTV MasterID (for Stock Card report)
                    voTransactionHistory.RefMasterID = intReturnToVendorMasterID;
                    //end hack

                    //End Hack

                    voTransactionHistory.LocationID = int.Parse(drow[PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString());
                    if (drow[PO_ReturnToVendorDetailTable.BINID_FLD].ToString() != string.Empty)
                    {
                        voTransactionHistory.BinID = int.Parse(drow[PO_ReturnToVendorDetailTable.BINID_FLD].ToString());
                    }
                    if (drow[PO_ReturnToVendorDetailTable.RETURNTOVENDORDETAILID_FLD].ToString() != string.Empty)
                    {
                        voTransactionHistory.RefDetailID = int.Parse(drow[PO_ReturnToVendorDetailTable.RETURNTOVENDORDETAILID_FLD].ToString());
                    }
                    if (drow[PO_ReturnToVendorDetailTable.LOT_FLD].ToString() != string.Empty)
                    {
                        voTransactionHistory.Lot = drow[PO_ReturnToVendorDetailTable.LOT_FLD].ToString();
                    }
                    if (drow[PO_ReturnToVendorDetailTable.SERIAL_FLD].ToString() != string.Empty)
                    {
                        voTransactionHistory.Serial = drow[PO_ReturnToVendorDetailTable.SERIAL_FLD].ToString();
                    }

                    if (drow[PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString() != string.Empty)
                    {
                        voTransactionHistory.ProductID = int.Parse(drow[PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString());
                    }

                    if (drow[PO_ReturnToVendorDetailTable.STOCKUMID_FLD].ToString() != string.Empty)
                    {
                        voTransactionHistory.StockUMID = int.Parse(drow[PO_ReturnToVendorDetailTable.STOCKUMID_FLD].ToString());
                    }

                    voTransactionHistory.Quantity = Decimal.Parse(drow[PO_ReturnToVendorDetailTable.QUANTITY_FLD].ToString());

                    voTransactionHistory.TransDate = new UtilsBO().GetDBDate();

                    boInventoryUtils.SaveTransactionHistory(Constants.TRANTYPE_PORETURNTOVENDOR, (int)PurposeEnum.ReturnToVendor, voTransactionHistory);
                }
                // END: Trada 27-12-2005
                return(intReturnToVendorMasterID);
            }
            catch (PCSBOException ex)
            {
                throw ex;
            }
            catch (PCSDBException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #8
0
        private void UpdateInventoryInfor(DataSet dsReturnToVendorDetail, bool blnNewRecord, PO_ReturnToVendorMasterVO pobjPO_ReturnToVendorMasterVO)
        {
            UtilsBO boUtils = new UtilsBO();

            foreach (DataRow drowReturnedGoodsDetail in dsReturnToVendorDetail.Tables[0].Rows)
            {
                if (blnNewRecord && drowReturnedGoodsDetail.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                int     intStockUMID  = int.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.STOCKUMID_FLD].ToString());
                int     intBuyingUMID = int.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.BUYINGUMID_FLD].ToString());
                Decimal decUMRate     = boUtils.GetUMRate(intBuyingUMID, intStockUMID);
                if (decUMRate != 0)
                {
                    drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD] = Decimal.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD].ToString()) * decUMRate;
                }
                else
                {
                    throw new PCSException(ErrorCode.MESSAGE_MUST_SET_UMRATE, string.Empty, new Exception());
                }

                #region Update IV_BinCache
                if (drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.BINID_FLD].ToString().Trim() != String.Empty)
                {
                    UpdateIVBinCache(drowReturnedGoodsDetail, blnNewRecord, pobjPO_ReturnToVendorMasterVO);
                }
                #endregion

                #region update into the IV_locationCache
                UpdateIVLocationCache(drowReturnedGoodsDetail, blnNewRecord, pobjPO_ReturnToVendorMasterVO);
                #endregion

                #region Update into the IV_MasterLocationCache
                UpdateIVMasterLocationCache(drowReturnedGoodsDetail, blnNewRecord, pobjPO_ReturnToVendorMasterVO);
                #endregion

                #region Add By CanhNV: {Update add Inventory for Bom tree}

                if (pobjPO_ReturnToVendorMasterVO.ProductionLineId > 0)
                {
                    //1.Get BomDetail by ProductID
                    DataTable dtBomDetail = new ITM_BOMDS().ListBomDetailOfProduct((int)drowReturnedGoodsDetail[ITM_ProductTable.PRODUCTID_FLD]);
                    if (dtBomDetail.Rows.Count <= 0)
                    {
                        return;
                    }

                    //2.Get LocationID and BinID by ProductionLineID
                    DataTable dtLocBin = new PO_ReturnToVendorMasterDS().GetLocationBin(pobjPO_ReturnToVendorMasterVO.ProductionLineId);
                    if (dtLocBin.Rows.Count == 0)
                    {
                        throw new PCSBOException(ErrorCode.MESSAGE_MUST_SELECT_LOCATION, string.Empty, new Exception());
                    }
                    int intProLocationID = Convert.ToInt32(dtLocBin.Rows[0][MST_BINTable.LOCATIONID_FLD]);
                    int intProBinID      = Convert.ToInt32(dtLocBin.Rows[0][MST_BINTable.BINID_FLD]);

                    //3.Scan DataTable
                    foreach (DataRow dataRow in dtBomDetail.Rows)
                    {
                        //3.1.Set value to voTransactionHistory
                        MST_TransactionHistoryVO voTransactionHistory = new MST_TransactionHistoryVO();
                        voTransactionHistory.TransDate  = new UtilsBO().GetDBDate();
                        voTransactionHistory.TranTypeID = new MST_TranTypeDS().GetTranTypeID(TransactionTypeEnum.IVMiscellaneousIssue.ToString());
                        voTransactionHistory.InspStatus = new MST_TranTypeDS().GetTranTypeID(TransactionTypeEnum.POReturnToVendor.ToString());
                        voTransactionHistory.ProductID  = (int)dataRow[ITM_BOMTable.COMPONENTID_FLD];
                        voTransactionHistory.CCNID      = pobjPO_ReturnToVendorMasterVO.CCNID;
                        voTransactionHistory.PostDate   = pobjPO_ReturnToVendorMasterVO.PostDate;

                        voTransactionHistory.RefMasterID = pobjPO_ReturnToVendorMasterVO.ReturnToVendorMasterID;
                        try
                        {
                            voTransactionHistory.RefDetailID = (int)drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.RETURNTOVENDORDETAILID_FLD];
                        }
                        catch {}

                        voTransactionHistory.Quantity = (decimal)drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.QUANTITY_FLD] * (decimal)dataRow[ITM_BOMTable.QUANTITY_FLD];
                        decimal decQuantity = voTransactionHistory.Quantity;

                        voTransactionHistory.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
                        voTransactionHistory.LocationID       = intProLocationID;
                        voTransactionHistory.BinID            = intProBinID;

                        //3.2.Update Inventory
                        //
                        new InventoryUtilsBO().UpdateAddOHQuantity(voTransactionHistory.CCNID,
                                                                   voTransactionHistory.MasterLocationID,
                                                                   voTransactionHistory.LocationID,
                                                                   voTransactionHistory.BinID,
                                                                   voTransactionHistory.ProductID,
                                                                   decQuantity,
                                                                   string.Empty,
                                                                   string.Empty);


                        //3.3.Update TransactionHistory
                        new InventoryUtilsBO().SaveTransactionHistory(TransactionTypeEnum.IVMiscellaneousIssue.ToString(), (int)PurposeEnum.ReturnToVendor, voTransactionHistory);
                    }
                }

                #endregion
            }
        }
コード例 #9
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);
        }