예제 #1
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);
        }
예제 #2
0
        public void DeleteReturnToVendor(PO_ReturnToVendorMasterVO pvoReturnToVendorMaster, DataSet pdstReturnToVendorDetail)
        {
            InventoryUtilsBO boInven = new InventoryUtilsBO();

            //ReturnToVendorBO objReturnToVendorBO = new ReturnToVendorBO();
            //DataSet dstReturnToVendorDetail = GetReturnGoodsDetail(pintReturnToVendorMasterID);
            foreach (DataRow drowDetail in pdstReturnToVendorDetail.Tables[0].Rows)
            {
                boInven.UpdateAddOHQuantity(pvoReturnToVendorMaster.CCNID, pvoReturnToVendorMaster.MasterLocationID, (int)drowDetail["LocationID"], (int)drowDetail["BinID"], (int)drowDetail["ProductID"], (decimal)drowDetail["Quantity"], string.Empty, string.Empty);
            }
            (new PO_ReturnToVendorMasterDS()).DeleteReturnToVendor(pvoReturnToVendorMaster.ReturnToVendorMasterID);
        }
예제 #3
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);
     }
 }
예제 #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 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
        }
예제 #7
0
        private void CheckOnHandQty(DataSet dstData, PO_ReturnToVendorMasterVO pobjPO_ReturnToVendorMasterVO)
        {
            const string METHOD_NAME = THIS + ".GetOnhandQty()";

            new IV_BinCacheDS();
            IV_LocationCacheDS objIV_LocationCacheDS = new IV_LocationCacheDS();
            InventoryUtilsBO   boIVUtils             = new InventoryUtilsBO();

            new MST_UMRateDS();
            decimal dcmOnHandQty, decOnHandCurrent = 0;

            try {
                for (int i = 0; i < dstData.Tables[0].Rows.Count; i++)
                {
                    if (dstData.Tables[0].Rows[i].RowState != DataRowState.Deleted)
                    {
                        //dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.RETURNTOVENDORMASTERID_FLD] = intReturnToVendorMasterID;
                        //get Quantity, location, bin, umrate
                        string strBINID = dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.BINID_FLD].ToString().Trim();
                        dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString().Trim();
                        if (strBINID != String.Empty)
                        {
                            IV_BinCacheVO objIV_BinCacheVO = new IV_BinCacheVO();
                            objIV_BinCacheVO.ProductID        = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString());
                            objIV_BinCacheVO.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
                            objIV_BinCacheVO.CCNID            = pobjPO_ReturnToVendorMasterVO.CCNID;
                            objIV_BinCacheVO.LocationID       = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString());
                            objIV_BinCacheVO.BinID            = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.BINID_FLD].ToString());
                            //get onhand qty from Bin Cache
                            if (dstData.Tables[0].Rows[i][ITM_ProductTable.LOTCONTROL_FLD].ToString() != true.ToString())
                            {
//								dcmOnHandQty = boIVUtils.GetAvailableQtyByPostDate(pobjPO_ReturnToVendorMasterVO.PostDate, objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
//									objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
//								decOnHandCurrent = boIVUtils.GetAvailableQtyByPostDate(new UtilsBO().GetDBDate(), objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
//									objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
                                dcmOnHandQty = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
                                                                                   objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
                                decOnHandCurrent = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
                                                                                       objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
                            }
                            else
                            {
                                objIV_BinCacheVO.Lot = dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOT_FLD].ToString();
//								dcmOnHandQty = boIVUtils.GetAvailableQtyByPostDate(pobjPO_ReturnToVendorMasterVO.PostDate, objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
//									objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
                                dcmOnHandQty = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
                                                                                   objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
                            }
                        }
                        else
                        {
                            IV_LocationCacheVO objIV_LocationCacheVO = new IV_LocationCacheVO();
                            objIV_LocationCacheVO.ProductID        = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString());
                            objIV_LocationCacheVO.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
                            objIV_LocationCacheVO.CCNID            = pobjPO_ReturnToVendorMasterVO.CCNID;
                            objIV_LocationCacheVO.LocationID       = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString());

                            //get onhand qty from location cache
                            if (dstData.Tables[0].Rows[i][ITM_ProductTable.LOTCONTROL_FLD].ToString() != true.ToString())
                            {
//								dcmOnHandQty =  boIVUtils.GetAvailableQtyByPostDate(pobjPO_ReturnToVendorMasterVO.PostDate, objIV_LocationCacheVO.CCNID, objIV_LocationCacheVO.MasterLocationID,
//									objIV_LocationCacheVO.LocationID, 0, objIV_LocationCacheVO.ProductID);
//								decOnHandCurrent =  boIVUtils.GetAvailableQtyByPostDate(new UtilsBO().GetDBDate(), objIV_LocationCacheVO.CCNID, objIV_LocationCacheVO.MasterLocationID,
//									objIV_LocationCacheVO.LocationID, 0, objIV_LocationCacheVO.ProductID);
                                dcmOnHandQty = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_LocationCacheVO.CCNID, objIV_LocationCacheVO.MasterLocationID,
                                                                                   objIV_LocationCacheVO.LocationID, 0, objIV_LocationCacheVO.ProductID);
                                decOnHandCurrent = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_LocationCacheVO.CCNID, objIV_LocationCacheVO.MasterLocationID,
                                                                                       objIV_LocationCacheVO.LocationID, 0, objIV_LocationCacheVO.ProductID);
                            }
                            else
                            {
                                objIV_LocationCacheVO.Lot = dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOT_FLD].ToString();
                                dcmOnHandQty = objIV_LocationCacheDS.GetAvailableQuantityByLot(objIV_LocationCacheVO.CCNID, objIV_LocationCacheVO.MasterLocationID,
                                                                                               objIV_LocationCacheVO.LocationID, objIV_LocationCacheVO.Lot, objIV_LocationCacheVO.ProductID);
                            }
                        }
                        decimal dcmUMRate = 1;
                        if (pobjPO_ReturnToVendorMasterVO.PurchaseOrderMasterID != 0)
                        {
                            //get the UMRate

                            if (dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.UMRATE_FLD].ToString() != String.Empty)
                            {
                                dcmUMRate = decimal.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.UMRATE_FLD].ToString());
                            }
                            else
                            {
                                dcmUMRate = 1;
                            }
                        }
                        decimal dcmReturnQuantity = decimal.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.QUANTITY_FLD].ToString());
                        if ((dcmOnHandQty - (dcmReturnQuantity * dcmUMRate)) < 0)
                        {
                            throw new PCSBOException(ErrorCode.MESSAGE_RGA_OVERONHANDQTY, i.ToString(), null);
                        }
                        else
                        {
                            if (decOnHandCurrent < (dcmReturnQuantity * dcmUMRate))
                            {
                                throw new PCSBOException(ErrorCode.MESSAGE_AVAILABLE_WAS_USED_AFTER_POSTDATE, i.ToString(), null);
                            }
                        }
                    }
                }
            }
            catch (PCSBOException ex)
            {
                throw ex;
            }
            catch (PCSDBException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #8
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;
            }
        }
예제 #9
0
        private void CheckOnHandQty(DataSet dstData, PO_ReturnToVendorMasterVO pobjPO_ReturnToVendorMasterVO)
        {
            DateTime         dtmCurrentDate = new UtilsBO().GetDBDate().AddDays(1);
            InventoryUtilsBO boIVUtils = new InventoryUtilsBO();
            decimal          dcmOnHandQty, decOnHandCurrent = 0;

            for (int i = 0; i < dstData.Tables[0].Rows.Count; i++)
            {
                if (dstData.Tables[0].Rows[i].RowState != DataRowState.Deleted)
                {
                    //get Quantity, location, bin, umrate
                    string strBINID = dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.BINID_FLD].ToString().Trim();
                    dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString().Trim();
                    if (strBINID != String.Empty)
                    {
                        IV_BinCacheVO objIV_BinCacheVO = new IV_BinCacheVO();
                        objIV_BinCacheVO.ProductID        = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString());
                        objIV_BinCacheVO.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
                        objIV_BinCacheVO.CCNID            = pobjPO_ReturnToVendorMasterVO.CCNID;
                        objIV_BinCacheVO.LocationID       = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString());
                        objIV_BinCacheVO.BinID            = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.BINID_FLD].ToString());
                        dcmOnHandQty = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
                                                                           objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
                        decOnHandCurrent = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_BinCacheVO.CCNID, objIV_BinCacheVO.MasterLocationID,
                                                                               objIV_BinCacheVO.LocationID, objIV_BinCacheVO.BinID, objIV_BinCacheVO.ProductID);
                    }
                    else
                    {
                        IV_LocationCacheVO objIV_LocationCacheVO = new IV_LocationCacheVO();
                        objIV_LocationCacheVO.ProductID        = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString());
                        objIV_LocationCacheVO.MasterLocationID = pobjPO_ReturnToVendorMasterVO.MasterLocationID;
                        objIV_LocationCacheVO.CCNID            = pobjPO_ReturnToVendorMasterVO.CCNID;
                        objIV_LocationCacheVO.LocationID       = int.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString());

                        dcmOnHandQty = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_LocationCacheVO.CCNID, objIV_LocationCacheVO.MasterLocationID,
                                                                           objIV_LocationCacheVO.LocationID, 0, objIV_LocationCacheVO.ProductID);
                        decOnHandCurrent = boIVUtils.GetAvailableQtyByPostDate(dtmCurrentDate, objIV_LocationCacheVO.CCNID, objIV_LocationCacheVO.MasterLocationID,
                                                                               objIV_LocationCacheVO.LocationID, 0, objIV_LocationCacheVO.ProductID);
                    }
                    decimal dcmUMRate = 1;
                    if (pobjPO_ReturnToVendorMasterVO.PurchaseOrderMasterID != 0)
                    {
                        //get the UMRate

                        if (dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.UMRATE_FLD].ToString() != String.Empty)
                        {
                            dcmUMRate = decimal.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.UMRATE_FLD].ToString());
                        }
                        else
                        {
                            dcmUMRate = 1;
                        }
                    }
                    decimal dcmReturnQuantity = decimal.Parse(dstData.Tables[0].Rows[i][PO_ReturnToVendorDetailTable.QUANTITY_FLD].ToString());
                    if ((dcmOnHandQty - (dcmReturnQuantity * dcmUMRate)) < 0)
                    {
                        throw new PCSBOException(ErrorCode.MESSAGE_RGA_OVERONHANDQTY, i.ToString(), null);
                    }
                    else
                    if (decOnHandCurrent < (dcmReturnQuantity * dcmUMRate))
                    {
                        throw new PCSBOException(ErrorCode.MESSAGE_AVAILABLE_WAS_USED_AFTER_POSTDATE, i.ToString(), null);
                    }
                }
            }
        }