Ejemplo n.º 1
0
        private void chkSelectAll_Click(object sender, EventArgs e)
        {
            const string METHOD_NAME = THIS + ".chkSelectAll_Click()";

            try
            {
                string strFilter = ((DataTable)dgrdData.DataSource).DefaultView.RowFilter;
                var    boUtils   = new UtilsBO();
                dtbData = boUtils.UpdateSelected(dtbData.Tables[0].TableName, strFilter, chkSelectAll.Checked);
                LoadDataDetail(dtbData);
                dtbData.Tables[0].DefaultView.RowFilter = strFilter;
            }
            catch (Exception ex)
            {
                // displays the error message.
                PCSMessageBox.Show(ErrorCode.OTHER_ERROR, MessageBoxButtons.OK, MessageBoxIcon.Error);
                // log message.
                try
                {
                    Logger.LogMessage(ex, METHOD_NAME, Level.ERROR);
                }
                catch
                {
                    PCSMessageBox.Show(ErrorCode.LOG_EXCEPTION, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Init variables
        /// </summary>
        /// <author>Trada</author>
        /// <date>Friday, June 10 2005</date>
        private void InitVariable()
        {
            // Load combo box
            UtilsBO boUtil = new UtilsBO();
            DataSet dstCCN = boUtil.ListCCN();

            cboCCN.DataSource    = dstCCN.Tables[MST_CCNTable.TABLE_NAME];
            cboCCN.DisplayMember = MST_CCNTable.CODE_FLD;
            cboCCN.ValueMember   = MST_CCNTable.CCNID_FLD;
            FormControlComponents.PutDataIntoC1ComboBox(cboCCN, dstCCN.Tables[MST_CCNTable.TABLE_NAME], MST_CCNTable.CODE_FLD, MST_CCNTable.CCNID_FLD, MST_CCNTable.TABLE_NAME);
            if (SystemProperty.CCNID != 0)
            {
                cboCCN.SelectedValue = SystemProperty.CCNID;
            }
            // Load combo box displays approving date
            PRO_WorkOrderDetailVO voWorkOrderDetail = new PRO_WorkOrderDetailVO();

            voWorkOrderDetail.MfgCloseDate = boUtil.GetDBDate();
            if ((DateTime.MinValue < voWorkOrderDetail.MfgCloseDate) && (voWorkOrderDetail.MfgCloseDate < DateTime.MaxValue))
            {
                dtmPostDate.Value = voWorkOrderDetail.MfgCloseDate;
            }
            else
            {
                dtmPostDate.Value = DBNull.Value;
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Update status to ManufacturingClose and MfgCloseDate of each WorkOrderLine in ArrayList
        /// </summary>
        /// <param name="pdtmCloseDate">Close Date</param>
        /// <param name="parrSelectedLines">All selected work order line to be closed</param>
        /// <author>Trada</author>
        /// <date>Friday, June </date>
        public void CloseWorkOrderLines(DateTime pdtmCloseDate, ArrayList parrSelectedLines)
        {
            dsPRO_WorkOrderDetail = new PRO_WorkOrderDetailDS();
            ArrayList arrListOfIds = new ArrayList();

            arrListOfIds = UtilsBO.GetSplitList(parrSelectedLines, 200);
            if (arrListOfIds.Count > 0)
            {
                foreach (object t in arrListOfIds)
                {
                    dsPRO_WorkOrderDetail.CloseWorkOrderLines(WOLineStatus.MfgClose, pdtmCloseDate, t.ToString());
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Updates the user name modify transaction.
        /// </summary>
        /// <param name="pForm">The p form.</param>
        /// <param name="pstrPrimaryField">The PSTR primary field.</param>
        /// <param name="pintMasterId">The pint master ID.</param>
        public static void UpdateUserNameModifyTransaction(Form pForm, string pstrPrimaryField, int pintMasterId)
        {
            FormInfo formInfor;
            string   strTableName = string.Empty;

            foreach (object t in SystemProperty.ArrayForms)
            {
                formInfor = (FormInfo)t;
                if (pForm == formInfor.mForm)
                {
                    strTableName = formInfor.mTableName;
                    break;
                }
            }
            var boUtils = new UtilsBO();

            boUtils.UpdateUserNameModifyTransaction(SystemProperty.UserName, strTableName, pstrPrimaryField, pintMasterId);
        }
Ejemplo n.º 7
0
        //**************************************************************************
        ///    <Description>
        ///       Get list of CCN
        ///    </Description>
        ///    <Inputs>
        ///
        ///    </Inputs>
        ///    <Outputs>
        ///
        ///    </Outputs>
        ///    <Returns>
        ///
        ///    </Returns>
        ///    <Authors>
        ///       THIENHD
        ///    </Authors>
        ///    <History>
        ///       15-Dec-2004
        ///    </History>
        ///    <Notes>
        ///    </Notes>
        //**************************************************************************



        public DataTable GetCCN()
        {
            // TODO:  Add ProductItemInfoBO.GetCCN implementation
            try
            {
                //MST_CCNDS objMST_CCNDS = new MST_CCNDS();
                UtilsBO objUtilsBO = new UtilsBO();
                //return objMST_CCNDS.List().Tables[0];
                return(objUtilsBO.ListCCN().Tables[0]);
            }
            catch (PCSDBException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Noes the right to edit transaction.
        /// </summary>
        /// <param name="pForm">The p form.</param>
        /// <param name="pstrPrimaryField">The PSTR primary field.</param>
        /// <param name="pintMasterId">The pint master ID.</param>
        /// <returns></returns>
        public static bool NoRightToEditTransaction(Form pForm, string pstrPrimaryField, int pintMasterId)
        {
            if (SystemProperty.UserName.ToLower().Equals(Constants.SUPER_ADMIN_USER))
            {
                return(false);
            }

            FormInfo formInfor;
            string   strTableName = string.Empty;

            foreach (object t in SystemProperty.ArrayForms)
            {
                formInfor = (FormInfo)t;
                if (pForm == formInfor.mForm)
                {
                    strTableName = formInfor.mTableName;
                    break;
                }
            }
            // Check role administrator
            var     boUtils             = new UtilsBO();
            DataSet dstGetRightToModify = boUtils.GetRightToModify(SystemProperty.UserName, strTableName, pstrPrimaryField, pintMasterId);

            if (dstGetRightToModify == null)
            {
                return(false);
            }
            if (int.Parse(dstGetRightToModify.Tables[0].Rows[0][0].ToString()) > 0)
            {
                return(false);
            }

            string strUserCreated = dstGetRightToModify.Tables[1].Rows[0][0].ToString();

            if (!strUserCreated.ToLower().Equals(SystemProperty.UserName.ToLower()))
            {
                PCSMessageBox.Show(ErrorCode.MESSAGE_YOU_DONT_HAVE_RIGHT_TO_EDIT, MessageBoxIcon.Information, new[] { strUserCreated });
                return(true);
            }
            return(false);
        }
Ejemplo n.º 9
0
        //**************************************************************************
        ///    <Description>
        ///       This method uses to make a copy of specified report to another group,
        ///       also copy all data relative to report (sys_ReportAndGroup, sys_ReportDrillDown,
        ///       sys_ReportFields, sys_ReportPara).
        ///    </Description>
        ///    <Inputs>
        ///        Source ReportID, Destination GroupID
        ///    </Inputs>
        ///    <Outputs>
        ///      New report id
        ///    </Outputs>
        ///    <Returns>
        ///       new report id
        ///    </Returns>
        ///    <Authors>
        ///       DungLA
        ///    </Authors>
        ///    <History>
        ///       03-Jan-2005
        ///       11-Jan-2005
        ///    </History>
        ///    <Notes>
        ///		Return newly report id
        ///    </Notes>
        //**************************************************************************

        public object CopyReport(string pstrReportID, string pstrGroupID, out int ointReportOrder)
        {
            const string METHOD_NAME          = THIS + ".CopyReport()";
            const int    REPORT_ID_MAX_LENGTH = 20;
            const string CODE_DATE_FORMAT     = "yyyyMMddHHmmssfff";
            UtilsBO      boUtils  = new UtilsBO();
            sys_ReportDS dsReport = new sys_ReportDS();
            sys_ReportVO voReport;

            // use to add new report to selected group
            sys_ReportAndGroupVO voReportAndGroup = new sys_ReportAndGroupVO();
            sys_ReportAndGroupDS dsReportAndGroup = new sys_ReportAndGroupDS();

            // use to copy report para
            sys_ReportParaDS dsReportPara = new sys_ReportParaDS();

            // use to copy report fields
            sys_ReportFieldsDS dsReportFields = new sys_ReportFieldsDS();

            // use to copy drill down report
            sys_ReportDrillDownDS dsReportDrillDown = new sys_ReportDrillDownDS();

            // get the data of selected object
            voReport = (sys_ReportVO)(dsReport.GetObjectVO(pstrReportID));

            #region Copy report
            // make a copy report
            sys_ReportVO voCopiedReport = new sys_ReportVO();
            voCopiedReport = voReport;
            // get database server date time
            DateTime dtmDB = boUtils.GetDBDate();
            // report ID = yyyyMMddHHmmssfff
            voCopiedReport.ReportID = dtmDB.ToString(CODE_DATE_FORMAT);
            if (voCopiedReport.ReportID.Length > REPORT_ID_MAX_LENGTH)
            {
                throw new PCSBOException(ErrorCode.MESSAGE_VALUE_TOO_LONG, METHOD_NAME, new Exception());
            }
            voCopiedReport.ReportName = Constants.COPY_OF + voCopiedReport.ReportName;
            // save new report to database
            dsReport.Add(voCopiedReport);
            #endregion

            #region Add new report to group
            voReportAndGroup.GroupID  = pstrGroupID;
            voReportAndGroup.ReportID = voCopiedReport.ReportID;
            // increase report order by one in group.
            voReportAndGroup.ReportOrder = dsReportAndGroup.GetMaxReportOrder(pstrGroupID) + 1;
            // save data
            dsReportAndGroup.Add(voReportAndGroup);
            ointReportOrder = voReportAndGroup.ReportOrder;
            #endregion

            #region Copy all data relative from old report to new report

            #region ReportPara
            // get all parameter(s)
            sys_ReportParaVO voReportPara;
            ArrayList        arrParas = dsReportPara.GetObjectVOs(pstrReportID);
            // make a copy of each parameter
            if (arrParas.Count > 0)
            {
                for (int i = 0; i < arrParas.Count; i++)
                {
                    voReportPara = (sys_ReportParaVO)(arrParas[i]);
                    // assign new report id
                    voReportPara.ReportID = voCopiedReport.ReportID;
                    // save new para
                    dsReportPara.Add(voReportPara);
                }
            }
            #endregion

            #region ReportFields
            // get all report fields
            sys_ReportFieldsVO voReportFields;
            ArrayList          arrFields = dsReportFields.GetObjectVOs(pstrReportID);
            // make a copy of each field
            if (arrFields.Count > 0)
            {
                for (int i = 0; i < arrFields.Count; i++)
                {
                    voReportFields = (sys_ReportFieldsVO)arrFields[i];
                    // assign new report id
                    voReportFields.ReportID = voCopiedReport.ReportID;
                    // save new field
                    dsReportFields.Add(voReportFields);
                }
            }
            #endregion

            #region ReportDrillDown
            // get all drill down report
            sys_ReportDrillDownVO voReportDrillDown;
            ArrayList             arrDrillDown = dsReportDrillDown.GetObjectVOs(pstrReportID);
            // make a copy each drill down report
            if (arrDrillDown.Count > 0)
            {
                for (int i = 0; i < arrDrillDown.Count; i++)
                {
                    voReportDrillDown = (sys_ReportDrillDownVO)arrDrillDown[i];
                    // assign new report id
                    voReportDrillDown.MasterReportID = voCopiedReport.ReportID;
                    // save new drill down
                    dsReportDrillDown.Add(voReportDrillDown);
                }
            }
            #endregion

            #endregion

            return(voCopiedReport);
        }
Ejemplo n.º 10
0
        private void dgrdData_AfterColUpdate(object sender, ColEventArgs e)
        {
            const string METHOD_NAME = THIS + ".dgrdData_AfterColUpdate()";

            try
            {
                if (e.Column.DataColumn.DataField == SELECTED_COL)
                {
                    string strExpression = "(" + PRO_WorkOrderDetailTable.WORKORDERMASTERID_FLD + "=" + dgrdData[dgrdData.Row, PRO_WorkOrderDetailTable.WORKORDERMASTERID_FLD].ToString()
                                           + " AND " + PRO_WorkOrderDetailTable.WORKORDERDETAILID_FLD + "=" + dgrdData[dgrdData.Row, PRO_WorkOrderDetailTable.WORKORDERDETAILID_FLD].ToString()
                                           + " AND " + PRO_WorkOrderDetailTable.TABLE_NAME + PRO_WorkOrderDetailTable.LINE_FLD + "=" + dgrdData[dgrdData.Row, PRO_WorkOrderDetailTable.TABLE_NAME + PRO_WorkOrderDetailTable.LINE_FLD].ToString()
                                           + " AND " + MST_LocationTable.LOCATIONID_FLD + "=" + dgrdData[dgrdData.Row, MST_LocationTable.LOCATIONID_FLD].ToString()
                                           + " AND " + MST_BINTable.BINID_FLD + "=" + dgrdData[dgrdData.Row, MST_BINTable.BINID_FLD].ToString()
                                           + " AND " + ITM_ProductTable.PRODUCTID_FLD + "=" + dgrdData[dgrdData.Row, ITM_ProductTable.PRODUCTID_FLD].ToString() + ")";

                    if (dgrdData[dgrdData.Row, SELECTED_COL].Equals(DBNull.Value) ||
                        dgrdData[dgrdData.Row, SELECTED_COL].ToString().Trim() == string.Empty)
                    {
                        chkSelectAll.Checked = false;
                        sbCondition.Replace(strExpression + "|", string.Empty);
                        return;
                    }

                    if (!bool.Parse(dgrdData[dgrdData.Row, SELECTED_COL].ToString()))
                    {
                        chkSelectAll.Checked = false;
                        sbCondition.Replace(strExpression + "|", string.Empty);
                        return;
                    }

                    int    nViewCount = dtbData.Tables[0].DefaultView.Count;
                    string strFilter  = dtbData.Tables[0].DefaultView.RowFilter;
                    if (strFilter == string.Empty)
                    {
                        strFilter = SELECTED_COL + "=1";
                    }
                    else
                    {
                        strFilter += " AND " + SELECTED_COL + "=1";
                    }
                    int nSelectedCount = dtbData.Tables[0].Select(strFilter).Length + 1;

                    chkSelectAll.Checked = nViewCount == nSelectedCount;
                    sbCondition.Append(strExpression).Append(" OR ");

                    int     i                  = 0;
                    UtilsBO objUtilBO          = new UtilsBO();
                    int     iProductId         = 0;
                    int     iWorkOrderMasterID = 0;
                    int     iWorkOrderDetailID = 0;
                    int     iComponentID       = 0;
                    bool    b                  = false;
                    if (dgrdData[dgrdData.Row, "ProductID"] != DBNull.Value)
                    {
                        iProductId = Convert.ToInt32(dgrdData[dgrdData.Row, "ProductID"]);
                    }
                    if (dgrdData[dgrdData.Row, "WorkOrderMasterID"] != DBNull.Value)
                    {
                        iWorkOrderMasterID = Convert.ToInt32(dgrdData[dgrdData.Row, "WorkOrderMasterID"]);
                    }
                    if (dgrdData[dgrdData.Row, "WorkOrderDetailID"] != DBNull.Value)
                    {
                        iWorkOrderDetailID = Convert.ToInt32(dgrdData[dgrdData.Row, "WorkOrderDetailID"]);
                    }
                    if (dgrdData[dgrdData.Row, "ComponentID"] != DBNull.Value)
                    {
                        iComponentID = Convert.ToInt32(dgrdData[dgrdData.Row, "ComponentID"]);
                    }
                    if (dgrdData[dgrdData.Row, "SELECTED"] != DBNull.Value)
                    {
                        b = Convert.ToBoolean(dgrdData[dgrdData.Row, "SELECTED"]);
                    }
                    //string strFilter = ((DataTable)dgrdData.DataSource).DefaultView.RowFilter;

                    objUtilBO.UpdateSelectedRow(dtbData.Tables[0].TableName, "", b, iProductId, iWorkOrderMasterID, iWorkOrderDetailID, iComponentID);
                    //LoadDataDetail(dtbData);
                }
            }
            catch (Exception ex)
            {
                PCSMessageBox.Show(ErrorCode.OTHER_ERROR, MessageBoxIcon.Error);
                try
                {
                    Logger.LogMessage(ex, METHOD_NAME, Level.ERROR);
                }
                catch
                {
                    PCSMessageBox.Show(ErrorCode.LOG_EXCEPTION, MessageBoxIcon.Error);
                }
            }
        }
Ejemplo n.º 11
0
        public UserCCNList(string strTableName)
        {
            const string METHOD_NAME = THIS + ".ctor()";

            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            marrReturnsList = new ArrayList();
            try
            {
                UtilsBO boUtils = new UtilsBO();
                switch (strTableName)
                {
                case MST_CCNTable.TABLE_NAME:
                    strDisplayMember = MST_CCNTable.CODE_FLD;
                    strValueMember   = MST_CCNTable.CCNID_FLD;
                    // list all CCN to list
                    tblData = boUtils.ListCCNForCheckListBox();
                    break;

                case Sys_UserTable.TABLE_NAME:
                    strDisplayMember = Sys_UserTable.USERNAME_FLD;
                    strValueMember   = Sys_UserTable.USERNAME_FLD;
                    // list all User to list
                    tblData = boUtils.ListUser();
                    break;
                }
            }
            catch (PCSException ex)
            {
                // displays the error message.
                PCSMessageBox.Show(ex.mCode, MessageBoxIcon.Error);
                // log message.
                try
                {
                    Logger.LogMessage(ex.CauseException, METHOD_NAME, Level.ERROR);
                }
                catch
                {
                    PCSMessageBox.Show(ErrorCode.LOG_EXCEPTION, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                // displays the error message.
                PCSMessageBox.Show(ErrorCode.OTHER_ERROR, MessageBoxIcon.Error);
                // log message.
                try
                {
                    Logger.LogMessage(ex, METHOD_NAME, Level.ERROR);
                }
                catch
                {
                    PCSMessageBox.Show(ErrorCode.LOG_EXCEPTION, MessageBoxIcon.Error);
                }
            }
        }
Ejemplo n.º 12
0
        public int  AddNewReturnedGoods(object objReturnedGoodsMaster, DataSet dsReturnedGoodsDetail)
        {
            const string             BALANCE_QUANTITY            = "BalanceQty";
            const string             METHOD_NAME                 = THIS + ".AddNewReturnedGoods()";
            SO_ReturnedGoodsMasterDS objSO_ReturnedGoodsMasterDS = new SO_ReturnedGoodsMasterDS();
            SO_ReturnedGoodsDetailDS objSO_ReturnedGoodsDetailDS = new SO_ReturnedGoodsDetailDS();

            //First add the master record
            int     intReturnedGoodMasterID = objSO_ReturnedGoodsMasterDS.AddReturnedGoodsAndReturnID(objReturnedGoodsMaster);
            UtilsBO boUtils = new UtilsBO();

            if (((SO_ReturnedGoodsMasterVO)objReturnedGoodsMaster).SaleOrderMasterID > 0)
            {
                DataTable dstCheckBalanceOfAllItems = GetSaleOrderTotalCommit(((SO_ReturnedGoodsMasterVO)objReturnedGoodsMaster).SaleOrderMasterID);

                //update the dataset all of this id
                for (int i = 0; i < dsReturnedGoodsDetail.Tables[0].Rows.Count; i++)
                {
                    if (dsReturnedGoodsDetail.Tables[0].Rows[i].RowState != DataRowState.Deleted)
                    {
                        dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.RETURNEDGOODSMASTERID_FLD] = intReturnedGoodMasterID;
                        DataRow[] drowsData = dstCheckBalanceOfAllItems.Select(ITM_ProductTable.PRODUCTID_FLD + "=" + dsReturnedGoodsDetail.Tables[0].Rows[i][ITM_ProductTable.PRODUCTID_FLD].ToString());
                        if (drowsData.Length > 0)
                        {
                            decimal decRate = boUtils.GetUMRate(int.Parse(drowsData[0][SO_SaleOrderDetailTable.SELLINGUMID_FLD].ToString()), int.Parse(dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.UNITID_FLD].ToString()));
                            if (decRate == 0)
                            {
                                Exception ex        = new Exception();
                                Hashtable htbUMCode = new Hashtable();
                                htbUMCode.Add(MST_UnitOfMeasureTable.UNITOFMEASUREID_FLD, ((MST_UnitOfMeasureVO)boUtils.GetUMInfor(int.Parse(dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.UNITID_FLD].ToString()))).Code);
                                htbUMCode.Add(ITM_ProductTable.STOCKUMID_FLD, ((MST_UnitOfMeasureVO)boUtils.GetUMInfor(int.Parse(dsReturnedGoodsDetail.Tables[0].Rows[i][ITM_ProductTable.STOCKUMID_FLD].ToString()))).Code);
                                throw new PCSBOException(ErrorCode.MESSAGE_UMRATE_IS_NOT_CONFIGURATED, METHOD_NAME, ex, htbUMCode);
                            }
                            if ((decimal)drowsData[0][BALANCE_QUANTITY] * decRate < (decimal)dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.RECEIVEQUANTITY_FLD])
                            {
                                throw new PCSException(ErrorCode.MESSAGE_RGA_RECEIVEQTYTOCOMMIT, dsReturnedGoodsDetail.Tables[0].Rows[i][ITM_ProductTable.PRODUCTID_FLD].ToString(), new Exception());
                            }
                            dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.QUANTITYOFSELLING_FLD] = (decimal)dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.RECEIVEQUANTITY_FLD] / decRate;
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < dsReturnedGoodsDetail.Tables[0].Rows.Count; i++)
                {
                    if (dsReturnedGoodsDetail.Tables[0].Rows[i].RowState != DataRowState.Deleted)
                    {
                        dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.RETURNEDGOODSMASTERID_FLD] = intReturnedGoodMasterID;
                        decimal decRate = boUtils.GetUMRate(int.Parse(dsReturnedGoodsDetail.Tables[0].Rows[i][ITM_ProductTable.STOCKUMID_FLD].ToString()), int.Parse(dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.UNITID_FLD].ToString()));
                        if (decRate == 0)
                        {
                            Exception ex        = new Exception();
                            Hashtable htbUMCode = new Hashtable();
                            htbUMCode.Add(MST_UnitOfMeasureTable.UNITOFMEASUREID_FLD, ((MST_UnitOfMeasureVO)boUtils.GetUMInfor(int.Parse(dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.UNITID_FLD].ToString()))).Code);
                            htbUMCode.Add(ITM_ProductTable.STOCKUMID_FLD, ((MST_UnitOfMeasureVO)boUtils.GetUMInfor(int.Parse(dsReturnedGoodsDetail.Tables[0].Rows[i][ITM_ProductTable.STOCKUMID_FLD].ToString()))).Code);
                            throw new PCSBOException(ErrorCode.MESSAGE_UMRATE_IS_NOT_CONFIGURATED, METHOD_NAME, ex, htbUMCode);
                        }
                        dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.QUANTITYOFSELLING_FLD] = (decimal)dsReturnedGoodsDetail.Tables[0].Rows[i][SO_ReturnedGoodsDetailTable.RECEIVEQUANTITY_FLD] / decRate;
                    }
                }
            }
            //second add the detail
            objSO_ReturnedGoodsDetailDS.UpdateDataSetReturnedGoodsDetail(dsReturnedGoodsDetail, intReturnedGoodMasterID);

            //update history data
            SO_ReturnedGoodsMasterVO objSO_ReturnedGoodsMasterVO = (SO_ReturnedGoodsMasterVO)objReturnedGoodsMaster;

            objSO_ReturnedGoodsMasterVO.ReturnedGoodsMasterID = intReturnedGoodMasterID;

            UpdateInventoryInfor(dsReturnedGoodsDetail, true, objSO_ReturnedGoodsMasterVO);
            return(intReturnedGoodMasterID);
        }
Ejemplo n.º 13
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;
            }
        }
Ejemplo n.º 14
0
        public int ImportUpdateMappingData(DataTable dtImpData, int intPartyID, int intCCNID, int intMaxLine, DataSet dstMappingData)
        {
            int          intResult         = 0;
            const string TEMP_QTY_COL_NAME = "TempQty";

            //Add new column for temp qty
            DataColumn objCol = new DataColumn(TEMP_QTY_COL_NAME);

            objCol.DataType     = typeof(Decimal);
            objCol.DefaultValue = 0;
            dstMappingData.Tables[0].Columns.Add(objCol);
            int intMaxID = 0;

            dstMappingData.Tables[0].DefaultView.Sort = PO_PurchaseOrderDetailTable.PURCHASEORDERDETAILID_FLD;
            try
            {
                intMaxID = int.Parse(dstMappingData.Tables[0].Rows[dstMappingData.Tables[0].Rows.Count - 1][PO_PurchaseOrderDetailTable.PURCHASEORDERDETAILID_FLD].ToString());
            }
            catch
            {
                intMaxID = 0;
            }
            dstMappingData.Tables[0].DefaultView.Sort = string.Empty;

            //walk through data
            ITM_ProductDS dsProduct = new ITM_ProductDS();

            for (int i = INT_BEGIN_DATA_ROW; i < dtImpData.Rows.Count; i++)
            {
                //findout Item Code
                string strItemCode    = dtImpData.Rows[i][INDEX_CODE].ToString();
                string strDescription = dtImpData.Rows[i][INDEX_NAME].ToString();
                string strRevision    = dtImpData.Rows[i][INDEX_REVISION].ToString();
                //find out total quantity at last column
                decimal dcmOrderQty = int.Parse(dtImpData.Rows[i][dtImpData.Columns.Count - 1].ToString());

                //check if this item existed, update quantity only
                DataRow[] arrRows = dstMappingData.Tables[0].Select(ITM_ProductTable.CODE_FLD + "='" + strItemCode + "'");
                if (arrRows.Length > 0)
                {
                    arrRows[0][TEMP_QTY_COL_NAME] = decimal.Parse(arrRows[0][TEMP_QTY_COL_NAME].ToString()) + dcmOrderQty;
                    continue;
                }
                if (dcmOrderQty <= 0)
                {
                    continue;
                }

                ITM_ProductVO voProduct = (ITM_ProductVO)dsProduct.GetObjectVO(strItemCode, strDescription, strRevision);

                //New row
                DataRow dr = dstMappingData.Tables[0].NewRow();

                UtilsBO boUtils = new UtilsBO();
                //fill row
                dr[TEMP_QTY_COL_NAME] = dcmOrderQty;
                dr[PO_PurchaseOrderDetailTable.ORDERQUANTITY_FLD] = dcmOrderQty;
                dr[PO_PurchaseOrderDetailTable.PRODUCTID_FLD]     = voProduct.ProductID;
                dr[ITM_ProductTable.CODE_FLD]                             = voProduct.Code;
                dr[ITM_ProductTable.DESCRIPTION_FLD]                      = voProduct.Description;
                dr[ITM_ProductTable.REVISION_FLD]                         = voProduct.Revision;
                dr[PO_PurchaseOrderDetailTable.BUYINGUMID_FLD]            = voProduct.BuyingUMID;
                dr[PO_PurchaseOrderDetailTable.UNITPRICE_FLD]             = voProduct.ListPrice;
                dr[PO_PurchaseOrderDetailTable.TOTALAMOUNT_FLD]           = voProduct.ListPrice * dcmOrderQty;
                dr[PO_PurchaseOrderDetailTable.UMRATE_FLD]                = boUtils.GetUMRate(voProduct.StockUMID, voProduct.BuyingUMID);
                dr[PO_PurchaseOrderDetailTable.LINE_FLD]                  = ++intMaxLine;
                dr[PO_PurchaseOrderDetailTable.PURCHASEORDERDETAILID_FLD] = ++intMaxID;
                dr[PO_PurchaseOrderDetailTable.STOCKUMID_FLD]             = voProduct.StockUMID;
                dr[TEMP_QTY_COL_NAME] = dcmOrderQty;
                dstMappingData.Tables[0].Rows.Add(dr);
            }
            if (intResult != 0)
            {
                dstMappingData.Tables[0].Columns.Remove(objCol);
                return(intResult);
            }
            //refine data, with correct line
            int intLine = 1;

            for (int i = 0; i < dstMappingData.Tables[0].Rows.Count; i++)
            {
                if (int.Parse(dstMappingData.Tables[0].Rows[i][TEMP_QTY_COL_NAME].ToString()) == 0)
                {
                    dstMappingData.Tables[0].Rows[i][PO_PurchaseOrderDetailTable.LINE_FLD] = -1;
                }
                else
                {
                    //Update Line
                    dstMappingData.Tables[0].Rows[i][PO_PurchaseOrderDetailTable.LINE_FLD] = intLine;
                    //Update quantity
                    dstMappingData.Tables[0].Rows[i][PO_PurchaseOrderDetailTable.ORDERQUANTITY_FLD] = dstMappingData.Tables[0].Rows[i][TEMP_QTY_COL_NAME];
                    intLine++;
                }
            }

            dstMappingData.Tables[0].Columns.Remove(objCol);
            return(intResult);
        }
Ejemplo n.º 15
0
        private void txtBeginWO_Leave(object sender, EventArgs e)
        {
            const string METHOD_NAME = THIS + ".txtBeginWO_Leave";

            try
            {
                FormControlComponents.OnLeaveControl(sender, e);
                if (!btnSearchBeginWO.Enabled || !txtBeginWO.Modified)
                {
                    return;
                }

                txtBeginWO.Text = txtBeginWO.Text.Trim();
                if (txtBeginWO.Text == String.Empty)
                {
                    intWorkOrderMasterID = 0;
                    return;
                }

                UtilsBO objUtilsBO = new UtilsBO();
                intWorkOrderMasterID = 0;
                //search for master location id
                Hashtable hashCondition = new Hashtable();
                hashCondition.Add(PRO_WorkOrderMasterTable.MASTERLOCATIONID_FLD, mMasterLocationID);

                DataTable dtResult = objUtilsBO.GetRows(REMAIN_WO_FOR_ISSUE_VIEW, PRO_WorkOrderMasterTable.WORKORDERNO_FLD, txtBeginWO.Text, hashCondition);
                if (dtResult.Rows.Count == 0)
                {
                    txtBeginWO.Text = String.Empty;
                    btnSearchBeginWO_Click(null, null);
                }
                else
                {
                    if (dtResult.Rows.Count > 1)
                    {
                        btnSearchBeginWO_Click(null, null);
                    }
                    else
                    {
                        intWorkOrderMasterID = int.Parse(dtResult.Rows[0][PRO_WorkOrderMasterTable.WORKORDERMASTERID_FLD].ToString());
                        txtBeginWO.Text      = dtResult.Rows[0][PRO_WorkOrderMasterTable.WORKORDERNO_FLD].ToString();
                    }
                }

                if (intWorkOrderMasterID <= 0)
                {
                    txtBeginWO.Text = String.Empty;
                }
            }
            catch (PCSException ex)
            {
                // displays the error message.
                PCSMessageBox.Show(ex.mCode, MessageBoxIcon.Error);
                // log message.
                try
                {
                    Logger.LogMessage(ex.CauseException, METHOD_NAME, Level.ERROR);
                }
                catch
                {
                    PCSMessageBox.Show(ErrorCode.LOG_EXCEPTION, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                // displays the error message.
                PCSMessageBox.Show(ErrorCode.OTHER_ERROR, MessageBoxButtons.OK, MessageBoxIcon.Error);
                // log message.
                try
                {
                    Logger.LogMessage(ex, METHOD_NAME, Level.ERROR);
                }
                catch
                {
                    PCSMessageBox.Show(ErrorCode.LOG_EXCEPTION, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Ejemplo n.º 16
0
        public void UpdateInventoryInfor(DataSet dsReturnedGoodsDetail, bool blnNewReturnedGood, SO_ReturnedGoodsMasterVO pobjSO_ReturnedGoodsMasterVO)
        {
            const string AVG_COST_FLD           = "AVGCost";
            const string METHOD_NAME            = THIS + "UpdateInventoryInfor()";
            DataTable    dtSaleOrderTotalCommit = null;

            //Get list of commited sale order and average cost
            if (pobjSO_ReturnedGoodsMasterVO.SaleOrderMasterID > 0)
            {
                dtSaleOrderTotalCommit = GetAvgCommitCost(pobjSO_ReturnedGoodsMasterVO.SaleOrderMasterID);
            }
            UtilsBO boUtils = new UtilsBO();

            foreach (DataRow drowReturnedGoodsDetail in dsReturnedGoodsDetail.Tables[0].Rows)
            {
                decimal decUMRate = boUtils.GetUMRate(int.Parse(drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.UNITID_FLD].ToString()), int.Parse(drowReturnedGoodsDetail[ITM_ProductTable.STOCKUMID_FLD].ToString()));
                if (decUMRate == 0)
                {
                    Exception ex        = new Exception();
                    Hashtable htbUMCode = new Hashtable();
                    htbUMCode.Add(MST_UnitOfMeasureTable.UNITOFMEASUREID_FLD, ((MST_UnitOfMeasureVO)boUtils.GetUMInfor(int.Parse(drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.UNITID_FLD].ToString()))).Code);
                    htbUMCode.Add(ITM_ProductTable.STOCKUMID_FLD, ((MST_UnitOfMeasureVO)boUtils.GetUMInfor(int.Parse(drowReturnedGoodsDetail[ITM_ProductTable.STOCKUMID_FLD].ToString()))).Code);
                    throw new PCSBOException(ErrorCode.MESSAGE_UMRATE_IS_NOT_CONFIGURATED, METHOD_NAME, ex, htbUMCode);
                }
                if (blnNewReturnedGood && 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;
                }

                //calculate the avergae cost
                decimal dcmAVGCost = -1;
                if (pobjSO_ReturnedGoodsMasterVO.SaleOrderMasterID > 0 && drowReturnedGoodsDetail.RowState != DataRowState.Deleted)
                {
                    //Find this product and SaleOrderMaster
                    string strFindString = ITM_ProductTable.PRODUCTID_FLD + "=" + drowReturnedGoodsDetail[ITM_ProductTable.PRODUCTID_FLD].ToString();
                    strFindString += " AND " + SO_ReturnedGoodsMasterTable.SALEORDERMASTERID_FLD + "=" + pobjSO_ReturnedGoodsMasterVO.SaleOrderMasterID.ToString();
                    DataRow[] drowResult = dtSaleOrderTotalCommit.Select(strFindString);
                    if (drowResult.Length > 0)
                    {
                        if (drowResult[0][AVG_COST_FLD] != DBNull.Value &&
                            drowResult[0][AVG_COST_FLD].ToString().Trim() != String.Empty)
                        {
                            dcmAVGCost = Decimal.Parse(drowResult[0][AVG_COST_FLD].ToString());
                        }
                    }
                }

                #region UPDATE INTO TABLE IV_CostHistory

                /*
                 * update IV_CostHistory
                 *
                 */
                UpdateCostHistory(drowReturnedGoodsDetail, blnNewReturnedGood, pobjSO_ReturnedGoodsMasterVO, dcmAVGCost);
                #endregion

                #region INSERT INTO LotFIFO Table

                /*
                 *              update LotFIFO
                 *              first check this product Item if it is a actual cost
                 *              if it is actual cost and if there is lot control ==> insert into Lot FIFO
                 */
                //					int intProductID = int.Parse(drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.PRODUCTID_FLD].ToString().Trim());
                //					ITM_ProductDS objITM_ProductDS = new ITM_ProductDS();
                //					bool blnIsProductActualCost = objITM_ProductDS.IsActualCost(intProductID);
                //					if (blnIsProductActualCost)
                //					{
                //						if (drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.LOT_FLD].ToString().Trim() != String.Empty)
                //						{
                //							//initialize the VO class
                //							IV_LotFIFOVO objIV_LotFIFOVO = new IV_LotFIFOVO();
                //							objIV_LotFIFOVO.CCNID = pobjSO_ReturnedGoodsMasterVO.CCNID;
                //							objIV_LotFIFOVO.ProductID = intProductID;
                //							objIV_LotFIFOVO.ReceiveDate = pobjSO_ReturnedGoodsMasterVO.TransDate;
                //							objIV_LotFIFOVO.Lot = drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.LOT_FLD].ToString().Trim();
                //
                //							//get the Cost at the time this product was sold
                //							//just go into the table DetailCOmmitInventory to get this
                //							SO_CommitInventoryDetailDS objSO_CommitInventoryDetailDS = new SO_CommitInventoryDetailDS();
                //							objIV_LotFIFOVO.ActualCost21 =  objSO_CommitInventoryDetailDS.GetCostOfGoodsSold(intProductID,objIV_LotFIFOVO.Lot);
                //
                //							//insert a new record into this table
                //							IV_LotFIFODS objIV_LotFIFODS = new IV_LotFIFODS();
                //							bool blnHasProductLot = objIV_LotFIFODS.HasProduct(objIV_LotFIFOVO.Lot,objIV_LotFIFOVO.CCNID,objIV_LotFIFOVO.ProductID);
                //							if (!blnHasProductLot)
                //							{
                //								objIV_LotFIFODS.AddReturnedGoods(objIV_LotFIFOVO);
                //							}
                //							else
                //							{
                //								//update the onhand quantity
                //								objIV_LotFIFODS.UpdateLotFIFO(objIV_LotFIFOVO);
                //							}
                //						}
                //					}
                #endregion

                int intBinID = 0;
                if (drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.BINID_FLD].ToString() != string.Empty)
                {
                    intBinID = (int)drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.BINID_FLD];
                }
                new InventoryUtilsBO().UpdateAddOHQuantity(pobjSO_ReturnedGoodsMasterVO.CCNID,
                                                           pobjSO_ReturnedGoodsMasterVO.MasterLocationID,
                                                           int.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.LOCATIONID_FLD].ToString()),
                                                           intBinID,
                                                           int.Parse(drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.PRODUCTID_FLD].ToString()),
                                                           Decimal.Parse(drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.RECEIVEQUANTITY_FLD].ToString()) * decUMRate,
                                                           //drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.LOT_FLD].ToString(),
                                                           string.Empty,
                                                           //drowReturnedGoodsDetail[PO_ReturnToVendorDetailTable.SERIAL_FLD].ToString()
                                                           string.Empty);
                #region INSERT and UPDATE into IV_ItemSerial
                //if this detail row has Serial field (user inputted)
                //we have to update or insert into this table
                if (drowReturnedGoodsDetail[SO_ReturnedGoodsDetailTable.SERIAL_FLD].ToString().Trim() != String.Empty)
                {
                    //UpdateIVItemSerial(drowReturnedGoodsDetail,blnNewReturnedGood,pobjSO_ReturnedGoodsMasterVO);
                }
                #endregion

                #region UPDATE INTO TABLE MST_TransactionHistory

                /*
                 * update MST_TransactionHistory
                 *
                 */
                UpdateTransactionHistory(drowReturnedGoodsDetail, blnNewReturnedGood, pobjSO_ReturnedGoodsMasterVO, dcmAVGCost, decUMRate);
                #endregion
            }
        }
Ejemplo n.º 17
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);
                    }
                }
            }
        }
Ejemplo n.º 18
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
            }
        }
Ejemplo n.º 19
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.º 20
0
        public int ImportNewMappingData(DataTable dtImpData, int intPartyID, int intCCNID, int intMaxLine, DataSet dstMappingData)
        {
            int intResult = 0;
            int intMaxID  = 0;

            dstMappingData.Tables[0].DefaultView.Sort = PO_PurchaseOrderDetailTable.PURCHASEORDERDETAILID_FLD;
            try
            {
                intMaxID = int.Parse(dstMappingData.Tables[0].Rows[dstMappingData.Tables[0].Rows.Count - 1][PO_PurchaseOrderDetailTable.PURCHASEORDERDETAILID_FLD].ToString());
            }
            catch
            {
                intMaxID = 0;
            }
            dstMappingData.Tables[0].DefaultView.Sort = string.Empty;

            ITM_ProductDS dsProduct = new ITM_ProductDS();

            for (int i = INT_BEGIN_DATA_ROW; i < dtImpData.Rows.Count; i++)
            {
                string strItemCode    = dtImpData.Rows[i][INDEX_CODE].ToString();
                string strDescription = dtImpData.Rows[i][INDEX_NAME].ToString();
                string strRevision    = dtImpData.Rows[i][INDEX_REVISION].ToString();

                //find out total quantity at last column
                decimal dcmOrderQty = decimal.Parse(dtImpData.Rows[i][dtImpData.Columns.Count - 1].ToString());

                //check if this item existed, update quantity only
                DataRow[] arrRows = dstMappingData.Tables[0].Select(ITM_ProductTable.CODE_FLD + "='" + strItemCode + "'");
                if (arrRows.Length > 0)
                {
                    arrRows[0][PO_PurchaseOrderDetailTable.ORDERQUANTITY_FLD] = decimal.Parse(arrRows[0][PO_PurchaseOrderDetailTable.ORDERQUANTITY_FLD].ToString()) + dcmOrderQty;
                    continue;
                }

                if (dcmOrderQty <= 0)
                {
                    continue;
                }

                ITM_ProductVO voProduct = (ITM_ProductVO)dsProduct.GetObjectVO(strItemCode, strDescription, strRevision);

                //New row
                DataRow dr = dstMappingData.Tables[0].NewRow();

                UtilsBO boUtils = new UtilsBO();
                //fill row
                dr[PO_PurchaseOrderDetailTable.ORDERQUANTITY_FLD] = dcmOrderQty;
                dr[PO_PurchaseOrderDetailTable.PRODUCTID_FLD]     = voProduct.ProductID;
                dr[ITM_ProductTable.CODE_FLD]                             = voProduct.Code;
                dr[ITM_ProductTable.DESCRIPTION_FLD]                      = voProduct.Description;
                dr[ITM_ProductTable.REVISION_FLD]                         = voProduct.Revision;
                dr[PO_PurchaseOrderDetailTable.BUYINGUMID_FLD]            = voProduct.BuyingUMID;
                dr[PO_PurchaseOrderDetailTable.UNITPRICE_FLD]             = voProduct.ListPrice;
                dr[PO_PurchaseOrderDetailTable.TOTALAMOUNT_FLD]           = voProduct.ListPrice * dcmOrderQty;
                dr[PO_PurchaseOrderDetailTable.UMRATE_FLD]                = boUtils.GetUMRate(voProduct.StockUMID, voProduct.BuyingUMID);
                dr[PO_PurchaseOrderDetailTable.LINE_FLD]                  = ++intMaxLine;
                dr[PO_PurchaseOrderDetailTable.PURCHASEORDERDETAILID_FLD] = ++intMaxID;
                dr[PO_PurchaseOrderDetailTable.STOCKUMID_FLD]             = voProduct.StockUMID;
                dstMappingData.Tables[0].Rows.Add(dr);
            }

            return(intResult);
        }