/// <summary> /// Validate spread row. /// </summary> /// <param name="row"></param> /// <param name="forceValidate">force to validate.</param> /// <returns></returns> private bool ValidateRowSpread(int row, bool forceValidate) { if (!forceValidate && !m_bRowHasModified) { return(true); } //Check item string itemCode = shtIssueList.Cells[row, (int)eColView.ITEM_CODE].Text; NZString LocCD = new NZString(cboFromLoc, cboFromLoc.SelectedValue); NZString LotNo = new NZString(null, shtIssueList.Cells[row, (int)eColView.LOT_NO].Value); if (String.IsNullOrEmpty(itemCode)) { ErrorItem error = new ErrorItem(null, TKPMessages.eValidate.VLM0006.ToString()); MessageDialog.ShowBusiness(this, error.Message); return(false); } else { ItemValidator itemValidator = new ItemValidator(); BusinessException error = itemValidator.CheckItemNotExist(itemCode.ToNZString()); if (error != null) { MessageDialog.ShowBusiness(this, error.Error.Message); return(false); } } // ถ้า Validate Row ผ่าน แสดงว่า แถวนั้นไม่จำเป็นต้องเช็คอีกรอบ m_bRowHasModified = false; return(true); }
private bool LoadItemIntoRow(int row, NZString ITEM_CD) { ItemValidator itemValidator = new ItemValidator(); if (ITEM_CD != null) { BusinessException error = itemValidator.CheckItemNotExist(ITEM_CD); if (error != null) { shtView.Cells[row, (int)eColView.ITEM_DESC].Value = null; shtView.Cells[row, (int)eColView.ORDER_UM_CLS].Value = null; shtView.Cells[row, (int)eColView.INV_UM_CLS].Value = null; shtView.Cells[row, (int)eColView.ORDER_UM_RATE].Value = null; shtView.Cells[row, (int)eColView.INV_UM_RATE].Value = null; return(false); } ItemBIZ itemBIZ = new ItemBIZ(); ItemDTO itemDTO = itemBIZ.LoadItem(ITEM_CD); shtView.Cells[row, (int)eColView.ITEM_CD].Value = itemDTO.ITEM_CD.Value; shtView.Cells[row, (int)eColView.ITEM_DESC].Value = itemDTO.ITEM_DESC.Value; //shtView.Cells[row, (int)eColView.ORDER_UM_CLS].Value = itemDTO.ORDER_UM_CLS.Value; //shtView.Cells[row, (int)eColView.INV_UM_CLS].Value = itemDTO.INV_UM_CLS.Value; //shtView.Cells[row, (int)eColView.ORDER_UM_RATE].Value = itemDTO.ORDER_UM_RATE.Value; //shtView.Cells[row, (int)eColView.INV_UM_RATE].Value = itemDTO.INV_UM_RATE.Value; //shtView.Cells[row, (int)eColView.LOT_CONTROL_CLS].Value = itemDTO.LOT_CONTROL_CLS.Value; //if (itemDTO.LOT_CONTROL_CLS == DataDefine.Convert2ClassCode(DataDefine.eLOT_CONTROL_CLS.Yes)) //{ // //shtView.Cells[row, (int)eColView.LOT_NO].Value = dtReceiveDate.Value.Value.ToString(DataDefine.LOT_NO_FORMAT); // if (rdoReceive.Checked) // { // RunningNumberBIZ runningNoBiz = new RunningNumberBIZ(); // NZString strLotNoPrefix = runningNoBiz.GenerateLotNoPrefix(new NZDateTime(null, dtReceiveDate.Value)); // NZInt iLastRunningNo = runningNoBiz.GetLastLotNoRunningBox(strLotNoPrefix, new NZString(cboStoredLoc, (string)cboStoredLoc.SelectedValue), itemDTO.ITEM_CD, new NZInt(null, 0)); // ReceivingEntryController rcvController = new ReceivingEntryController(); // NZString strLotNo = rcvController.GenerateLotNo(strLotNoPrefix, ref iLastRunningNo); // shtView.Cells[row, (int)eColView.LOT_NO].Value = strLotNo.StrongValue; // } //} //else //{ // shtView.Cells[row, (int)eColView.LOT_NO].Value = null; //} ItemProcessDTO processDTO = itemBIZ.LoadItemProcess(ITEM_CD); //shtView.Cells[row, (int)eColView.LOT_SIZE].Value = processDTO.LOT_SIZE.NVL(0); } return(true); }
protected virtual void OnSave() { // Validate data try { ItemValidator itemValidator = new ItemValidator(); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(txtItemCode.ToNZString())); BusinessException itemException = itemValidator.CheckItemNotExist(txtItemCode.ToNZString()); if (itemException != null) { ValidateException.ThrowErrorItem(itemException.Error); } if (txtUpperQty.Decimal == 0) { ValidateException.ThrowErrorItem(new ErrorItem(txtUpperQty, string.Empty, "Can't input zero")); } if (txtLowerQty.Decimal == 0) { ValidateException.ThrowErrorItem(new ErrorItem(txtLowerQty, string.Empty, "Can't input zero")); } ItemController controller = new ItemController(); ItemUIDM uidm = controller.LoadItem(txtItemCode.Text.Trim().ToNZString()); BOMRegisterUIDM model = new BOMRegisterUIDM(); model.ITEM_CD = uidm.ITEM_CD; model.ITEM_DESC = uidm.ITEM_DESC; //model.ITEM_CLS = uidm.ITEM_CLS; //model.LOT_CONTROL_CLS = uidm.LOT_CONTROL_CLS; //model.ORDER_LOC_CD = uidm.ORDER_LOC_CD; //model.STORE_LOC_CD = uidm.STORE_LOC_CD; //model.ORDER_PROCESS_CLS = uidm.ORDER_PROCESS_CLS; //model.CONSUMTION_CLS = uidm.CONSUMTION_CLS; //model.PACK_SIZE = uidm.PACK_SIZE; //model.INV_UM_CLS = uidm.INV_UM_CLS; //model.ORDER_UM_CLS = uidm.ORDER_UM_CLS; //model.INV_UM_RATE = uidm.INV_UM_RATE; //model.ORDER_UM_RATE = uidm.ORDER_UM_RATE; model.LOWER_QTY.Value = txtLowerQty.Decimal; model.UPPER_QTY.Value = txtUpperQty.Decimal; model.CHILD_ORDER_LOC_CD.Value = (chkChildOrderLoc.Checked ? null : (string)cboOrderLoc.SelectedValue); model.MRP_FLAG.Value = (chkMRPFlag.Checked ? null : (string)cboMRPFlag.SelectedValue); m_model = model; this.Close(); } catch (ValidateException err) { MessageDialog.ShowBusiness(this, err.ErrorResults[0].Message); err.ErrorResults[0].FocusOnControl(); } }
/// <summary> /// Validate spread row. /// </summary> /// <param name="row"></param> /// <param name="forceValidate">force to validate.</param> /// <returns></returns> private bool ValidateRowSpread(int row, bool forceValidate) { if (!forceValidate && !m_bRowHasModified) { return(true); } //Check item string itemCode = shtCustomerOrder.Cells[row, (int)eColView.ITEM_CD].Text; if (String.IsNullOrEmpty(itemCode)) { ErrorItem error = new ErrorItem(null, TKPMessages.eValidate.VLM0006.ToString()); MessageDialog.ShowBusiness(this, error.Message); return(false); } else { ItemValidator itemValidator = new ItemValidator(); BusinessException error = itemValidator.CheckItemNotExist(itemCode.ToNZString()); if (error != null) { MessageDialog.ShowBusiness(this, error.Error.Message); return(false); } } // Check ReceiveQty //NZDecimal qty = new NZDecimal(null, shtCustomerOrder.Cells[row, (int)eColView.ISSUE_QTY].Value); //if (qty.IsNull || qty.StrongValue == decimal.Zero) //{ // ErrorItem error = new ErrorItem(null, TKPMessages.eValidate.VLM0039.ToString()); // MessageDialog.ShowBusiness(this, error.Message); // return false; //} //NZDecimal onhandqty = new NZDecimal(null, shtCustomerOrder.Cells[row, (int)eColView.ONHAND_QTY].Value); //if (onhandqty.IsNull || onhandqty.StrongValue == decimal.Zero) //{ // onhandqty.Value = 0; //} //if (qty.StrongValue > onhandqty.StrongValue) //{ // ErrorItem error = new ErrorItem(null, TKPMessages.eValidate.VLM0040.ToString()); // MessageDialog.ShowBusiness(this, error.Message); // return false; //} // ถ้า Validate Row ผ่าน แสดงว่า แถวนั้นไม่จำเป็นต้องเช็คอีกรอบ m_bRowHasModified = false; return(true); }
/// <summary> /// Update old data. /// </summary> /// <param name="oldTransactionID"></param> /// <param name="newDataModel"></param> public void SaveEdit(NZString oldTransactionID, AdjustmentEntryUIDM newDataModel) { try { CommonLib.Common.CurrentDatabase.KeepConnection = true; CommonLib.Common.CurrentDatabase.BeginTransaction(System.Data.IsolationLevel.Serializable); ValidateException validateException = new ValidateException(); AdjustmentValidator adjustmentValidator = new AdjustmentValidator(); TransactionValidator valTran = new TransactionValidator(); ItemValidator itemValidator = new ItemValidator(); DealingValidator locationValidator = new DealingValidator(); //validateException.AddError(adjustmentValidator.CheckEmptyAdjustDate(newDataModel.AdjustDate)); //validateException.AddError(adjustmentValidator.CheckEmptyReasonCode(newDataModel.ReasonCode)); //validateException.AddError(valTran.DateIsInCurrentPeriod(newDataModel.AdjustDate)); //validateException.AddError(itemValidator.CheckEmptyItemCode(newDataModel.ItemCode)); BusinessException businessException = itemValidator.CheckItemNotExist(newDataModel.ItemCode); if (businessException != null) { validateException.AddError(businessException.Error); } //validateException.AddError(locationValidator.CheckEmptyLocationCode(newDataModel.StoredLoc)); validateException.AddError(locationValidator.CheckNotExistsLocationCode(newDataModel.StoredLoc)); //validateException.AddError(adjustmentValidator.CheckEmptyAdjustQty(newDataModel.AdjustQty)); //validateException.AddError(adjustmentValidator.CheckIsZeroAdjustQty(newDataModel.AdjustQty)); validateException.ThrowIfHasError(); InventoryBIZ inventoryBIZ = new InventoryBIZ(); InventoryTransactionDTO dto = ConvertUIDMToDTO(newDataModel); inventoryBIZ.UpdateInventoryTransaction(CommonLib.Common.CurrentDatabase, oldTransactionID, dto); CommonLib.Common.CurrentDatabase.Commit(); } catch (System.Exception) { CommonLib.Common.CurrentDatabase.Rollback(); throw; } }
private bool ValidateData() { NZString ItemCD = new NZString(txtPartNo, txtPartNo.Text.Trim()); ItemValidator val = new ItemValidator(); ErrorItem err; err = val.CheckEmptyItemCode(ItemCD); if (err != null) { ValidateException.ThrowErrorItem(err); } BusinessException bizErr = val.CheckItemNotExist(ItemCD); if (bizErr != null) { ValidateException.ThrowErrorItem(bizErr.Error); } if (txtNumberofCopies.Text.Trim() == string.Empty || txtNumberofCopies.Double == 0) { txtNumberofCopies.Double = 1; } return(true); }
public bool SaveData(MultiWorkResultEntryUIDM model) { ItemBIZ bizItem = new ItemBIZ(); ClassListBIZ bizClassList = new ClassListBIZ(); InventoryBIZ biz = new InventoryBIZ(); IssueEntryValidator valLot = new IssueEntryValidator(); #region Validate data MultiWorkResultEntryValidator workResultEntryValidator = new MultiWorkResultEntryValidator(); ItemValidator itemValidator = new ItemValidator(); DealingValidator locationValidator = new DealingValidator(); CommonBizValidator commonVal = new CommonBizValidator(); ValidateException.ThrowErrorItem(workResultEntryValidator.CheckWorkResultDate(model.WorkResultDate)); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(model.ItemCode)); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(model.ChildItemCode)); ValidateException.ThrowErrorItem(workResultEntryValidator.CheckEmptyShiftType(model.ShiftClass)); BusinessException itemFound = itemValidator.CheckItemNotExist(model.ItemCode); if (itemFound != null) { ValidateException.ThrowErrorItem(itemFound.Error); } ValidateException.ThrowErrorItem(locationValidator.CheckEmptyLocationCode(model.OrderLoc)); ValidateException.ThrowErrorItem(locationValidator.CheckNotExistsLocationCode(model.OrderLoc)); ValidateException.ThrowErrorItem(locationValidator.CheckEmptyLocationCode(model.StoredLoc)); ValidateException.ThrowErrorItem(locationValidator.CheckNotExistsLocationCode(model.StoredLoc)); #endregion DataTable dtData = null; if (model.DataView == null) { MultiWorkResultEntryViewDTO dto = new MultiWorkResultEntryViewDTO(); dto.CreateDataTableSchema(out dtData); } else { dtData = model.DataView; } DataTable dtAdd = dtData.GetChanges(DataRowState.Added); DataTable dtUpdate = dtData.GetChanges(DataRowState.Modified); DataTable dtDelete = dtData.GetChanges(DataRowState.Deleted); DataTable dtUnChanged = dtData.GetChanges(DataRowState.Unchanged); List <InventoryTransactionDTO> listAdd = new List <InventoryTransactionDTO>(); List <InventoryTransactionDTO> listUpdate = new List <InventoryTransactionDTO>(); List <InventoryTransactionDTO> listDelete = new List <InventoryTransactionDTO>(); List <MultiWorkResultEntryViewDTO> listViewAdd = DTOUtility.ConvertDataTableToList <MultiWorkResultEntryViewDTO>(dtAdd); List <MultiWorkResultEntryViewDTO> listViewUpdate = DTOUtility.ConvertDataTableToList <MultiWorkResultEntryViewDTO>(dtUpdate); List <MultiWorkResultEntryViewDTO> listViewDelete = DTOUtility.ConvertDataTableToList <MultiWorkResultEntryViewDTO>(dtDelete); List <MultiWorkResultEntryViewDTO> listUnchanged = DTOUtility.ConvertDataTableToList <MultiWorkResultEntryViewDTO>(dtUnChanged); Database db = null; try { db = Common.CurrentDatabase; db.KeepConnection = true; db.BeginTransaction(); NZString runningNo = new NZString(); NZString strWorkResultGroupNo = new NZString(); InventoryTransactionDTO dtoWorkResult = null; InventoryTransactionDTO dtoNGResult = null; InventoryTransactionDTO dtoReserveResult = null; InventoryTransactionDTO dtoConsumption = null; InventoryTransBIZ bizTran = new InventoryTransBIZ(); SysConfigBIZ bizSYS = new SysConfigBIZ(); SysConfigDTO dtoSYS = bizSYS.LoadByPK(DataDefine.eSYSTEM_CONFIG.TRN080.SYS_GROUP_ID, (NZString)DataDefine.eSYSTEM_CONFIG.TRN080.SYS_KEY.NG_LOC_CD.ToString()); //SysConfigDTO dtoSupplyLot = bizSYS.LoadByPK((NZString)"SUPPLY", (NZString)"SUPP_LOT"); NZString strNGLocation = null; if (dtoSYS == null || dtoSYS.CHAR_DATA.IsNull || dtoSYS.CHAR_DATA.StrongValue == "ORDER_LOC") { strNGLocation = model.OrderLoc; } else { strNGLocation = dtoSYS.CHAR_DATA; } RunningNumberBIZ runningNumberBIZ = new RunningNumberBIZ(); //set Work Result Group No ให้กับทุกตัว //ถ้าheader ยังไม่มีก็ genใหม่ //ถ้าheader มีแล้ว ก็ใช้ตัวนั้น if (model.WorkResultGroupNo.IsNull) { strWorkResultGroupNo = runningNumberBIZ.GetCompleteRunningNo((NZString)"WORK_RESULT_GROUP_NO", (NZString)"TB_INV_TRANS_TR"); model.WorkResultGroupNo = strWorkResultGroupNo; } foreach (MultiWorkResultEntryViewDTO dtoAdd in listViewAdd) { runningNo = runningNumberBIZ.GetCompleteRunningNo((NZString)"WORK_RESULT_SLIP_NO", (NZString)"TB_INV_TRANS_TR"); //ถ้าใส่จำนวนใดจำนวนหนึ่งมา ก็จะ save ได้ if (dtoAdd.GOOD_QTY.NVL(0) + dtoAdd.NG_QTY.NVL(0) + dtoAdd.RESERVE_QTY.NVL(0) > 0) { dtoWorkResult = CreateDTOForWorkResult(model, dtoAdd); dtoWorkResult.SLIP_NO = runningNo; listAdd.Add(dtoWorkResult); if (dtoAdd.NG_QTY.NVL(0) > 0) { dtoNGResult = CreateDTOForNGResult(model, dtoAdd, strNGLocation); dtoNGResult.SLIP_NO = runningNo; listAdd.Add(dtoNGResult); } //เฉพาะ work result ที่จะมี reserve ได้ if (DataDefine.eTRAN_SUB_CLS.WR.ToString().Equals(model.TRAN_SUB_CLS)) { if (dtoAdd.RESERVE_QTY.NVL(0) > 0) { dtoReserveResult = CreateDTOForReserveResult(model, dtoAdd); dtoReserveResult.SLIP_NO = runningNo; listAdd.Add(dtoReserveResult); } } dtoConsumption = CreateDTOForConsumption(model, dtoAdd); dtoConsumption.REF_NO = dtoWorkResult.SLIP_NO; listAdd.Add(dtoConsumption); } } foreach (MultiWorkResultEntryViewDTO dtoUnchanged in listUnchanged) { dtoWorkResult = CreateDTOForWorkResult(model, dtoUnchanged); listUpdate.Add(dtoWorkResult); } foreach (MultiWorkResultEntryViewDTO dtoUpdate in listViewUpdate) { dtoWorkResult = CreateDTOForWorkResult(model, dtoUpdate); listUpdate.Add(dtoWorkResult); if (dtoUpdate.NG_QTY.NVL(0) > 0) { dtoNGResult = CreateDTOForNGResult(model, dtoUpdate, strNGLocation); if (dtoNGResult.TRANS_ID.IsNull) { listAdd.Add(dtoNGResult); } else { listUpdate.Add(dtoNGResult); } } //เฉพาะ work result ที่จะมี reserve ได้ if (DataDefine.eTRAN_SUB_CLS.WR.ToString().Equals(model.TRAN_SUB_CLS)) { if (dtoUpdate.RESERVE_QTY.NVL(0) > 0) { dtoReserveResult = CreateDTOForReserveResult(model, dtoUpdate); if (dtoReserveResult.TRANS_ID.IsNull) { listAdd.Add(dtoReserveResult); } else { listUpdate.Add(dtoReserveResult); } } } dtoConsumption = CreateDTOForConsumption(model, dtoUpdate); dtoConsumption.REF_NO = dtoWorkResult.SLIP_NO; //consumption ใช้การ add เพราะ ใช้การ clear แล้ว insert ใหม่ เลยต้อง add consumption ใหม่ตลอด listAdd.Add(dtoConsumption); biz.ClearConsumption(Common.CurrentDatabase, dtoWorkResult); } foreach (MultiWorkResultEntryViewDTO dtoDelete in listViewDelete) { dtoWorkResult = CreateDTOForWorkResult(model, dtoDelete); listDelete.Add(dtoWorkResult); if (dtoDelete.NG_QTY.NVL(0) > 0) { dtoNGResult = CreateDTOForNGResult(model, dtoDelete, strNGLocation); listDelete.Add(dtoNGResult); } //เฉพาะ work result ที่จะมี reserve ได้ if (DataDefine.eTRAN_SUB_CLS.WR.ToString().Equals(model.TRAN_SUB_CLS)) { if (dtoDelete.RESERVE_QTY.NVL(0) > 0) { dtoReserveResult = CreateDTOForReserveResult(model, dtoDelete); listDelete.Add(dtoReserveResult); } } dtoConsumption = CreateDTOForConsumption(model, dtoDelete); listDelete.Add(dtoConsumption); } biz.WorkResultItems(Common.CurrentDatabase, listAdd, listUpdate, listDelete); db.Commit(); } catch (Exception ex) { db.Rollback(); throw ex; } finally { if (db.DBConnectionState == ConnectionState.Open) { db.Close(); } } return(true); }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <returns>If save data operation completed will return true. Otherwise return false.</returns> public bool SaveData(WorkResultEntryUIDM model, DataDefine.eCONSUMPTION_CLS ConsumptionClass) { ItemBIZ bizItem = new ItemBIZ(); ClassListBIZ bizClassList = new ClassListBIZ(); InventoryBIZ biz = new InventoryBIZ(); IssueEntryValidator valLot = new IssueEntryValidator(); // Load default over consumption checking. ClassListDTO dtoOverConsumptionCheck = bizClassList.LoadByPK((NZString)DataDefine.OVER_CONSUME_CHK, (NZString)DataDefine.Convert2ClassCode(DataDefine.eOVER_CONSUME_CHK.DEFAULT)); bool bOverConsumeChk = false; if (dtoOverConsumptionCheck != null && dtoOverConsumptionCheck.CLS_DESC.NVL(String.Empty) == "1") { bOverConsumeChk = true; } //string mode = "UPD"; //if (model.WorkOrderNo.IsNull) //{ // mode = "ADD"; //} #region Validate data //== Validate Header, contain: ItemCode, Order Location and Qty. #region Validate mandatory WorkResultEntryValidator workResultEntryValidator = new WorkResultEntryValidator(); ItemValidator itemValidator = new ItemValidator(); DealingValidator locationValidator = new DealingValidator(); CommonBizValidator commonVal = new CommonBizValidator(); ValidateException.ThrowErrorItem(workResultEntryValidator.CheckWorkResultDate(model.WorkResultDate)); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(model.ItemCode)); ValidateException.ThrowErrorItem(workResultEntryValidator.CheckEmptyShiftType(model.ShipClass)); ValidateException.ThrowErrorItem(workResultEntryValidator.CheckDifferentLocationOfItem(model.DataView)); BusinessException itemFound = itemValidator.CheckItemNotExist(model.ItemCode); if (itemFound != null) { ValidateException.ThrowErrorItem(itemFound.Error); } if (ConsumptionClass != DataDefine.eCONSUMPTION_CLS.No) { ValidateException.ThrowErrorItem(locationValidator.CheckEmptyLocationCode(model.OrderLoc)); ValidateException.ThrowErrorItem(locationValidator.CheckNotExistsLocationCode(model.OrderLoc)); } ValidateException.ThrowErrorItem(locationValidator.CheckEmptyLocationCode(model.StoredLoc)); ValidateException.ThrowErrorItem(locationValidator.CheckNotExistsLocationCode(model.StoredLoc)); ValidateException.ThrowErrorItem(workResultEntryValidator.CheckWorkResultQty(model.WorkResultQty)); ValidateException.ThrowErrorItem(workResultEntryValidator.CheckWorkResultGoodQty((NZDecimal)(model.WorkResultQty.StrongValue - model.NGQty.StrongValue))); // Check LotNo ValidateException.ThrowErrorItem(commonVal.CheckInputLot(model.ItemCode, new NZString(), model.LotNo, false)); #endregion //== Validate Detail list. if (ConsumptionClass == DataDefine.eCONSUMPTION_CLS.Manual) { List <WorkResultEntryViewDTO> listItems = DTOUtility.ConvertDataTableToList <WorkResultEntryViewDTO>(model.DataView); #region Validate detail list. // Check ItemCD & LotNo List <string> listInvalidLotNo = new List <string>(); List <string> listInvalidConsumptionQty = new List <string>(); for (int i = 0; i < listItems.Count; i++) { BusinessException itemChildNotFound = itemValidator.CheckItemNotExist(listItems[i].ITEM_CD); if (itemChildNotFound != null) { ValidateException.ThrowErrorItem(itemChildNotFound.Error); } ItemDTO dtoItem = bizItem.LoadItem(listItems[i].ITEM_CD); WorkResultEntryViewDTO line = listItems[i]; //line.LOT_CONTROL_CLS = dtoItem.LOT_CONTROL_CLS; if (line.LOT_CONTROL_CLS.StrongValue == DataDefine.Convert2ClassCode(DataDefine.eLOT_CONTROL_CLS.Yes) && (line.LOT_NO.IsNull || line.LOT_NO.StrongValue.Trim() == string.Empty)) { if (listInvalidLotNo.Contains(line.ITEM_CD.StrongValue)) { continue; } listInvalidLotNo.Add(line.ITEM_CD.StrongValue); } if (bOverConsumeChk) { if (line.CONSUMPTION_QTY.StrongValue > line.ON_HAND_QTY.StrongValue) { if (listInvalidConsumptionQty.Contains(line.ITEM_CD.StrongValue)) { continue; } listInvalidConsumptionQty.Add(line.ITEM_CD.StrongValue); } } ValidateException.ThrowErrorItem(commonVal.CheckInputLot(line.ITEM_CD, line.LOC_CD, line.LOT_NO, true)); } // Generate item doesn't input LOT_NO if (listInvalidLotNo.Count > 0) { listInvalidLotNo.Sort(); string errorItems = string.Empty; for (int i = 0; i < listInvalidLotNo.Count; i++) { if (i != 0) { errorItems += ", "; } errorItems += listInvalidLotNo[i]; } ValidateException.ThrowErrorItem(new ErrorItem(null, TKPMessages.eValidate.VLM0050.ToString(), new object[] { errorItems })); return(false); } // Generate list item that input consumption qty more than stock onhand qty. if (listInvalidConsumptionQty.Count > 0) { listInvalidConsumptionQty.Sort(); string errorItems = string.Empty; for (int i = 0; i < listInvalidConsumptionQty.Count; i++) { if (i != 0) { errorItems += ", "; } errorItems += listInvalidConsumptionQty[i]; } ValidateException.ThrowErrorItem(new ErrorItem(null, TKPMessages.eValidate.VLM0051.ToString(), new object[] { errorItems })); return(false); } #endregion // Validate Child Item to support Parent Item. #region Validate Child Item to support Parent item. // Summary Consumption Qty by Item (not include LotNo) and then check compare with RequestQty. InventoryBIZ bizInventory = new InventoryBIZ(); List <WorkResultEntryViewDTO> listSourceChildItems = bizInventory.LoadConsumptionListFromItemCode(model.ItemCode, model.OrderLoc, model.WorkResultQty); for (int i = 0; i < listSourceChildItems.Count; i++) { object objSumByItem = model.DataView.Compute( String.Format("SUM({0})", WorkResultEntryViewDTO.eColumns.CONSUMPTION_QTY), String.Format("{0} = '{1}'", WorkResultEntryViewDTO.eColumns.ITEM_CD, listSourceChildItems[i].ITEM_CD.StrongValue) ); decimal sumConsumptionQty = 0; if (objSumByItem != null && objSumByItem != DBNull.Value) { sumConsumptionQty = Convert.ToDecimal(objSumByItem); } decimal diffQty = Math.Abs(sumConsumptionQty - listSourceChildItems[i].CONSUMPTION_QTY.StrongValue); if (sumConsumptionQty < listSourceChildItems[i].REQUEST_QTY.StrongValue) // Total of ConsumtpionQty < RequestQty { // Confirmation to continue save. MessageDialogResult dr = MessageDialog.ShowConfirmation(null, Message.LoadMessage(TKPMessages.eConfirm.CFM0001.ToString(), new object[] { listSourceChildItems[i].ITEM_CD.StrongValue, model.ItemCode.StrongValue, diffQty.ToString(DataDefine.DEFAULT_FORMAT_NUMBER) }), MessageDialogButtons.YesNo); if (dr == MessageDialogResult.No) { return(false); } } else if (sumConsumptionQty > listSourceChildItems[i].REQUEST_QTY.StrongValue) // Total of ConsumtpionQty > RequestQty { // Confirmation to continue save. MessageDialogResult dr = MessageDialog.ShowConfirmation(null, Message.LoadMessage(TKPMessages.eConfirm.CFM0002.ToString(), new object[] { listSourceChildItems[i].ITEM_CD.StrongValue, model.ItemCode.StrongValue, diffQty.ToString(DataDefine.DEFAULT_FORMAT_NUMBER) }), MessageDialogButtons.YesNo); if (dr == MessageDialogResult.No) { return(false); } } } #endregion } #endregion DataTable dtData; if (model.DataView == null) { WorkResultEntryViewDTO dto = new WorkResultEntryViewDTO(); dto.CreateDataTableSchema(out dtData); } else { dtData = model.DataView; } DataTable dtAdd = dtData.GetChanges(DataRowState.Added); DataTable dtUpdate = dtData.GetChanges(DataRowState.Modified); DataTable dtDelete = dtData.GetChanges(DataRowState.Deleted); List <InventoryTransactionDTO> listAdd = new List <InventoryTransactionDTO>(); List <InventoryTransactionDTO> listUpdate = new List <InventoryTransactionDTO>(); List <InventoryTransactionDTO> listDelete = new List <InventoryTransactionDTO>(); Database db = null; try { db = Common.CurrentDatabase; db.KeepConnection = true; db.BeginTransaction(); //TransactionValidator valTran = new TransactionValidator(); //InventoryTransBIZ bizTran = new InventoryTransBIZ(); //bizTran.l #region Header NZString runningNo = new NZString(); //ให้ generate lot ใหม่อีกครั้ง กรณีกรอกพร้อมกัน 2 เครื่อง ไม่งั้นมันจะ insert ข้อมูลมั่ว // ที่ใส่ตรงนี้เพราะว่า จะได้แก้ model.LotNo ก่อนที่จะสร้าง object dto //เนื่องจาก reserve ก็มีดึง lot no ไปใช้ if (model.WorkResultNo.IsNull) { RunningNumberBIZ runnningBiz = new RunningNumberBIZ(); NZString strCompleteLotNo = runnningBiz.GetCompleteLotNo(new NZDateTime(null, model.WorkResultDate.StrongValue), model.StoredLoc, model.ItemCode, new NZInt(null, 0)); model.LotNo = strCompleteLotNo; } InventoryTransactionDTO dtoWorkResult = CreateDTOForWorkResult(model); InventoryTransactionDTO dtoNGResult = CreateDTOForNGResult(model); InventoryTransactionDTO dtoReserveResult = CreateDTOForReserveResult(model); InventoryTransBIZ bizTran = new InventoryTransBIZ(); bizTran.LockRefSlipNumber(dtoWorkResult.REF_SLIP_NO); if (model.WorkResultNo.IsNull) { RunningNumberBIZ runningNumberBIZ = new RunningNumberBIZ(); runningNo = runningNumberBIZ.GetCompleteRunningNo((NZString)"WORK_RESULT_SLIP_NO", (NZString)"TB_INV_TRANS_TR"); // Create new transaction. dtoWorkResult.SLIP_NO = runningNo; dtoNGResult.SLIP_NO = runningNo; dtoReserveResult.SLIP_NO = runningNo; listAdd.Add(dtoWorkResult); if (model.NGQty.NVL(0) > 0) { listAdd.Add(dtoNGResult); } if (model.ReserveQty.NVL(0) > 0) { listAdd.Add(dtoReserveResult); } } else { // Update old transaction runningNo = model.WorkResultNo; listUpdate.Add(dtoWorkResult); if (!model.NGTransactionID.IsNull) // UPDATE NG IF IT ALREADY HAS NG QTY { listUpdate.Add(dtoNGResult); } else if (model.NGQty.NVL(0) > 0) // ADD NEW NG TRANS IF NEW NG IS INPUT { //dtoNGResult.SLIP_NO = dtoWorkResult.SLIP_NO; listAdd.Add(dtoNGResult); } if (!model.ReserveTransactionID.IsNull) // UPDATE Reserve IF IT ALREADY HAS Reserve QTY { listUpdate.Add(dtoReserveResult); } else if (model.ReserveQty.NVL(0) > 0) // ADD NEW Reserve TRANS IF NEW NG IS INPUT { //dtoReserveResult.SLIP_NO = dtoWorkResult.SLIP_NO; listAdd.Add(dtoNGResult); } } #endregion #region Detail #region Do Auto Consumption if (ConsumptionClass == DataDefine.eCONSUMPTION_CLS.Auto) { // WHEN CONSUMPTION IS AUTO // DELETE ALL OLD TRANSACTION FIRST THEN ADD NEW //Modify by Bunyapat L. //28 Apr 2011 //ให้สั่ง ClearConsumption ไปเลย List <WorkResultEntryViewDTO> listTMPDelete = null; List <InventoryTransactionDTO> listTmpDelete = null; if (dtData != null && dtData.Rows.Count > 0) { listTMPDelete = DTOUtility.ConvertDataTableToList <WorkResultEntryViewDTO>(dtData); listTmpDelete = new List <InventoryTransactionDTO>(); for (int i = 0; i < listTMPDelete.Count; i++) { WorkResultEntryViewDTO line = listTMPDelete[i]; InventoryTransactionDTO dto = CreateDTOForConsumption(model, line); dto.REF_NO = runningNo; listTmpDelete.Add(dto); } // Move to delete below section //biz.WorkResultItems(Common.CurrentDatabase, null, null, listTmpDelete); } biz.ClearConsumption(Common.CurrentDatabase, dtoWorkResult); if (dtData != null && dtData.Rows.Count > 0) { List <WorkResultEntryViewDTO> listTMPAdd = DTOUtility.ConvertDataTableToList <WorkResultEntryViewDTO>(dtData); // GET LOCATION INFORMATION DealingBIZ bizLoc = new DealingBIZ(); for (int i = 0; i < listTMPAdd.Count; i++) { DealingDTO dtoLoc = bizLoc.LoadLocation(listTMPAdd[i].LOC_CD); bool AllowNegative = dtoLoc.ALLOW_NEGATIVE.StrongValue == "01"; // GET CONSUMPTION ITEM FROM FIFO PROCESS WRITE BY KIMMIK. List <ActualOnhandViewDTO> dtoListActOnhand = biz.FifoListingProcess(Common.CurrentDatabase , listTMPAdd[i].ITEM_CD.StrongValue, listTMPAdd[i].LOC_CD.StrongValue , listTMPAdd[i].CONSUMPTION_QTY.StrongValue , !AllowNegative, AllowNegative); if (dtoListActOnhand != null && dtoListActOnhand.Count > 0) { for (int j = 0; j < dtoListActOnhand.Count; j++) { InventoryTransactionDTO dto = CreateDTOForConsumption(model, dtoListActOnhand[j]); dto.REF_NO = runningNo; listAdd.Add(dto); } } } } biz.WorkResultItems(Common.CurrentDatabase, listAdd, listUpdate, listDelete); } #endregion #region Do Manual Consumption if (ConsumptionClass == DataDefine.eCONSUMPTION_CLS.Manual) { List <InventoryTransactionDTO> listTmpDelete = new List <InventoryTransactionDTO>(); //== Update process. //Modify by Bunyapat L. //28 Apr 2011 //Manual consumption ให้ใช้การ insert เข้า Delete ทุกตัวที่เป็นตัวเก่า //แล้วค่อย Add ตัวใหม่แทน เพราะข้างใน function มันจะทำการ clear consumption ทั้งหมด ไม่งั้นจะเกิด bug ตอน update if (dtUpdate != null && dtUpdate.Rows.Count > 0) { List <WorkResultEntryViewDTO> listViewUpdate = DTOUtility.ConvertDataTableToList <WorkResultEntryViewDTO>(dtUpdate); for (int i = 0; i < listViewUpdate.Count; i++) { WorkResultEntryViewDTO line = listViewUpdate[i]; // Copy ค่า Header จาก Model ไปยัง DTO แต่ละตัว InventoryTransactionDTO dto = CreateDTOForConsumption(model, line); dto.REF_NO = runningNo; //listUpdate.Add(dto); listAdd.Add(dto); listTmpDelete.Add((InventoryTransactionDTO)dto.Clone()); } } //== Insert process. if (dtAdd != null && dtAdd.Rows.Count > 0) { List <WorkResultEntryViewDTO> listViewAdd = DTOUtility.ConvertDataTableToList <WorkResultEntryViewDTO>(dtAdd); for (int i = 0; i < listViewAdd.Count; i++) { WorkResultEntryViewDTO line = listViewAdd[i]; InventoryTransactionDTO dto = CreateDTOForConsumption(model, line); dto.REF_NO = runningNo; listAdd.Add(dto); } } //== Delete process. if (dtDelete != null && dtDelete.Rows.Count > 0) { List <WorkResultEntryViewDTO> listViewDelete = DTOUtility.ConvertDataTableToList <WorkResultEntryViewDTO>(dtDelete); for (int i = 0; i < dtDelete.Rows.Count; i++) { WorkResultEntryViewDTO line = listViewDelete[i]; // Copy ค่า Header จาก Model ไปยัง DTO แต่ละตัว InventoryTransactionDTO dto = CreateDTOForConsumption(model, line); dto.REF_NO = runningNo; listDelete.Add(dto); } } biz.WorkResultItems(Common.CurrentDatabase, null, null, listTmpDelete); biz.WorkResultItems(Common.CurrentDatabase, listAdd, listUpdate, listDelete); } #endregion #region Do No Consumption if (ConsumptionClass == DataDefine.eCONSUMPTION_CLS.No) { biz.WorkResultItems(Common.CurrentDatabase, listAdd, listUpdate, listDelete); } #endregion #endregion db.Commit(); } catch (Exception) { db.Rollback(); throw; } finally { if (db.DBConnectionState == ConnectionState.Open) { db.Close(); } } return(true); }
public void SaveNewPacking(PackingEntryUIDM data, int NumberOfBox) { try { #region Validate ItemValidator itemValidator = new ItemValidator(); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(data.MASTER_NO)); BusinessException businessException = itemValidator.CheckItemNotExist(data.MASTER_NO); if (businessException != null) { ValidateException.ThrowErrorItem(businessException.Error); } #endregion InventoryBIZ biz = new InventoryBIZ(); SysConfigBIZ sysBiz = new SysConfigBIZ(); SysConfigDTO defaultSourceLoc = sysBiz.LoadByPK(DataDefine.eSYSTEM_CONFIG.TRN320.SYS_GROUP_ID, (NZString)DataDefine.eSYSTEM_CONFIG.TRN320.SYS_KEY.SOURCE_LOC.ToString()); SysConfigDTO defaultDestinationLoc = sysBiz.LoadByPK(DataDefine.eSYSTEM_CONFIG.TRN320.SYS_GROUP_ID, (NZString)DataDefine.eSYSTEM_CONFIG.TRN320.SYS_KEY.DEST_LOC.ToString()); InventoryTransactionDTO Source = new InventoryTransactionDTO(); List <InventoryTransactionDTO> DestinationList = new List <InventoryTransactionDTO>(); #region Destination foreach (DataRow dr in data.DATA_VIEW.Rows) { InventoryTransactionDTO dto = new InventoryTransactionDTO(); dto.CRT_BY = Common.CurrentUserInfomation.UserCD; //dto.CRT_DATE dto.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dto.UPD_BY = Common.CurrentUserInfomation.UserCD; //dto.UPD_DATE dto.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //dto.TRANS_ID dto.ITEM_CD = data.MASTER_NO; dto.LOC_CD = defaultDestinationLoc.CHAR_DATA; dto.LOT_NO = new NZString(null, dr[(int)PackingEntryUIDM.eColView.LOT_NO]); dto.FG_NO = data.FG_NO; dto.PACK_NO = data.PACK_NO; dto.EXTERNAL_LOT_NO = new NZString(null, dr[(int)PackingEntryUIDM.eColView.EXTERNAL_LOT_NO]); dto.TRANS_DATE = data.PACKING_DATE; dto.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Packing).ToNZString(); dto.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In).ToNZString(); dto.FG_NO = data.FG_NO; if (dr[(int)PackingEntryUIDM.eColView.QTY] == null || dr[(int)PackingEntryUIDM.eColView.QTY] == (object)DBNull.Value) { dto.QTY = new NZDecimal(null, 0); } else { dto.QTY = new NZDecimal(null, dr[(int)PackingEntryUIDM.eColView.QTY]); } //dto.WEIGHT //dto.OBJ_ITEM_CD //dto.OBJ_ORDER_QTY //dto.REF_NO //dto.REF_SLIP_NO //dto.REF_SLIP_CLS //dto.OTHER_DL_NO //dto.SLIP_NO dto.REMARK = data.REMARK; //dto.DEALING_NO //dto.PRICE //dto.AMOUNT //dto.FOR_CUSTOMER //dto.FOR_MACHINE dto.SHIFT_CLS = data.SHIFT_CLS; //dto.REF_SLIP_NO2 //dto.NG_QTY //dto.NG_WEIGHT //dto.TRAN_SUB_CLS = dto.SCREEN_TYPE = DataDefine.ScreenType.PackingEntry.ToNZString(); //dto.GROUP_TRANS_ID //dto.RESERVE_QTY //dto.RETURN_QTY //dto.NG_REASON dto.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.In); //dto.LOT_REMARK dto.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //dto.CURRENCY //dto.REWORK_FLAG dto.OLD_DATA = new NZInt(null, 0); //dto.TIME_STAMP DestinationList.Add(dto); } #endregion #region Pack Source.CRT_BY = Common.CurrentUserInfomation.UserCD; //Source.CRT_DATE Source.CRT_MACHINE = Common.CurrentUserInfomation.Machine; Source.UPD_BY = Common.CurrentUserInfomation.UserCD; //Source.UPD_DATE Source.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //Source.TRANS_ID Source.ITEM_CD = data.MASTER_NO; Source.LOC_CD = defaultSourceLoc.CHAR_DATA; //Source.LOT_NO Source.FG_NO = data.FG_NO; Source.PACK_NO = data.PACK_NO; //Source.EXTERNAL_LOT_NO Source.TRANS_DATE = data.PACKING_DATE; Source.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Packing_Consumption).ToNZString(); Source.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out).ToNZString(); Source.QTY = data.TOTAL_QTY; //Source.WEIGHT //Source.OBJ_ITEM_CD //Source.OBJ_ORDER_QTY //Source.REF_NO //Source.REF_SLIP_NO //Source.REF_SLIP_CLS //Source.OTHER_DL_NO //Source.SLIP_NO Source.REMARK = data.REMARK; //Source.DEALING_NO //Source.PRICE //Source.AMOUNT //Source.FOR_CUSTOMER //Source.FOR_MACHINE Source.SHIFT_CLS = data.SHIFT_CLS; //Source.REF_SLIP_NO2 //Source.NG_QTY //Source.NG_WEIGHT //Source.TRAN_SUB_CLS = Source.SCREEN_TYPE = DataDefine.ScreenType.PackingEntry.ToNZString(); //Source.GROUP_TRANS_ID //Source.RESERVE_QTY //Source.RETURN_QTY //Source.NG_REASON Source.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.Out); //Source.LOT_REMARK Source.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //Source.CURRENCY //Source.REWORK_FLAG Source.OLD_DATA = new NZInt(null, 0); //Source.TIME_STAMP #endregion biz.AddPacking(DestinationList, Source, NumberOfBox); } catch (Exception) { throw; } }
public void SaveNewUnPacking(UnPackingEntryUIDM data) { try { #region Validate ItemValidator itemValidator = new ItemValidator(); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(data.ITEM_CD)); BusinessException businessException = itemValidator.CheckItemNotExist(data.ITEM_CD); if (businessException != null) { ValidateException.ThrowErrorItem(businessException.Error); } #endregion InventoryBIZ biz = new InventoryBIZ(); SysConfigBIZ sysBiz = new SysConfigBIZ(); SysConfigDTO defaultSourceLoc = sysBiz.LoadByPK(DataDefine.eSYSTEM_CONFIG.TRN330.SYS_GROUP_ID, (NZString)DataDefine.eSYSTEM_CONFIG.TRN330.SYS_KEY.SOURCE_LOC.ToString()); SysConfigDTO defaultDestinationLoc = sysBiz.LoadByPK(DataDefine.eSYSTEM_CONFIG.TRN330.SYS_GROUP_ID, (NZString)DataDefine.eSYSTEM_CONFIG.TRN330.SYS_KEY.DEST_LOC.ToString()); List <InventoryTransactionDTO> SourceList = new List <InventoryTransactionDTO>(); InventoryTransactionDTO Destination = new InventoryTransactionDTO(); #region source data.TOTAL_QTY = new NZDecimal(null, 0); foreach (DataRow dr in data.DATA_VIEW.Rows) { InventoryTransactionDTO dto = new InventoryTransactionDTO(); dto.CRT_BY = Common.CurrentUserInfomation.UserCD; dto.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dto.UPD_BY = Common.CurrentUserInfomation.UserCD; dto.UPD_MACHINE = Common.CurrentUserInfomation.Machine; dto.ITEM_CD = data.ITEM_CD; dto.LOC_CD = defaultSourceLoc.CHAR_DATA; dto.PACK_NO = new NZString(null, dr[(int)UnPackingEntryUIDM.eColView.PACK_NO]); dto.FG_NO = new NZString(null, dr[(int)UnPackingEntryUIDM.eColView.FG_NO]); dto.LOT_NO = new NZString(null, dr[(int)UnPackingEntryUIDM.eColView.LOT_NO]); dto.EXTERNAL_LOT_NO = new NZString(null, dr[(int)UnPackingEntryUIDM.eColView.EXTERNAL_LOT_NO]); dto.TRANS_DATE = data.UNPACKING_DATE; dto.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Unpack_Consumption).ToNZString(); dto.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out).ToNZString(); if (dr[(int)UnPackingEntryUIDM.eColView.ONHAND_QTY] == null || dr[(int)UnPackingEntryUIDM.eColView.ONHAND_QTY] == (object)DBNull.Value) { dto.QTY = new NZDecimal(null, 0); } else { dto.QTY = new NZDecimal(null, dr[(int)UnPackingEntryUIDM.eColView.ONHAND_QTY]); data.TOTAL_QTY += dto.QTY; } dto.REMARK = data.REMARK; dto.SHIFT_CLS = data.SHIFT_CLS; dto.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; dto.SCREEN_TYPE = DataDefine.ScreenType.UnPackingEntry.ToNZString(); dto.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.Out); dto.OLD_DATA = new NZInt(null, 0); //dto.TIME_STAMP SourceList.Add(dto); } #endregion #region Destination (Unpack) Destination.CRT_BY = Common.CurrentUserInfomation.UserCD; Destination.CRT_MACHINE = Common.CurrentUserInfomation.Machine; Destination.UPD_BY = Common.CurrentUserInfomation.UserCD; Destination.UPD_MACHINE = Common.CurrentUserInfomation.Machine; Destination.ITEM_CD = data.ITEM_CD; Destination.LOC_CD = defaultDestinationLoc.CHAR_DATA; Destination.TRANS_DATE = data.UNPACKING_DATE; Destination.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Unpack).ToNZString(); Destination.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In).ToNZString(); Destination.QTY = data.TOTAL_QTY; Destination.REMARK = data.REMARK; Destination.SHIFT_CLS = data.SHIFT_CLS; Destination.SCREEN_TYPE = DataDefine.ScreenType.UnPackingEntry.ToNZString(); Destination.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.In); Destination.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; Destination.OLD_DATA = new NZInt(null, 0); #endregion biz.AddUnPacking(SourceList, Destination); } catch (Exception) { throw; } }
public void SaveUpdatePacking(PackingEntryUIDM data) { try { #region Validate ItemValidator itemValidator = new ItemValidator(); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(data.MASTER_NO)); BusinessException businessException = itemValidator.CheckItemNotExist(data.MASTER_NO); if (businessException != null) { ValidateException.ThrowErrorItem(businessException.Error); } #endregion InventoryBIZ biz = new InventoryBIZ(); InventoryTransBIZ bizInvTrans = new InventoryTransBIZ(); //SysConfigBIZ sysBiz = new SysConfigBIZ(); //SysConfigDTO defaultSourceLoc = sysBiz.LoadByPK(DataDefine.eSYSTEM_CONFIG.TRN320.SYS_GROUP_ID, (NZString)DataDefine.eSYSTEM_CONFIG.TRN320.SYS_KEY.SOURCE_LOC.ToString()); //SysConfigDTO defaultDestinationLoc = sysBiz.LoadByPK(DataDefine.eSYSTEM_CONFIG.TRN320.SYS_GROUP_ID, (NZString)DataDefine.eSYSTEM_CONFIG.TRN320.SYS_KEY.DEST_LOC.ToString()); InventoryTransactionDTO Source = null; List <InventoryTransactionDTO> NewLotList = null; List <InventoryTransactionDTO> ModifyLotList = null; List <InventoryTransactionDTO> DeleteLotList = null; DataTable dt = data.DATA_VIEW; DataTable dtNew = dt.GetChanges(DataRowState.Added); DataTable dtDelete = dt.GetChanges(DataRowState.Deleted); DataTable dtModify = dt.GetChanges(DataRowState.Modified); ModifyLotList = new List <InventoryTransactionDTO>(); #region Pack Source = bizInvTrans.LoadByTransactionID(data.TRANS_ID); //Source.CRT_BY = Common.CurrentUserInfomation.UserCD; //Source.CRT_DATE //Source.CRT_MACHINE = Common.CurrentUserInfomation.Machine; Source.UPD_BY = Common.CurrentUserInfomation.UserCD; //Source.UPD_DATE Source.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //Source.TRANS_ID //Source.ITEM_CD = data.MASTER_NO; //Source.LOC_CD = data.SOURCE_LOC; //Source.LOT_NO Source.FG_NO = data.FG_NO; //Source.PACK_NO = data.PACK_NO; //Source.EXTERNAL_LOT_NO //Source.TRANS_DATE = data.PACKING_DATE; //Source.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Packing_Consumption).ToNZString(); //Source.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out).ToNZString(); Source.QTY = data.TOTAL_QTY; //Source.WEIGHT //Source.OBJ_ITEM_CD //Source.OBJ_ORDER_QTY //Source.REF_NO //Source.REF_SLIP_NO //Source.REF_SLIP_CLS //Source.OTHER_DL_NO //Source.SLIP_NO Source.REMARK = data.REMARK; //Source.DEALING_NO //Source.PRICE //Source.AMOUNT //Source.FOR_CUSTOMER //Source.FOR_MACHINE Source.SHIFT_CLS = data.SHIFT_CLS; //Source.REF_SLIP_NO2 //Source.NG_QTY //Source.NG_WEIGHT //Source.TRAN_SUB_CLS = Source.SCREEN_TYPE = DataDefine.ScreenType.PackingEntry.ToNZString(); //Source.GROUP_TRANS_ID //Source.RESERVE_QTY //Source.RETURN_QTY //Source.NG_REASON Source.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.Out); //Source.LOT_REMARK Source.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //Source.CURRENCY //Source.REWORK_FLAG Source.OLD_DATA = new NZInt(null, 0); //Source.TIME_STAMP ModifyLotList.Add(Source); #endregion #region Destination : Modify Record if (dtModify != null) { foreach (DataRow dr in dtModify.Rows) { InventoryTransactionDTO dto = bizInvTrans.LoadByTransactionID(new NZString(null, dr[(int)PackingEntryUIDM.eColView.TRANS_ID])); //dto.CRT_BY = Common.CurrentUserInfomation.UserCD; //dto.CRT_DATE //dto.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dto.UPD_BY = Common.CurrentUserInfomation.UserCD; //dto.UPD_DATE dto.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //dto.TRANS_ID //dto.ITEM_CD = data.MASTER_NO; //dto.LOC_CD = defaultDestinationLoc.CHAR_DATA; //dto.LOT_NO = new NZString(null, dr[(int)PackingEntryUIDM.eColView.LOT_NO]); dto.FG_NO = data.FG_NO; //dto.PACK_NO = data.PACK_NO; dto.EXTERNAL_LOT_NO = new NZString(null, dr[(int)PackingEntryUIDM.eColView.EXTERNAL_LOT_NO]); //dto.TRANS_DATE = data.PACKING_DATE; //dto.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Packing).ToNZString(); //dto.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In).ToNZString(); if (dr[(int)PackingEntryUIDM.eColView.QTY] == null || dr[(int)PackingEntryUIDM.eColView.QTY] == (object)DBNull.Value) { dto.QTY = new NZDecimal(null, 0); } else { dto.QTY = new NZDecimal(null, dr[(int)PackingEntryUIDM.eColView.QTY]); } //dto.WEIGHT //dto.OBJ_ITEM_CD //dto.OBJ_ORDER_QTY //dto.REF_NO //dto.REF_SLIP_NO //dto.REF_SLIP_CLS //dto.OTHER_DL_NO //dto.SLIP_NO dto.REMARK = data.REMARK; //dto.DEALING_NO //dto.PRICE //dto.AMOUNT //dto.FOR_CUSTOMER //dto.FOR_MACHINE dto.SHIFT_CLS = data.SHIFT_CLS; //dto.REF_SLIP_NO2 //dto.NG_QTY //dto.NG_WEIGHT //dto.TRAN_SUB_CLS = dto.SCREEN_TYPE = DataDefine.ScreenType.PackingEntry.ToNZString(); //dto.GROUP_TRANS_ID //dto.RESERVE_QTY //dto.RETURN_QTY //dto.NG_REASON dto.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.In); //dto.LOT_REMARK dto.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //dto.CURRENCY //dto.REWORK_FLAG dto.OLD_DATA = new NZInt(null, 0); //dto.TIME_STAMP ModifyLotList.Add(dto); } } #endregion #region Destination : New Record if (dtNew != null) { NewLotList = new List <InventoryTransactionDTO>(); foreach (DataRow dr in dtNew.Rows) { InventoryTransactionDTO dto = new InventoryTransactionDTO(); dto.CRT_BY = Common.CurrentUserInfomation.UserCD; //dto.CRT_DATE dto.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dto.UPD_BY = Common.CurrentUserInfomation.UserCD; //dto.UPD_DATE dto.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //dto.TRANS_ID dto.ITEM_CD = data.MASTER_NO; dto.LOC_CD = data.DEST_LOC; dto.LOT_NO = new NZString(null, dr[(int)PackingEntryUIDM.eColView.LOT_NO]); dto.FG_NO = data.FG_NO; dto.PACK_NO = data.PACK_NO; dto.EXTERNAL_LOT_NO = new NZString(null, dr[(int)PackingEntryUIDM.eColView.EXTERNAL_LOT_NO]); dto.TRANS_DATE = data.PACKING_DATE; dto.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Packing).ToNZString(); dto.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In).ToNZString(); if (dr[(int)PackingEntryUIDM.eColView.QTY] == null || dr[(int)PackingEntryUIDM.eColView.QTY] == (object)DBNull.Value) { dto.QTY = new NZDecimal(null, 0); } else { dto.QTY = new NZDecimal(null, dr[(int)PackingEntryUIDM.eColView.QTY]); } //dto.WEIGHT //dto.OBJ_ITEM_CD //dto.OBJ_ORDER_QTY //dto.REF_NO //dto.REF_SLIP_NO //dto.REF_SLIP_CLS //dto.OTHER_DL_NO dto.SLIP_NO = data.PACKING_NO; dto.REMARK = data.REMARK; //dto.DEALING_NO //dto.PRICE //dto.AMOUNT //dto.FOR_CUSTOMER //dto.FOR_MACHINE dto.SHIFT_CLS = data.SHIFT_CLS; //dto.REF_SLIP_NO2 //dto.NG_QTY //dto.NG_WEIGHT //dto.TRAN_SUB_CLS = dto.SCREEN_TYPE = DataDefine.ScreenType.PackingEntry.ToNZString(); dto.GROUP_TRANS_ID = Source.GROUP_TRANS_ID; //dto.RESERVE_QTY //dto.RETURN_QTY //dto.NG_REASON dto.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.In); //dto.LOT_REMARK dto.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //dto.CURRENCY //dto.REWORK_FLAG dto.OLD_DATA = new NZInt(null, 0); //dto.TIME_STAMP NewLotList.Add(dto); } } #endregion #region Destination : Delete Record if (dtDelete != null) { DeleteLotList = new List <InventoryTransactionDTO>(); List <InventoryTransactionDTO> listDelete = DTOUtility.ConvertDataTableToList <InventoryTransactionDTO>(dtDelete); foreach (InventoryTransactionDTO dtoDelete in listDelete) { if (dtoDelete.TRANS_ID == null || dtoDelete.TRANS_ID == (object)DBNull.Value) { continue; } InventoryTransactionDTO dto = bizInvTrans.LoadByTransactionID(new NZString(null, dtoDelete.TRANS_ID)); DeleteLotList.Add(dto); } } #endregion biz.UpdatePacking(NewLotList, ModifyLotList, DeleteLotList); } catch (Exception) { throw; } }
public void SaveNewProductionReport(ProductionReportEntryUIDM data) { try { ItemValidator itemValidator = new ItemValidator(); ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(data.MASTER_NO)); BusinessException businessException = itemValidator.CheckItemNotExist(data.MASTER_NO); if (businessException != null) { ValidateException.ThrowErrorItem(businessException.Error); } InventoryBIZ bizInv = new InventoryBIZ(); DealingConstraintBIZ bizConstraint = new DealingConstraintBIZ(); DealingConstraintDTO constriant = bizConstraint.LoadDealingConstraint(data.PROCESS); InventoryTransactionDTO dtoInvMainTransIn = new InventoryTransactionDTO(); InventoryTransactionDTO dtoInvMainTransOut = null; #region Main Transaction : for good qty dtoInvMainTransIn.CRT_BY = Common.CurrentUserInfomation.UserCD; //dtoInvMainTransIn.CRT_DATE = dtoInvMainTransIn.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dtoInvMainTransIn.UPD_BY = Common.CurrentUserInfomation.UserCD; //dtoInvMainTransIn.UPD_DATE = dtoInvMainTransIn.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //dtoInvMainTransIn.TRANS_ID = dtoInvMainTransIn.ITEM_CD = data.MASTER_NO; dtoInvMainTransIn.LOC_CD = data.PROCESS; //dtoInvMainTransIn.LOT_NO = //dtoInvMainTransIn.PACK_NO = dtoInvMainTransIn.EXTERNAL_LOT_NO = data.CUST_LOT_NO; dtoInvMainTransIn.TRANS_DATE = data.PRODUCTION_REPORT_DATE; dtoInvMainTransIn.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.WorkResult).ToNZString(); dtoInvMainTransIn.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In).ToNZString(); dtoInvMainTransIn.QTY = data.QTY; dtoInvMainTransIn.WEIGHT = data.WEIGHT; //dtoInvMainTransIn.OBJ_ITEM_CD = //dtoInvMainTransIn.OBJ_ORDER_QTY = //dtoInvMainTransIn.REF_NO = //dtoInvMainTransIn.REF_SLIP_NO = //dtoInvMainTransIn.REF_SLIP_CLS = //dtoInvMainTransIn.OTHER_DL_NO = //dtoInvMainTransIn.SLIP_NO = dtoInvMainTransIn.REMARK = data.REMARK; dtoInvMainTransIn.DEALING_NO = data.SUPPLIER; //dtoInvMainTransIn.PRICE = //dtoInvMainTransIn.AMOUNT = //dtoInvMainTransIn.FOR_CUSTOMER = dtoInvMainTransIn.FOR_MACHINE = data.MACHINE_NO; dtoInvMainTransIn.SHIFT_CLS = data.SHIFT; //dtoInvMainTransIn.REF_SLIP_NO2 = dtoInvMainTransIn.NG_QTY = data.NG_QTY; //dtoInvMainTransIn.NG_WEIGHT = //dtoInvMainTransIn.TRAN_SUB_CLS = new NZString(null, data.REWORK.StrongValue); dtoInvMainTransIn.TRAN_SUB_CLS = Convert.ToInt32(data.REWORK.StrongValue) == (int)DataDefine.eTRAN_SUB_CLS.RW ? new NZString(null, DataDefine.eTRAN_SUB_CLS.RW.ToString()) : new NZString(null, DataDefine.eTRAN_SUB_CLS.WR.ToString()); dtoInvMainTransIn.REWORK_FLAG = new NZInt(data.REWORK.Owner, Convert.ToInt32(data.REWORK));//(data.REWORK.NVL("WR") == DataDefine.eTRAN_SUB_CLS.RW.ToString() ? 1 : 0).ToNZInt(); dtoInvMainTransIn.SCREEN_TYPE = DataDefine.ScreenType.WorkResultEntry.ToNZString(); //dtoInvMainTransIn.GROUP_TRANS_ID = //dtoInvMainTransIn.RESERVE_QTY = //dtoInvMainTransIn.NG_REASON = dtoInvMainTransIn.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.In); dtoInvMainTransIn.LOT_REMARK = data.LOT_NO; dtoInvMainTransIn.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //dtoInvMainTransIn.CURRENCY = dtoInvMainTransIn.OLD_DATA = new NZInt(null, 0); #endregion if (constriant == null || constriant.NO_CONSUMPTION_FLAG.StrongValue == 0) { dtoInvMainTransOut = new InventoryTransactionDTO(); #region Main Transaction for used qty(qty + ng) dtoInvMainTransOut.CRT_BY = Common.CurrentUserInfomation.UserCD; //dtoInvMainTransOut.CRT_DATE = dtoInvMainTransOut.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dtoInvMainTransOut.UPD_BY = Common.CurrentUserInfomation.UserCD; //dtoInvMainTransOut.UPD_DATE = dtoInvMainTransOut.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //dtoInvMainTransOut.TRANS_ID = dtoInvMainTransOut.ITEM_CD = data.MASTER_NO; dtoInvMainTransOut.LOC_CD = data.PROCESS; //dtoInvMainTransOut.LOT_NO = //dtoInvMainTransOut.PACK_NO = dtoInvMainTransOut.EXTERNAL_LOT_NO = data.CUST_LOT_NO; dtoInvMainTransOut.TRANS_DATE = data.PRODUCTION_REPORT_DATE; dtoInvMainTransOut.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Consumption).ToNZString(); dtoInvMainTransOut.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out).ToNZString(); dtoInvMainTransOut.QTY = new NZDecimal(null, data.QTY.StrongValue + data.NG_QTY.StrongValue); dtoInvMainTransOut.WEIGHT = data.WEIGHT; //dtoInvMainTransOut.OBJ_ITEM_CD = //dtoInvMainTransOut.OBJ_ORDER_QTY = //dtoInvMainTransOut.REF_NO = //dtoInvMainTransOut.REF_SLIP_NO = //dtoInvMainTransOut.REF_SLIP_CLS = //dtoInvMainTransOut.OTHER_DL_NO = //dtoInvMainTransOut.SLIP_NO = dtoInvMainTransOut.REMARK = data.REMARK; dtoInvMainTransOut.DEALING_NO = data.SUPPLIER; //dtoInvMainTransOut.PRICE = //dtoInvMainTransOut.AMOUNT = //dtoInvMainTransOut.FOR_CUSTOMER = dtoInvMainTransOut.FOR_MACHINE = data.MACHINE_NO; dtoInvMainTransOut.SHIFT_CLS = data.SHIFT; //dtoInvMainTransOut.REF_SLIP_NO2 = //dtoInvMainTransOut.NG_QTY = data.NG_QTY; //dtoInvMainTransOut.NG_WEIGHT = //dtoInvMainTransOut.TRAN_SUB_CLS = new NZString(null, DataDefine.eTRAN_SUB_CLS.WR.ToString()); dtoInvMainTransOut.SCREEN_TYPE = DataDefine.ScreenType.WorkResultEntry.ToNZString(); //dtoInvMainTransOut.GROUP_TRANS_ID = //dtoInvMainTransOut.RESERVE_QTY = //dtoInvMainTransOut.NG_REASON = dtoInvMainTransOut.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.Out); dtoInvMainTransOut.LOT_REMARK = data.LOT_NO; dtoInvMainTransOut.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //dtoInvMainTransOut.CURRENCY = dtoInvMainTransOut.OLD_DATA = new NZInt(null, 0); #endregion } #region NG Transaction List <InventoryTransactionDTO> listNG = new List <InventoryTransactionDTO>(); DataTable dtData = data.DataView; foreach (DataRow dr in dtData.Rows) { InventoryTransactionDTO dtoNG = new InventoryTransactionDTO(); dtoNG.CRT_BY = Common.CurrentUserInfomation.UserCD; //dtoNG.CRT_DATE = dtoNG.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dtoNG.UPD_BY = Common.CurrentUserInfomation.UserCD; //dtoNG.UPD_DATE = dtoNG.UPD_MACHINE = Common.CurrentUserInfomation.Machine; //dtoNG.TRANS_ID = dtoNG.ITEM_CD = data.MASTER_NO; dtoNG.LOC_CD = data.PROCESS; //dtoNG.LOT_NO = //dtoNG.PACK_NO = dtoNG.EXTERNAL_LOT_NO = data.CUST_LOT_NO; dtoNG.TRANS_DATE = data.PRODUCTION_REPORT_DATE; dtoNG.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.NGWorkResult).ToNZString(); dtoNG.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.None).ToNZString(); if (dr[(int)ProductionReportEntryViewDTO.eColumns.NG_QTY] == null || dr[(int)ProductionReportEntryViewDTO.eColumns.NG_QTY] == (object)DBNull.Value) { dtoNG.QTY = new NZDecimal(null, 0); dtoNG.NG_QTY = new NZDecimal(null, 0); } else { dtoNG.QTY = new NZDecimal(null, dr[(int)ProductionReportEntryViewDTO.eColumns.NG_QTY]); dtoNG.NG_QTY = new NZDecimal(null, dr[(int)ProductionReportEntryViewDTO.eColumns.NG_QTY]); } dtoNG.WEIGHT = new NZDecimal(null, dr[(int)ProductionReportEntryViewDTO.eColumns.NG_WEIGHT]); //dtoNG.OBJ_ITEM_CD = //dtoNG.OBJ_ORDER_QTY = //dtoNG.REF_NO = //dtoNG.REF_SLIP_NO = //dtoNG.REF_SLIP_CLS = //dtoNG.OTHER_DL_NO = //dtoNG.SLIP_NO = dtoNG.REMARK = data.REMARK; dtoNG.DEALING_NO = data.SUPPLIER; //dtoNG.PRICE = //dtoNG.AMOUNT = //dtoNG.FOR_CUSTOMER = dtoNG.FOR_MACHINE = data.MACHINE_NO; dtoNG.SHIFT_CLS = data.SHIFT; //dtoNG.REF_SLIP_NO2 = //dtoNG.NG_QTY = new NZDecimal(null, dr[(int)ProductionReportEntryViewDTO.eColumns.NG_QTY]); dtoNG.NG_WEIGHT = new NZDecimal(null, dr[(int)ProductionReportEntryViewDTO.eColumns.NG_WEIGHT]); dtoNG.TRAN_SUB_CLS = new NZString(null, dr[(int)ProductionReportEntryViewDTO.eColumns.NG_CRITERIA_CD]); dtoNG.SCREEN_TYPE = DataDefine.ScreenType.WorkResultEntry.ToNZString(); //dtoNG.GROUP_TRANS_ID = //dtoNG.RESERVE_QTY = //dtoNG.NG_REASON = dtoNG.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.None); dtoNG.LOT_REMARK = data.LOT_NO; dtoNG.PERSON_IN_CHARGE = data.PERSON_IN_CHARGE; //dtoNG.CURRENCY = dtoNG.OLD_DATA = new NZInt(null, 0); //save only qty > 0 if (dtoNG.QTY > 0) { listNG.Add(dtoNG); } } #endregion bizInv.AddProductionReport(dtoInvMainTransIn, dtoInvMainTransOut, listNG); } catch (Exception) { throw; } }
internal void SaveNewMovePart(MovePartUIDM model) { #region Validate ItemValidator itemValidator = new ItemValidator(); BusinessException businessException = itemValidator.CheckItemNotExist(model.MASTER_NO); if (businessException != null) { ValidateException.ThrowErrorItem(businessException.Error); } #endregion InventoryBIZ bizInv = new InventoryBIZ(); DealingConstraintBIZ bizConstraint = new DealingConstraintBIZ(); InventoryTransactionDTO dtoInvTrnsFrom = new InventoryTransactionDTO(); InventoryTransactionDTO dtoInvTrnsTo = new InventoryTransactionDTO(); #region From dtoInvTrnsFrom.CRT_BY = CommonLib.Common.CurrentUserInfomation.UserCD; dtoInvTrnsFrom.CRT_MACHINE = CommonLib.Common.CurrentUserInfomation.Machine; dtoInvTrnsFrom.UPD_BY = CommonLib.Common.CurrentUserInfomation.UserCD; dtoInvTrnsFrom.UPD_MACHINE = CommonLib.Common.CurrentUserInfomation.Machine; //dtoInvTrnsListFrom.TRANS_ID = dtoInvTrnsFrom.ITEM_CD = model.MASTER_NO; dtoInvTrnsFrom.LOC_CD = model.FROM_PROCESS; //dtoInvTrnsFrom.LOT_NO = model.LOT_NO; //dtoInvTrnsListFrom.PACK_NO = string.Empty; dtoInvTrnsFrom.TRANS_DATE = model.MOVE_DATE; dtoInvTrnsFrom.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.MovePart).ToNZString(); dtoInvTrnsFrom.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out).ToNZString(); dtoInvTrnsFrom.QTY = model.MOVE_QTY; //dtoInvTrnsListFrom.OBJ_ITEM_CD = //dtoInvTrnsListFrom.OBJ_ORDER_QTY = //dtoInvTrnsListFrom.REF_NO = //dtoInvTrnsListFrom.REF_SLIP_NO = //dtoInvTrnsListFrom.REF_SLIP_CLS = //dtoInvTrnsListFrom.OTHER_DL_NO = //dtoInvTrnsListFrom.SLIP_NO = dtoInvTrnsFrom.REMARK = model.REMARK; //dtoInvTrnsListFrom.DEALING_NO = //dtoInvTrnsListFrom.EXTERNAL_LOT_NO = //dtoInvTrnsListFrom.PRICE = //dtoInvTrnsListFrom.FOR_CUSTOMER = //dtoInvTrnsListFrom.FOR_MACHINE = dtoInvTrnsFrom.SHIFT_CLS = model.SHIFT_CLS; //dtoInvTrnsListFrom.REF_SLIP_NO2 = //dtoInvTrnsListFrom.NG_QTY = dtoInvTrnsFrom.TRAN_SUB_CLS = model.REASON; dtoInvTrnsFrom.SCREEN_TYPE = DataDefine.ScreenType.MovePartEntry.ToNZString(); //dtoInvTrnsListFrom.GROUP_TRANS_ID = //dtoInvTrnsListFrom.RESERVE_QTY = //dtoInvTrnsListFrom.NG_REASON = dtoInvTrnsFrom.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.Out); dtoInvTrnsFrom.LOT_REMARK = model.LOT_NO; dtoInvTrnsFrom.OLD_DATA = new NZInt(null, 0); dtoInvTrnsFrom.WEIGHT = model.WEIGHT; #endregion #region To dtoInvTrnsTo.CRT_BY = CommonLib.Common.CurrentUserInfomation.UserCD; dtoInvTrnsTo.CRT_MACHINE = CommonLib.Common.CurrentUserInfomation.Machine; dtoInvTrnsTo.UPD_BY = CommonLib.Common.CurrentUserInfomation.UserCD; dtoInvTrnsTo.UPD_MACHINE = CommonLib.Common.CurrentUserInfomation.Machine; //dtoInvTrnsListFrom.TRANS_ID = dtoInvTrnsTo.ITEM_CD = model.MASTER_NO; dtoInvTrnsTo.LOC_CD = model.TO_PROCESS; //dtoInvTrnsTo.LOT_NO = model.LOT_NO; //dtoInvTrnsListFrom.PACK_NO = string.Empty; dtoInvTrnsTo.TRANS_DATE = model.MOVE_DATE; dtoInvTrnsTo.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.MovePart).ToNZString(); dtoInvTrnsTo.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In).ToNZString(); dtoInvTrnsTo.QTY = model.MOVE_QTY; //dtoInvTrnsListFrom.OBJ_ITEM_CD = //dtoInvTrnsListFrom.OBJ_ORDER_QTY = //dtoInvTrnsListFrom.REF_NO = //dtoInvTrnsListFrom.REF_SLIP_NO = //dtoInvTrnsListFrom.REF_SLIP_CLS = //dtoInvTrnsListFrom.OTHER_DL_NO = //dtoInvTrnsListFrom.SLIP_NO = dtoInvTrnsTo.REMARK = model.REMARK; //dtoInvTrnsListFrom.DEALING_NO = //dtoInvTrnsListFrom.EXTERNAL_LOT_NO = //dtoInvTrnsListFrom.PRICE = //dtoInvTrnsListFrom.FOR_CUSTOMER = //dtoInvTrnsListFrom.FOR_MACHINE = dtoInvTrnsTo.SHIFT_CLS = model.SHIFT_CLS; //dtoInvTrnsListFrom.REF_SLIP_NO2 = //dtoInvTrnsListFrom.NG_QTY = dtoInvTrnsTo.TRAN_SUB_CLS = model.REASON; dtoInvTrnsTo.SCREEN_TYPE = DataDefine.ScreenType.MovePartEntry.ToNZString(); //dtoInvTrnsListFrom.GROUP_TRANS_ID = //dtoInvTrnsListFrom.RESERVE_QTY = //dtoInvTrnsListFrom.NG_REASON = dtoInvTrnsTo.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.In); dtoInvTrnsTo.LOT_REMARK = model.LOT_NO; dtoInvTrnsTo.OLD_DATA = new NZInt(null, 0); dtoInvTrnsTo.WEIGHT = model.WEIGHT; #endregion #region Consumption List <InventoryTransactionDTO> listComponent = new List <InventoryTransactionDTO>(); DealingConstraintDTO dtoConstraint = bizConstraint.LoadDealingConstraint(model.FROM_PROCESS); if (dtoConstraint != null && dtoConstraint.COMPONENT_ITEM_USAGE.StrongValue == 1) { //get component usage BOMBIZ bizBOM = new BOMBIZ(); List <ComponentUsageDTO> components = bizBOM.LoadComponentUsage(model.MASTER_NO, model.MOVE_QTY); if (components != null) { foreach (ComponentUsageDTO component in components) { InventoryTransactionDTO dtoComponent = new InventoryTransactionDTO(); dtoComponent.CRT_BY = CommonLib.Common.CurrentUserInfomation.UserCD; dtoComponent.CRT_MACHINE = CommonLib.Common.CurrentUserInfomation.Machine; dtoComponent.UPD_BY = CommonLib.Common.CurrentUserInfomation.UserCD; dtoComponent.UPD_MACHINE = CommonLib.Common.CurrentUserInfomation.Machine; //dtoComponent.TRANS_ID = dtoComponent.ITEM_CD = component.LOWER_ITEM_CD; dtoComponent.LOC_CD = model.FROM_PROCESS; //dtoComponent.LOT_NO = model.LOT_NO; //dtoComponent.PACK_NO = string.Empty; dtoComponent.TRANS_DATE = model.MOVE_DATE; dtoComponent.TRANS_CLS = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.MoveConsumption).ToNZString(); dtoComponent.IN_OUT_CLS = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out).ToNZString(); dtoComponent.QTY = component.USAGE_QTY; //dtoComponent.OBJ_ITEM_CD = //dtoComponent.OBJ_ORDER_QTY = //dtoComponent.REF_NO = //dtoComponent.REF_SLIP_NO = //dtoComponent.REF_SLIP_CLS = //dtoComponent.OTHER_DL_NO = //dtoComponent.SLIP_NO = dtoComponent.REMARK = model.REMARK; //dtoComponent.DEALING_NO = //dtoComponent.EXTERNAL_LOT_NO = //dtoComponent.PRICE = //dtoComponent.FOR_CUSTOMER = //dtoComponent.FOR_MACHINE = dtoComponent.SHIFT_CLS = model.SHIFT_CLS; //dtoComponent.REF_SLIP_NO2 = //dtoComponent.NG_QTY = dtoComponent.TRAN_SUB_CLS = model.REASON; dtoComponent.SCREEN_TYPE = DataDefine.ScreenType.MovePartEntry.ToNZString(); //dtoComponent.GROUP_TRANS_ID = //dtoComponent.RESERVE_QTY = //dtoComponent.NG_REASON = dtoComponent.EFFECT_STOCK = new NZInt(null, (int)DataDefine.eEFFECT_STOCK.Out); dtoComponent.LOT_REMARK = model.LOT_NO; dtoComponent.OLD_DATA = new NZInt(null, 0); //dtoComponent.WEIGHT = model.WEIGHT; listComponent.Add(dtoComponent); } } #endregion } bizInv.AddMovePart(dtoInvTrnsFrom, dtoInvTrnsTo, listComponent); }
/// <summary> /// Save new data. /// </summary> /// <param name="model"></param> public void SaveAdd(AdjustmentEntryUIDM model) { try { CommonLib.Common.CurrentDatabase.KeepConnection = true; CommonLib.Common.CurrentDatabase.BeginTransaction(System.Data.IsolationLevel.Serializable); AdjustmentValidator adjustmentValidator = new AdjustmentValidator(); ItemValidator itemValidator = new ItemValidator(); DealingValidator locationValidator = new DealingValidator(); TransactionValidator valTran = new TransactionValidator(); CommonBizValidator commonVal = new CommonBizValidator(); //ValidateException.ThrowErrorItem(adjustmentValidator.CheckEmptyAdjustDate(model.AdjustDate)); //ValidateException.ThrowErrorItem(adjustmentValidator.CheckEmptyReasonCode(model.ReasonCode)); //ValidateException.ThrowErrorItem(valTran.DateIsInCurrentPeriod(model.AdjustDate)); //ValidateException.ThrowErrorItem(itemValidator.CheckEmptyItemCode(model.ItemCode)); BusinessException businessException = itemValidator.CheckItemNotExist(model.ItemCode); if (businessException != null) { ValidateException.ThrowErrorItem(businessException.Error); } //ValidateException.ThrowErrorItem(locationValidator.CheckEmptyLocationCode(model.StoredLoc)); ValidateException.ThrowErrorItem(locationValidator.CheckNotExistsLocationCode(model.StoredLoc)); ValidateException.ThrowErrorItem(commonVal.CheckInputLot(model.ItemCode, new NZString(), model.LotNo, false)); //ValidateException.ThrowErrorItem(adjustmentValidator.CheckEmptyAdjustQty(model.AdjustQty)); //ValidateException.ThrowErrorItem(adjustmentValidator.CheckIsZeroAdjustQty(model.AdjustQty)); #region Lock Running Number gen. TransactionLockDAO daoTrans = new TransactionLockDAO(CommonLib.Common.CurrentDatabase); TransactionLockDTO dtoTrans = new TransactionLockDTO(); NZString key1 = new NZString(null, "ADJUST_NO"); NZString key2 = new NZString(null, "INV_TRANS_TR"); if (!daoTrans.Exist(null, key1, key2)) { dtoTrans.KEY1 = key1; dtoTrans.KEY2 = key2; dtoTrans.CRT_BY = CommonLib.Common.CurrentUserInfomation.UserCD; dtoTrans.CRT_DATE.Value = DateTime.Now; dtoTrans.CRT_MACHINE = CommonLib.Common.CurrentUserInfomation.Machine; daoTrans.AddNew(null, dtoTrans); } // lock transaction daoTrans.SelectWithKeys(null, key1, key2); // end of lock transaction #endregion RunningNumberBIZ bizRunning = new RunningNumberBIZ(); NZString SlipNo = bizRunning.GetCompleteRunningNo(new NZString(null, "ADJUST_NO"), new NZString(null, "TB_INV_TRANS_TR")); model.AdjustNo = SlipNo; NZString GroupTransID = bizRunning.GetCompleteRunningNo(new NZString(null, "TRAN_GROUP_ID"), new NZString(null, "TB_INV_TRANS_TR")); model.GroupTransID = GroupTransID; #region Generate pack_no if it is empty DealingConstraintBIZ bizConstraint = new DealingConstraintBIZ(); string strProcess = model.StoredLoc.StrongValue; DealingConstraintDTO constriant = bizConstraint.LoadDealingConstraint(strProcess.ToNZString()); if (constriant != null && constriant.ENABLE_PACK_FLAG.StrongValue == 1 && model.PackNo.IsNull) { NZString PackNo = bizRunning.GetCompleteRunningNo(new NZString(null, "PACK_NO_AUTO_GEN"), new NZString(null, "TB_INV_TRANS_TR")); model.PackNo = PackNo; } #endregion InventoryBIZ inventoryBIZ = new InventoryBIZ(); InventoryTransactionDTO dto = ConvertUIDMToDTO(model); inventoryBIZ.AddInventoryTransaction(CommonLib.Common.CurrentDatabase, dto, true); CommonLib.Common.CurrentDatabase.Commit(); } catch (System.Exception) { CommonLib.Common.CurrentDatabase.Rollback(); throw; } }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <exception cref="!:EVOFramework.ValidateException"><c>ValidateException</c>.</exception> public void Save(ReceivingEntryUIDM model, Common.eScreenMode Mode) { try { Common.CurrentDatabase.KeepConnection = true; Common.CurrentDatabase.BeginTransaction(IsolationLevel.Serializable); InventoryBIZ biz = new InventoryBIZ(); InventoryTransBIZ bizTrans = new InventoryTransBIZ(); #region Validate Data //== Validate Header, contain: Receive Date, Stored Loc. ReceivingValidator receivingValidator = new ReceivingValidator(); DealingValidator locationValidator = new DealingValidator(); ItemValidator itemValidator = new ItemValidator(); CommonBizValidator commonVal = new CommonBizValidator(); ValidateException.ThrowErrorItem(receivingValidator.CheckReceiveDate(model.RECEIVE_DATE)); ValidateException.ThrowErrorItem(locationValidator.CheckEmptyLocationCode(model.STORED_LOC)); ValidateException.ThrowErrorItem(locationValidator.CheckNotExistsLocationCode(model.STORED_LOC)); // Check for Supplier Type ValidateException.ThrowErrorItem(receivingValidator.CheckForSupplierType(model.DEALING_NO)); //== If data not has to processing. if (model.DATA_VIEW == null || model.DATA_VIEW.Rows.Count == 0) { ValidateException.ThrowErrorItem(new ErrorItem(null, TKPMessages.eValidate.VLM0055.ToString())); } DataTable dtNonDelete = model.DATA_VIEW.GetChanges(DataRowState.Unchanged | DataRowState.Added | DataRowState.Modified); List <InventoryTransactionViewDTO> listData = DTOUtility.ConvertDataTableToList <InventoryTransactionViewDTO>(dtNonDelete); //== Validate Item cannot duplicate on ITEM_CD and LOT_NO List <string> listCheckKeyDuplicate = new List <string>(); for (int i = 0; i < listData.Count; i++) { BusinessException err = itemValidator.CheckItemNotExist(listData[i].ITEM_CD); if (err != null) { ValidateException.ThrowErrorItem(err.Error); } string strKey = listData[i].ITEM_CD.NVL(String.Empty) + listData[i].LOT_NO.NVL(String.Empty) + listData[i].EXTERNAL_LOT_NO.NVL(String.Empty) ; if (listCheckKeyDuplicate.Contains(strKey)) { ValidateException.ThrowErrorItem(new ErrorItem(null, TKPMessages.eValidate.VLM0096.ToString(), new object[] { listData[i].ITEM_CD.NVL(String.Empty), listData[i].LOT_NO.NVL(String.Empty), listData[i].EXTERNAL_LOT_NO.NVL(String.Empty) })); } listCheckKeyDuplicate.Add(strKey); } for (int i = 0; i < listData.Count; i++) { InventoryTransactionViewDTO viewDTO = listData[i]; //== Check LotNo If item use lot control class. ValidateException.ThrowErrorItem(commonVal.CheckInputLot(viewDTO.ITEM_CD, new NZString(), viewDTO.LOT_NO, false)); } #endregion DataTable dtData = model.DATA_VIEW; DataTable dtAdd = dtData.GetChanges(DataRowState.Added); DataTable dtModify = dtData.GetChanges(DataRowState.Modified); DataTable dtDelete = dtData.GetChanges(DataRowState.Deleted); List <InventoryTransactionDTO> listAdd = null; List <InventoryTransactionDTO> listUpdate = null; List <InventoryTransactionDTO> listDelete = null; //มีการปรับให้ทำคำสั่งทีละ set ของ add , update , delete เลย //ที่เริ่มจาก delete ก่อนเพราะ consumption จะได้มีการเอาไปใช้สำหรับตัวที่ add ได้เลย ไม่ต้องค้างไว้ lot หน้า //== Delete process. if (dtDelete != null && dtDelete.Rows.Count > 0) { listDelete = DTOUtility.ConvertDataTableToList <InventoryTransactionDTO>(dtDelete); List <InventoryTransactionDTO> listDeleteConsumption = null; for (int i = 0; i < listDelete.Count; i++) { InventoryTransactionDTO dto = listDelete[i]; listDeleteConsumption = bizTrans.LoadConsumptionItemByRefNo(dto.REF_NO); biz.ReceivingItems(Common.CurrentDatabase, null, null, listDeleteConsumption); } } biz.ReceivingItems(Common.CurrentDatabase, null, null, listDelete); //== Insert process. if (dtAdd != null && dtAdd.Rows.Count > 0) { //listAdd = DTOUtility.ConvertDataTableToList<InventoryTransactionDTO>(dtAdd); //ถ้ากรณี receiving ให้แตกเป็น lot ย่อยตาม lot size ให้ if (model.RECEIVE_TYPE.StrongValue.Equals(DataDefine.eTRANS_TYPE_string.Receiving)) { listAdd = SplitBoxSize(model, DTOUtility.ConvertDataTableToList <InventoryTransactionViewDTO>(dtAdd)); } else { listAdd = DTOUtility.ConvertDataTableToList <InventoryTransactionDTO>(dtAdd); } NZString runningNo = null; RunningNumberBIZ runningNumberBIZ = new RunningNumberBIZ(); if (model.RECEIVE_NO.IsNull) { runningNo = runningNumberBIZ.GetCompleteRunningNo(DataDefine.RECEIVE_SLIP_NO.ToNZString(), DataDefine.TRANSACTION_TABLE_NAME.ToNZString()); } else { runningNo = model.RECEIVE_NO; } List <InventoryTransactionDTO> listAddEachDetail = null; for (int i = 0; i < listAdd.Count; i++) { listAddEachDetail = new List <InventoryTransactionDTO>(); InventoryTransactionDTO dto = listAdd[i]; // Copy ค่า Header จาก Model ไปยัง DTO แต่ละตัว AssignHeaderToDTO(model, dto); //ถ้า Receive ต้อง check ว่า lot นั้นไม่เคยทำ receive มาก่อน //if (model.RECEIVE_TYPE.StrongValue.Equals(DataDefine.eTRANS_TYPE_string.Receiving)) //{ // ValidateException.ThrowErrorItem(receivingValidator.CheckExistReceiveItem(dto.ITEM_CD, dto.LOT_NO)); //} //else //{ // ValidateException.ThrowErrorItem(receivingValidator.CheckNotExistReceiveItem(dto.ITEM_CD, dto.LOT_NO)); //} //dto.TRANS_ID = runningNumberBIZ.GetCompleteRunningNo(DataDefine.TRANS_ID.ToNZString(), DataDefine.TRANSACTION_TABLE_NAME.ToNZString()); dto.SLIP_NO = runningNo; dto.CRT_BY = Common.CurrentUserInfomation.UserCD; dto.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dto.UPD_BY = Common.CurrentUserInfomation.UserCD; dto.UPD_MACHINE = Common.CurrentUserInfomation.Machine; // Check all lines. receivingValidator.ValidateBeforeSaveAdd(dto); //add header ใส่ list listAddEachDetail.Add(dto); #region Do Consumption if Item Process Type is SP and Receive Type is Receiving if (model.RECEIVE_TYPE.StrongValue == DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Receiving)) { // load for item process type ItemBIZ bizItem = new ItemBIZ(); ItemProcessDTO dtoItem = bizItem.LoadItemProcess(dto.ITEM_CD); //if (dtoItem.ORDER_PROCESS_CLS.StrongValue == DataDefine.ORDER_PROCESS_CLS_SUBCONTACT) //{ // List<InventoryTransactionDTO> dtoConsumptionTr = CreateConsumptionDTO(dto); // if (dtoConsumptionTr != null && dtoConsumptionTr.Count > 0) // { // listAddEachDetail.AddRange(dtoConsumptionTr); // //for (int j = 0; j < dtoConsumptionTr.Count; j++) // //{ // // listAddEachDetail.Add(dtoConsumptionTr[j]); // //} // } //} } #endregion biz.ReceivingItems(Common.CurrentDatabase, listAddEachDetail, null, null); } } //== Update process. if (dtModify != null && dtModify.Rows.Count > 0) { listUpdate = DTOUtility.ConvertDataTableToList <InventoryTransactionDTO>(dtModify); List <InventoryTransactionDTO> listUpdateDetail = null; List <InventoryTransactionDTO> listAddConsumption = null; List <InventoryTransactionDTO> listDeleteConsumption = null; for (int i = 0; i < listUpdate.Count; i++) { listUpdateDetail = new List <InventoryTransactionDTO>(); listAddConsumption = new List <InventoryTransactionDTO>(); listDeleteConsumption = new List <InventoryTransactionDTO>(); InventoryTransactionDTO dto = listUpdate[i]; // Copy ค่า Header จาก Model ไปยัง DTO แต่ละตัว AssignHeaderToDTO(model, dto); dto.CRT_BY = Common.CurrentUserInfomation.UserCD; dto.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dto.UPD_BY = Common.CurrentUserInfomation.UserCD; dto.UPD_MACHINE = Common.CurrentUserInfomation.Machine; // Check all lines. receivingValidator.ValidateBeforeSaveAdd(dto); //Clear consumption เดิมก่อน listDeleteConsumption = bizTrans.LoadConsumptionItemByRefNo(dto.REF_NO); biz.ReceivingItems(Common.CurrentDatabase, null, null, listDeleteConsumption); //add header ใส่ list listUpdateDetail.Add(dto); #region Do Consumption if Item Process Type is SP if (model.RECEIVE_TYPE.StrongValue == DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Receiving)) { // load for item process type ItemBIZ bizItem = new ItemBIZ(); ItemProcessDTO dtoItem = bizItem.LoadItemProcess(dto.ITEM_CD); //if (dtoItem.ORDER_PROCESS_CLS.StrongValue == DataDefine.ORDER_PROCESS_CLS_SUBCONTACT) //{ // List<InventoryTransactionDTO> dtoConsumptionTr = CreateConsumptionDTO(dto); // if (dtoConsumptionTr != null && dtoConsumptionTr.Count > 0) // { // listAddConsumption.AddRange(dtoConsumptionTr); // //for (int j = 0; j < dtoConsumptionTr.Count; j++) // //{ // // listConsumption.Add(dtoConsumptionTr[j]); // //} // } //} } #endregion biz.ReceivingItems(Common.CurrentDatabase, listAddConsumption, listUpdateDetail, null); } } //ปรับให้ไปสั่ง add delete แต่ละตัวไป เพราะว่ากรณีที่ตัด consumption //จะมีโอกาสข้าม lot ถ้าคำนวณ โดยไม่ตัด mat ก่อน มันจะตัด lot เดิมตลอด //biz.ReceivingItems(Common.CurrentDatabase, listAdd, listUpdate, listDelete, listConsumption); //biz.ReceivingItems(Common.CurrentDatabase, null, listUpdate, null, null); //Update Header for Edit Case if (Mode == Common.eScreenMode.EDIT && dtData != null && dtData.Rows.Count > 0) { listUpdate = DTOUtility.ConvertDataTableToList <InventoryTransactionDTO>(dtData); for (int i = 0; i < listUpdate.Count; i++) { InventoryTransactionDTO dto = listUpdate[i]; // Copy ค่า Header จาก Model ไปยัง DTO แต่ละตัว AssignHeaderToDTO(model, dto); dto.CRT_BY = Common.CurrentUserInfomation.UserCD; dto.CRT_MACHINE = Common.CurrentUserInfomation.Machine; dto.UPD_BY = Common.CurrentUserInfomation.UserCD; dto.UPD_MACHINE = Common.CurrentUserInfomation.Machine; biz.UpdateReceiveHeader(Common.CurrentDatabase, dto); } } Common.CurrentDatabase.Commit(); } catch (Exception) { Common.CurrentDatabase.Rollback(); throw; } }
public override void OnSaveAndClose() { fpView.StopCellEditing(); if (m_bRowHasModified) { // ถ้า Row กำลังแก้ไขอยู่ if (!ValidateRowSpread(shtView.ActiveRowIndex, false)) { return; } } // ต้องเรียกก่อน Save เสมอ เพื่อ Commit ข้อมูลการแก้ไขล่าสุดบน Grid // ใช้ได้เฉพาะกับ Sheet ที่ผูก DataSource CtrlUtil.SpreadSheetRowEndEdit(shtView, shtView.ActiveRowIndex); RemoveRowUnused(shtView); try { ItemValidator itemValidator = new ItemValidator(); int row = shtView.Rows.Count; for (int i = 0; i < row; i++) { NZString ItemCD = new NZString(null, shtView.Cells[i, (int)eColView.ITEM_CD].Value); BusinessException err = itemValidator.CheckItemNotExist(ItemCD); if (err != null) { ValidateException.ThrowErrorItem(err.Error); } } MessageDialogResult dr = MessageDialog.ShowConfirmation(this, Message.LoadMessage(Messages.eConfirm.CFM9001.ToString())); if (dr == MessageDialogResult.Cancel) { return; } if (dr == MessageDialogResult.Yes) { //== Prepare data. ReceivingEntryUIDM newModel = dmcReceive.SaveData(new ReceivingEntryUIDM()); newModel.DATA_VIEW = m_model.DATA_VIEW; //== Save Process m_controller.Save(newModel, m_screenMode); // Post-process. m_dialogResult = DialogResult.OK; MessageDialog.ShowInformation(this, null, Message.LoadMessage(Messages.eInformation.INF9003.ToString()).MessageDescription); } //== Exit form. this.Close(); } catch (ValidateException err) { MessageDialog.ShowBusiness(this, err.ErrorResults[0].Message); err.ErrorResults[0].FocusOnControl(); } catch (BusinessException err) { MessageDialog.ShowBusiness(this, err.Error.Message); err.Error.FocusOnControl(); } catch (Exception err) { // ถ้าเป็น error ที่มาจากการหา FIFO Process if (err.Message.IndexOf('|') != -1) { string[] msgs = err.Message.Split('|'); MessageDialog.ShowBusiness(this, Message.LoadMessage(msgs[0], new[] { msgs[1] })); } else { MessageDialog.ShowBusiness(this, null, err.Message); } Console.WriteLine(err.StackTrace); } }