protected void btnMetricSave_Click(object sender, EventArgs e) { bool success; bool measureChanged = false; bool reqdError = false; EHS_PROFILE_MEASURE pm = null; if (hfOper.Value == "add") { pm = new EHS_PROFILE_MEASURE(); pm.EHS_PROFILE_MEASURE_EXT = new EHS_PROFILE_MEASURE_EXT(); } else { pm = LocalProfile().Profile.EHS_PROFILE_MEASURE.FirstOrDefault(l => l.PRMR_ID == LocalProfile().CurrentProfileMeasure.PRMR_ID); if (pm.EHS_PROFILE_MEASURE_EXT == null) { pm.EHS_PROFILE_MEASURE_EXT = new EHS_PROFILE_MEASURE_EXT(); pm.EHS_PROFILE_MEASURE_EXT.PRMR_ID = pm.PRMR_ID; } } pm.PLANT_ID = LocalProfile().Profile.PLANT_ID; decimal measureID = 0; if (!string.IsNullOrEmpty(ddlMetricID.SelectedValue)) { measureID = Convert.ToDecimal(WebSiteCommon.ParseItemValue(ddlMetricID.SelectedValue)); if (pm.MEASURE_ID != measureID) { measureChanged = true; } } pm.MEASURE_ID = measureID; pm.MEASURE_PROMPT = tbMetricPrompt.Text; pm.REG_STATUS = ddlMetricRegStatus.SelectedValue; pm.UN_CODE = ddlMetricDisposalCode.SelectedValue; pm.WASTE_CODE = tbWasteCode.Text; pm.DEFAULT_CURRENCY_CODE = ddlMetricCurrency.SelectedValue; if (ddlMetricResponsible.SelectedIndex > 0) { decimal personID = Convert.ToDecimal(ddlMetricResponsible.SelectedValue); if (personID != pm.RESPONSIBLE_ID) { pm = LocalProfile().UpdateMeasureResponsible(pm, personID); } pm.RESPONSIBLE_ID = personID; } else { pm.RESPONSIBLE_ID = Convert.ToDecimal(null); } if (ddlMetricCost.SelectedValue == "CREDIT") { pm.NEG_VALUE_ALLOWED = true; } else { pm.NEG_VALUE_ALLOWED = false; } pm.STATUS = ddlMetricStatus.SelectedValue; pm.IS_REQUIRED = cbMetricRequired.Checked; decimal uomID = 0; if (ddlMetricCategory.SelectedValue == "FACT") { pm.DEFAULT_UOM = EHSModel.LookupEHSMeasure(new PSsqmEntities(), pm.MEASURE_ID, "").STD_UOM; } else { if (SQMBasePage.ParseToDecimal(WebSiteCommon.ParseItemValue(ddlMetricUOM.SelectedValue), out uomID)) { pm.DEFAULT_UOM = uomID; } decimal UOMFactor = 0; if (decimal.TryParse(tbUOMFactor.Text, out UOMFactor)) { pm.UOM_FACTOR = UOMFactor; } else { pm.UOM_FACTOR = null; } } if (phMetricExt.Visible) { decimal decimalValue; if (SQMBasePage.ParseToDecimal(tbValueDflt.Text, out decimalValue)) { pm.EHS_PROFILE_MEASURE_EXT.VALUE_DEFAULT = decimalValue; } else { pm.EHS_PROFILE_MEASURE_EXT.VALUE_DEFAULT = null; } if (SQMBasePage.ParseToDecimal(tbCostDflt.Text, out decimalValue)) { pm.EHS_PROFILE_MEASURE_EXT.COST_DEFAULT = decimalValue; } else { pm.EHS_PROFILE_MEASURE_EXT.COST_DEFAULT = null; } if ((pm.EHS_PROFILE_MEASURE_EXT.VALUE_DEFAULT.HasValue || pm.EHS_PROFILE_MEASURE_EXT.COST_DEFAULT.HasValue)) { pm.EHS_PROFILE_MEASURE_EXT.OVERRIDE_ALLOWED = cbEnableOverride.Checked; } else { pm.EHS_PROFILE_MEASURE_EXT.OVERRIDE_ALLOWED = false; } /* * if ((pm.EHS_PROFILE_MEASURE_EXT.VALUE_DEFAULT.HasValue || pm.EHS_PROFILE_MEASURE_EXT.COST_DEFAULT.HasValue) && radEffEndDate.SelectedDate != null) * pm.EHS_PROFILE_MEASURE_EXT.EFF_END_DT = (DateTime)radEffEndDate.SelectedDate; * else * pm.EHS_PROFILE_MEASURE_EXT.EFF_END_DT = null; */ } // validate switch (ddlMetricCategory.SelectedValue) { case "ENGY": case "EUTL": if (string.IsNullOrEmpty(ddlMetricCategory.SelectedValue) || string.IsNullOrEmpty(ddlMetricID.SelectedValue) || string.IsNullOrEmpty(ddlMetricUOM.SelectedValue) || string.IsNullOrEmpty(ddlMetricResponsible.SelectedValue)) { reqdError = true; } break; case "PROD": case "FACT": if (string.IsNullOrEmpty(ddlMetricCategory.SelectedValue) || string.IsNullOrEmpty(ddlMetricID.SelectedValue) || string.IsNullOrEmpty(ddlMetricResponsible.SelectedValue)) { reqdError = true; } break; case "SAFE": if (string.IsNullOrEmpty(ddlMetricCategory.SelectedValue) || string.IsNullOrEmpty(ddlMetricID.SelectedValue) || string.IsNullOrEmpty(ddlMetricResponsible.SelectedValue)) { reqdError = true; } break; default: if (string.IsNullOrEmpty(ddlMetricCategory.SelectedValue) || string.IsNullOrEmpty(ddlMetricID.SelectedValue) || string.IsNullOrEmpty(ddlMetricUOM.SelectedValue) || string.IsNullOrEmpty(ddlMetricResponsible.SelectedValue) || string.IsNullOrEmpty(ddlMetricDisposalCode.SelectedValue) || string.IsNullOrEmpty(ddlMetricRegStatus.SelectedValue)) { reqdError = true; } if (tbUOMFactor.Visible && string.IsNullOrEmpty(tbUOMFactor.Text)) { reqdError = true; } break; } if (reqdError) { BindProfileMeasure(pm); DisplayErrorMessage(hfErrRequiredInputs); return; } if (hfOper.Value == "add") // add measure to list { pm = LocalProfile().AddMeasure(pm, Convert.ToDecimal(WebSiteCommon.ParseItemValue(ddlMetricID.SelectedValue))); } EHSProfile.UpdateProfile(LocalProfile()); if (pm.STATUS == "D") { EHSProfile.DeleteProfileMeasure(LocalProfile(), pm.MEASURE_ID, true, true); measureChanged = true; } if (measureChanged) { SetLocalProfile(new EHSProfile().Load(LocalProfile().Plant.PLANT_ID, true, false)); } btnMetricClear_Click(null, null); BindProfile(LocalProfile()); }
private int SaveInputs(decimal targetPrmrID, bool commitChanges) { int status = 0; LinkButton lnk; HiddenField hf; TextBox tbValue, tbCost, tbCredit; CheckBox cbDelete; decimal decimalValue; DateTime dateValue; decimal prmrID; bool hasReqdInputs = true; bool hasSaveWarning = false; bool hasSaveError = false; EHSProfileStatus saveStatus = EHSProfileStatus.Normal; try { foreach (RepeaterItem item in rptProfilePeriod.Items) { lnk = (LinkButton)item.FindControl("lnkMetricCD"); prmrID = Convert.ToDecimal(lnk.CommandArgument); EHS_PROFILE_MEASURE metric = LocalProfile().GetMeasure((decimal)prmrID); if (prmrID == targetPrmrID || commitChanges) { Repeater rpt = (Repeater)item.FindControl("rptProfileInput"); int numInput = 0; foreach (RepeaterItem inputItem in rpt.Items) { hf = (HiddenField)inputItem.FindControl("hfInputDate"); EHS_PROFILE_INPUT input = LocalProfile().InputPeriod.GetPeriodInput(prmrID, Convert.ToDateTime(hf.Value)); if (input != null) { RadDatePicker dtpFrom = (RadDatePicker)inputItem.FindControl("radDateFrom"); RadDatePicker dtpTo = (RadDatePicker)inputItem.FindControl("radDateTo"); tbValue = (TextBox)inputItem.FindControl("tbMetricValue"); tbCost = (TextBox)inputItem.FindControl("tbMetricCost"); tbCredit = (TextBox)inputItem.FindControl("tbMetricCredit"); cbDelete = (CheckBox)inputItem.FindControl("cbDelete"); hf = (HiddenField)inputItem.FindControl("hfStatus"); Control tr = new Control(); EHSProfileStatus inputStatus = EHSProfileStatus.Normal; switch (metric.EHS_MEASURE.MEASURE_CATEGORY) { case "PROD": case "SAFE": case "FACT": if (dtpFrom.SelectedDate == null || dtpTo.SelectedDate == null) { inputStatus = EHSProfileStatus.Incomplete; } else if (string.IsNullOrEmpty(tbValue.Text.Trim())) { inputStatus = EHSProfileStatus.NoInputs; } break; default: if (string.IsNullOrEmpty(tbValue.Text.Trim())) { if (string.IsNullOrEmpty(tbCost.Text.Trim() + tbCredit.Text.Trim())) { inputStatus = EHSProfileStatus.NoInputs; } else { inputStatus = EHSProfileStatus.Incomplete; } } else if (string.IsNullOrEmpty(tbCost.Text.Trim() + tbCredit.Text.Trim())) { inputStatus = EHSProfileStatus.Incomplete; } else if (dtpFrom.SelectedDate == null || dtpTo.SelectedDate == null) { inputStatus = EHSProfileStatus.Incomplete; } if (metric.EHS_PROFILE_MEASURE_EXT != null && (metric.EHS_PROFILE_MEASURE_EXT.VALUE_DEFAULT.HasValue || metric.EHS_PROFILE_MEASURE_EXT.COST_DEFAULT.HasValue)) { if (inputStatus == EHSProfileStatus.Incomplete && (dtpFrom.SelectedDate == null || dtpTo.SelectedDate == null)) { inputStatus = EHSProfileStatus.NoInputs; } } break; } if (inputStatus == EHSProfileStatus.NoInputs) { LocalProfile().InputPeriod.DeletePeriodInput(input); } else if (inputStatus == EHSProfileStatus.Incomplete) { hasSaveError = true; saveStatus = EHSProfileStatus.Incomplete; dtpFrom.DateInput.Style.Add("BACKGROUND-COLOR", "LIGHTCORAL"); dtpTo.DateInput.Style.Add("BACKGROUND-COLOR", "LIGHTCORAL"); tbValue.Style.Add("BACKGROUND-COLOR", "LIGHTCORAL"); if (tbCost.Enabled) { tbCost.Style.Add("BACKGROUND-COLOR", "LIGHTCORAL"); } if (tbCredit.Enabled) { tbCredit.Style.Add("BACKGROUND-COLOR", "LIGHTCORAL"); } } //if ((string.IsNullOrEmpty(tbValue.Text) || dtpFrom.SelectedDate == null || dtpTo.SelectedDate == null) || (string.IsNullOrEmpty(tbCost.Text + tbCredit.Text) && metric.EHS_MEASURE.MEASURE_CATEGORY != "PROD" && metric.EHS_MEASURE.MEASURE_CATEGORY != "SAFE" && metric.EHS_MEASURE.MEASURE_CATEGORY != "FACT")) //{ // LocalProfile().InputPeriod.DeletePeriodInput(input); //} else { ++numInput; if (cbDelete.Checked) { input.STATUS = "D"; } else if (input.STATUS == "D") { input.STATUS = "A"; } if (input.EFF_FROM_DT > DateTime.MinValue || input.EFF_FROM_DT != dtpFrom.SelectedDate) { input.EFF_FROM_DT = (DateTime)dtpFrom.SelectedDate; } if (input.EFF_TO_DT > DateTime.MinValue || input.EFF_TO_DT != dtpTo.SelectedDate) { input.EFF_TO_DT = (DateTime)dtpTo.SelectedDate; } if (SQMBasePage.ParseToDecimal(tbValue.Text, out decimalValue)) { if (input.MEASURE_VALUE != decimalValue) { input.MEASURE_VALUE = decimalValue; } } if (!string.IsNullOrEmpty(tbCredit.Text)) { SQMBasePage.ParseToDecimal(tbCredit.Text, out decimalValue); decimalValue = Math.Abs(decimalValue) * -1; if (!input.MEASURE_COST.HasValue || input.MEASURE_COST != decimalValue) { input.MEASURE_COST = decimalValue; } } else { SQMBasePage.ParseToDecimal(tbCost.Text, out decimalValue); decimalValue = Math.Abs(decimalValue); if (!input.MEASURE_COST.HasValue || input.MEASURE_COST != decimalValue) { input.MEASURE_COST = decimalValue; } } if (commitChanges && metric.EHS_MEASURE.MEASURE_CATEGORY != "PROD" && metric.EHS_MEASURE.MEASURE_CATEGORY != "SAFE" && metric.EHS_MEASURE.MEASURE_CATEGORY != "FACT" && LocalProfile().CurrentStatus != EHSProfileStatus.OutOFRange) { if (!EHSModel.IsMeasureValueInRange(metric, (double)input.MEASURE_VALUE, 1.0)) { hasSaveWarning = true; saveStatus = EHSProfileStatus.OutOFRange; tbValue.Style.Add("BACKGROUND-COLOR", "CORNSILK"); } } } } if (metric != null && (bool)metric.IS_REQUIRED && numInput == 0) { hasReqdInputs = false; } } } } if (commitChanges) { if (hasSaveError) { MessageDisplay(saveStatus); return(0); } if (hasSaveWarning) { MessageDisplay(saveStatus); return(0); } // deleted inputs after approval if ((!string.IsNullOrEmpty(hfNumDelete.Value) && hfNumDelete.Value != "0") && LocalProfile().InputPeriod.PlantAccounting.APPROVAL_DT.HasValue) { cbFinalApproval.Checked = false; } // changed inputs after approval if ((!string.IsNullOrEmpty(hfNumChanged.Value) && hfNumChanged.Value != "0") && LocalProfile().InputPeriod.PlantAccounting.APPROVAL_DT.HasValue) { cbFinalApproval.Checked = false; } status = LocalProfile().UpdatePeriod(true, "", cbFinalApproval.Checked, SessionManager.UserContext.UserName()); if (status >= 0) { // option to finalize metrics SETTINGS sets = SQMSettings.GetSetting("EHS", "INPUTFINALIZE"); if (sets != null) { bool doRollup = false; DateTime lastUpdateDate; LocalProfile().PeriodStatus(new string[0] { }, false, out lastUpdateDate); switch (sets.VALUE.ToUpper()) { case "ANY": // finalize any inputs doRollup = true; break; case "ANY_CURRENCY": // finalize any inputs and if the exchange rate for the period exists if (LocalProfile().InputPeriod.PeriodExchangeRate(LocalProfile().Plant) != null) { doRollup = true; } break; case "REQD": // finalize only when all required inputs have been entered if (LocalProfile().InputPeriod.IsRequiredComplete()) { doRollup = true; } break; case "REQD_CURRENCY": // finalize only when all required inputs are entered and exchange rate for the period exists if (LocalProfile().InputPeriod.IsRequiredComplete() && LocalProfile().InputPeriod.PeriodExchangeRate(LocalProfile().Plant) != null) { doRollup = true; } break; default: break; } if (doRollup && LocalProfile().ValidPeriod()) { status = LocalProfile().UpdateMetricHistory(LocalProfile().InputPeriod.PeriodDate); // new roll-up logic } } } if (status >= 0) { ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alertResult('hfAlertSaveSuccess');", true); hasSaveWarning = false; // cancel warning to allow re-save MessageDisplay(0); LoadProfileInput(LocalProfile().InputPeriod.PeriodDate, EHSProfileStatus.Normal); } else { ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alertResult('hfAlertSaveError');", true); MessageDisplay(0); ClearInput(); } } } catch (Exception ex) { // SQMLogger.LogException(ex); status = -1; } BindSharedCalendars(); return(status); }