Exemplo n.º 1
0
        private InventoryTransactionDTO CreateDTOForConsumption(MultiWorkResultEntryUIDM model, MultiWorkResultEntryViewDTO line)
        {
            InventoryTransactionDTO dto = new InventoryTransactionDTO();

            dto.TRANS_ID            = line.CONSUMPTION_TRANSACTION_ID;
            dto.ITEM_CD             = model.ChildItemCode;
            dto.LOC_CD              = model.OrderLoc;
            dto.LOT_NO              = line.LOT_NO;
            dto.TRANS_DATE          = model.WorkResultDate;
            dto.TRANS_CLS.Value     = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.Consumption);
            dto.IN_OUT_CLS.Value    = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.Out);
            dto.QTY.Value           = line.GOOD_QTY.NVL(0) + line.NG_QTY.NVL(0) + line.RESERVE_QTY.NVL(0);
            dto.OBJ_ITEM_CD         = model.ItemCode;
            dto.OBJ_ORDER_QTY.Value = line.GOOD_QTY.NVL(0) + line.NG_QTY.NVL(0) + line.RESERVE_QTY.NVL(0);
            dto.REMARK              = model.Remark;
            dto.REF_SLIP_CLS.Value  = DataDefine.Convert2ClassCode(DataDefine.eREF_SLIP_CLS.WorkResult);
            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.SHIFT_CLS           = model.ShiftClass;
            dto.SCREEN_TYPE         = DataDefine.ScreenType.WorkResultEntry.ToNZString();
            dto.GROUP_TRANS_ID      = model.WorkResultGroupNo;
            return(dto);
        }
Exemplo n.º 2
0
        private InventoryTransactionDTO CreateDTOForReserveResult(MultiWorkResultEntryUIDM modelHeader
                                                                  , MultiWorkResultEntryViewDTO dtoDetailEntry)
        {
            InventoryTransactionDTO dto = new InventoryTransactionDTO();

            dto.TRANS_ID         = dtoDetailEntry.RESERVE_TRANSACTION_ID;
            dto.ITEM_CD          = modelHeader.ItemCode;
            dto.LOC_CD           = modelHeader.StoredLoc;
            dto.LOT_NO.Value     = dtoDetailEntry.LOT_NO + DataDefine.LOT_RESERVE_POSTFIX;
            dto.TRANS_DATE       = modelHeader.WorkResultDate;
            dto.TRANS_CLS.Value  = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.ReserveResult);
            dto.IN_OUT_CLS.Value = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In);
            dto.QTY                = dtoDetailEntry.RESERVE_QTY;
            dto.RESERVE_QTY        = dtoDetailEntry.RESERVE_QTY;
            dto.REMARK             = modelHeader.Remark;
            dto.REF_SLIP_NO        = modelHeader.WorkOrderNo;
            dto.SLIP_NO            = dtoDetailEntry.WORK_RESULT_NO;
            dto.REF_SLIP_CLS.Value = DataDefine.Convert2ClassCode(DataDefine.eREF_SLIP_CLS.WorkOrder);
            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.SHIFT_CLS          = modelHeader.ShiftClass;
            dto.SCREEN_TYPE        = DataDefine.ScreenType.WorkResultEntry.ToNZString();
            dto.GROUP_TRANS_ID     = modelHeader.WorkResultGroupNo;
            return(dto);
        }
Exemplo n.º 3
0
        public MultiWorkResultEntryUIDM CreateUIDMForAddMode()
        {
            MultiWorkResultEntryUIDM model = new MultiWorkResultEntryUIDM();

            model.WorkResultDate.Value = CommonLib.Common.GetDatabaseDateTime();
            model.DataView.AcceptChanges();
            return(model);
        }
Exemplo n.º 4
0
        private InventoryTransactionDTO CreateDTOForWorkResult(MultiWorkResultEntryUIDM modelHeader
                                                               , MultiWorkResultEntryViewDTO dtoDetailEntry)
        {
            InventoryTransactionDTO dtoTrans = new InventoryTransactionDTO();

            dtoTrans.TRANS_ID = dtoDetailEntry.GOOD_TRANSACTION_ID;
            dtoTrans.ITEM_CD  = modelHeader.ItemCode;
            dtoTrans.LOC_CD   = modelHeader.StoredLoc;
            if (DataDefine.eTRAN_SUB_CLS.WR.ToString().Equals(modelHeader.TRAN_SUB_CLS))
            {
                dtoTrans.LOT_NO       = dtoDetailEntry.LOT_NO;
                dtoTrans.TRAN_SUB_CLS = DataDefine.eTRAN_SUB_CLS.WR.ToString().ToNZString();
            }
            else if (DataDefine.eTRAN_SUB_CLS.RW.ToString().Equals(modelHeader.TRAN_SUB_CLS))
            {
                if (dtoDetailEntry.LOT_NO.ToString().EndsWith(DataDefine.LOT_RESERVE_POSTFIX))
                {
                    dtoTrans.LOT_NO.Value = dtoDetailEntry.LOT_NO.ToString().Remove(dtoDetailEntry.LOT_NO.ToString().Length - 2);
                }
                else
                {
                    dtoTrans.LOT_NO = dtoDetailEntry.LOT_NO;
                }

                dtoTrans.TRAN_SUB_CLS = DataDefine.eTRAN_SUB_CLS.RW.ToString().ToNZString();
            }
            else
            {
                //ใช้เหมือน WorkResult
                dtoTrans.LOT_NO       = dtoDetailEntry.LOT_NO;
                dtoTrans.TRAN_SUB_CLS = DataDefine.eTRAN_SUB_CLS.WR.ToString().ToNZString();
            }
            dtoTrans.TRANS_DATE       = modelHeader.WorkResultDate;
            dtoTrans.TRANS_CLS.Value  = DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.WorkResult);
            dtoTrans.IN_OUT_CLS.Value = DataDefine.Convert2ClassCode(DataDefine.eIN_OUT_CLASS.In);
            dtoTrans.QTY.Value        = dtoDetailEntry.GOOD_QTY.NVL(0);
            dtoTrans.NG_QTY.Value     = dtoDetailEntry.NG_QTY.NVL(0);
            dtoTrans.REMARK           = modelHeader.Remark;
            dtoTrans.REF_SLIP_NO      = modelHeader.WorkOrderNo;
            dtoTrans.SLIP_NO          = dtoDetailEntry.WORK_RESULT_NO;
            //dtoTrans.REF_SLIP_NO2 = model.WorkOrderNo2; // ไม่มี
            dtoTrans.REF_SLIP_CLS.Value = DataDefine.Convert2ClassCode(DataDefine.eREF_SLIP_CLS.WorkOrder);
            dtoTrans.CRT_BY             = Common.CurrentUserInfomation.UserCD;
            dtoTrans.CRT_MACHINE        = Common.CurrentUserInfomation.Machine;
            dtoTrans.UPD_BY             = Common.CurrentUserInfomation.UserCD;
            dtoTrans.UPD_MACHINE        = Common.CurrentUserInfomation.Machine;
            dtoTrans.SHIFT_CLS          = modelHeader.ShiftClass;
            dtoTrans.FOR_MACHINE        = modelHeader.ForMachine;
            dtoTrans.SCREEN_TYPE        = DataDefine.ScreenType.WorkResultEntry.ToNZString();
            dtoTrans.GROUP_TRANS_ID     = modelHeader.WorkResultGroupNo;
            dtoTrans.RESERVE_QTY.Value  = dtoDetailEntry.RESERVE_QTY.NVL(0);
            dtoTrans.NG_REASON          = dtoDetailEntry.NG_REASON;

            return(dtoTrans);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        public MultiWorkResultEntryUIDM LoadForEditMultiWorkResult(NZString transID)
        {
            //== Load Header (Work Result)
            InventoryTransBIZ bizInventoryTransaction = new InventoryTransBIZ();
            InventoryBIZ      bizInventory            = new InventoryBIZ();


            ItemBIZ bizItem = new ItemBIZ();

            InventoryTransactionDTO transDTO = bizInventoryTransaction.LoadByTransactionID(transID);

            if (transDTO == null)
            {
                return(null);
            }


            //เอา transDTO ไปหา group
            //แล้วก็ group -> แปลงเป็น column ตาม spread


            ItemDTO        dtoItem        = bizItem.LoadItem(transDTO.ITEM_CD);
            ItemProcessDTO dtoItemProcess = bizItem.LoadItemProcess(transDTO.ITEM_CD);

            MultiWorkResultEntryUIDM model = new MultiWorkResultEntryUIDM();

            //model.ChildItemCode = ;// ต้องไปดึงมาจาก consumption ตัวแรก
            //model.OrderLoc=;

            //model.CONSUMTION_CLS = dtoItemProcess.CONSUMTION_CLS;
            model.ForMachine        = transDTO.FOR_MACHINE;
            model.ItemCode          = transDTO.ITEM_CD;
            model.ItemDesc          = dtoItem.ITEM_DESC;
            model.Remark            = transDTO.REMARK;
            model.ShiftClass        = transDTO.SHIFT_CLS;
            model.StoredLoc         = transDTO.LOC_CD;
            model.TRAN_SUB_CLS      = transDTO.TRAN_SUB_CLS;
            model.WorkOrderNo       = transDTO.REF_SLIP_NO;
            model.WorkResultDate    = transDTO.TRANS_DATE;
            model.WorkResultGroupNo = transDTO.GROUP_TRANS_ID;

            List <InventoryTransactionDTO> listTrans = bizInventoryTransaction.LoadGroupTransaction(transDTO.GROUP_TRANS_ID, DataDefine.Convert2ClassCode(DataDefine.eTRANS_TYPE.WorkResult).ToNZString());

            //new list ของ multi work result เพื่อใส่ข้อมูล เป็น row ก่อน
            //แล้วพอวนใส่เสร็จค่อย convert เป็น datatable เพื่อ set value ให้ model.DataView
            List <MultiWorkResultEntryViewDTO> listMultiWorkResult = new List <MultiWorkResultEntryViewDTO>();



            foreach (InventoryTransactionDTO dtoTran in listTrans)
            {
                MultiWorkResultEntryViewDTO multiDTO = new MultiWorkResultEntryViewDTO();
                multiDTO.GOOD_QTY            = dtoTran.QTY;
                multiDTO.GOOD_TRANSACTION_ID = dtoTran.TRANS_ID;
                //multiDTO.LOT_NO = dtoTran.LOT_NO;
                multiDTO.NG_QTY    = dtoTran.NG_QTY;
                multiDTO.NG_REASON = dtoTran.NG_REASON;

                multiDTO.RESERVE_QTY    = dtoTran.RESERVE_QTY;
                multiDTO.WORK_RESULT_NO = dtoTran.SLIP_NO;

                InventoryTransactionDTO dtoNGTrans = bizInventoryTransaction.LoadNGWorkResult(dtoTran.SLIP_NO);
                if (dtoNGTrans != null && !dtoNGTrans.TRANS_ID.IsNull)
                {
                    multiDTO.NG_TRANSACTION_ID = dtoNGTrans.TRANS_ID;
                }

                InventoryTransactionDTO dtoReserveTrans = bizInventoryTransaction.LoadReserveResult(dtoTran.SLIP_NO);
                if (dtoReserveTrans != null && !dtoReserveTrans.TRANS_ID.IsNull)
                {
                    multiDTO.RESERVE_TRANSACTION_ID = dtoReserveTrans.TRANS_ID;
                }



                List <WorkResultEntryViewDTO> consumptionList = bizInventory.LoadWorkResultConsumptionList(dtoTran.SLIP_NO);
                if (consumptionList != null && consumptionList.Count == 1)
                {
                    //model.OrderLoc = consumptionList[0].LOC_CD;
                    //model.ChildItemCode = consumptionList[0].ITEM_CD;
                    //multiDTO.CONSUMPTION_TRANSACTION_ID = consumptionList[0].TRANS_ID;
                    //multiDTO.ON_HAND_QTY = consumptionList[0].ON_HAND_QTY;
                    //multiDTO.LOT_NO = consumptionList[0].LOT_NO;
                }
                else
                {
                    throw new NotSupportedException("Comsumption != 1 item");
                    //if (dtoItemProcess != null)
                    //    model.OrderLoc = dtoItemProcess.ORDER_LOC_CD;
                }


                //multiDTO.ON_HAND_QTY = new NZDecimal(null, 0);//onhand + good + ng + reserve
                //ActualOnhandViewDTO onhandConsumption = bizInventory.LoadActualInventoryOnHand(model.ChildItemCode, model.OrderLoc, multiDTO.LOT_NO);
                //if (onhandConsumption == null)
                //{
                //    multiDTO.ON_HAND_QTY.Value = multiDTO.GOOD_QTY.NVL(0) + multiDTO.NG_QTY.NVL(0) + multiDTO.RESERVE_QTY.NVL(0);
                //}
                //else
                //{
                //    multiDTO.ON_HAND_QTY.Value = onhandConsumption.ONHAND_QTY.NVL(0) + multiDTO.GOOD_QTY.NVL(0) + multiDTO.NG_QTY.NVL(0) + multiDTO.RESERVE_QTY.NVL(0);
                //}



                listMultiWorkResult.Add(multiDTO);
            }

            model.DataView = DTOUtility.ConvertListToDataTable <MultiWorkResultEntryViewDTO>(listMultiWorkResult);

            model.DataView.AcceptChanges();
            return(model);
        }