/// <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); }
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); } }
/// <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); }
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); }