Example #1
0
        /// <summary>
        /// This function simulate and get data of next period following etype Rolling up, Rolling Down
        /// in case of Rolling up  next Period record
        /// else previous period record
        /// </summary>
        /// <param name="database"></param>
        /// <param name="eType"></param>
        /// <returns></returns>
        public InventoryPeriodDTO GetNextPeriodRecord(Database database, eMonthlyCloseProcess eType)
        {
            Database db = UseDatabase(database);

            string sql = @"select		   top 1
		                                   LEFT(CONVERT(nvarchar,DATEADD(m,:incMonth,CONVERT(date,[YEAR_MONTH] + '01' ,112)),112),6) as [YEAR_MONTH]
		                                  ,DATEADD(m,:incMonth,CONVERT(date,[YEAR_MONTH] + '01' ,112)) AS [PERIOD_BEGIN_DATE]
		                                  ,dateadd(d,-1,DATEADD(m,1 + :incMonth,CONVERT(date,[YEAR_MONTH] + '01' ,112))) as  [PERIOD_END_DATE]
		                                  ,p.CRT_BY
		                                  ,p.CRT_DATE
		                                  ,p.CRT_MACHINE
		                                  ,p.UPD_BY
		                                  ,p.UPD_DATE
		                                  ,p.UPD_MACHINE
                            from TB_INV_PERIOD_MS p";

            DataRequest req = new DataRequest(sql);

            req.Parameters.Add("incMonth", DataType.Number, (eType == eMonthlyCloseProcess.ROLLING_UP ? 1 : -1));

            List <InventoryPeriodDTO> list = db.ExecuteForList <InventoryPeriodDTO>(req);

            if (list != null && list.Count > 0)
            {
                return(list[0]);
            }

            return(null);
        }
Example #2
0
        private void RollingStart(eMonthlyCloseProcess ProcessType)
        {
            try
            {
                NZString YearMonth           = Convert.ToDateTime(dtInventoryMonth.DateValue).ToString("yyyyMM").ToNZString();
                InventoryPeriodValidator val = new InventoryPeriodValidator();
                //val.CheckBeforeRunProcess(ProcessType);
                ErrorItem err = val.CheckBeforeRunClosingProcess(ProcessType, YearMonth);

                if (err != null)
                {
                    MessageDialogResult cf = MessageDialog.ShowConfirmation(this, EVOFramework.Message.LoadMessage(TKPMessages.eValidate.VLM0076.ToString()).MessageDescription, MessageDialogButtons.YesNo);
                    if (cf != MessageDialogResult.Yes)
                    {
                        return;
                    }
                }

                MessageDialogResult dr = MessageDialog.ShowConfirmation(this, new EVOFramework.Message(TKPMessages.eConfirm.CFM0005.ToString()).MessageDescription, MessageDialogButtons.YesNo);
                if (dr == MessageDialogResult.Yes)
                {
                    if (RunProcess(ProcessType))
                    {
                        MessageDialog.ShowBusiness(this, EVOFramework.Message.LoadMessage(SystemMaintenance.Messages.eInformation.INF9003.ToString()));
                    }

                    InventoryPeriodBIZ biz = new InventoryPeriodBIZ();
                    InventoryPeriodDTO dto = biz.LoadCurrentPeriod();

                    DateTime currentYearMonth = new DateTime(
                        Convert.ToInt32(dto.YEAR_MONTH.StrongValue.Substring(0, 4)),
                        Convert.ToInt32(dto.YEAR_MONTH.StrongValue.Substring(4, 2)), 1);

                    dtInventoryMonth.DateValue = currentYearMonth;
                }
            }
            catch (ValidateException ex)
            {
                MessageDialog.ShowBusiness(this, ex.ErrorResults[0].Message);
            }
            catch (BusinessException ex)
            {
                MessageDialog.ShowBusiness(this, ex.Error.Message);
            }
            catch (Exception ex)
            {
                MessageDialog.ShowBusiness(this, ex.Message);
            }
        }
Example #3
0
        /// <summary>
        /// Check InventoryMonth ว่า = Current Period ? if No --> error
        /// Check if ใน Current period มี Item Lot ที่ qty <0 ให้ออก Confirm Msg ถามว่าจะทำต่อ?
        /// ถ้าเป้น Rolling Down To Period ต้อง Exist ใน TB_INV_ONHAND_TR
        /// </summary>
        /// <param name="ProcessType"></param>
        /// <param name="YearMonth"></param>
        /// <returns></returns>
        public ErrorItem CheckBeforeRunClosingProcess(eMonthlyCloseProcess ProcessType, NZString YearMonth)
        {
            ErrorItem err = null;
            InventoryOnhandValidator valINV = new InventoryOnhandValidator();

            ValidateException.ThrowErrorItem(CheckCurrentPeriod(YearMonth));

            if (ProcessType == eMonthlyCloseProcess.ROLLING_DOWN)
            {
                int      iYM      = Convert.ToInt32(YearMonth.StrongValue);
                NZString PreMonth = new DateTime(iYM / 100, iYM % 100, 1).AddMonths(-1).ToString("yyyyMM").ToNZString();
                ValidateException.ThrowErrorItem(valINV.CheckIfExistWithYearMonth(PreMonth));
            }

            err = valINV.CheckIfItemLotHasNegativeQty(YearMonth);

            return(err);
        }
Example #4
0
        private bool RunProcess(eMonthlyCloseProcess ePrcsType)
        {
            try {
                this.Cursor        = Cursors.WaitCursor;
                picWaiting.Visible = true;

                InventoryBIZ biz = new InventoryBIZ();

                NZString YearMonth = new NZString(null, Convert.ToDateTime(dtInventoryMonth.DateValue).ToString("yyyyMM"));
                //pgbProgress.PerformStep();
                biz.RunInventoryClosingProcess(ePrcsType);
                return(true);
            }
            catch (Exception ex) {
                MessageDialog.ShowBusiness(this, ex.Message);
            }
            finally {
                this.Cursor        = Cursors.Default;
                picWaiting.Visible = false;
            }
            return(false);
        }