public void AddByPreproductCmd(TX50_PrePdtWhsCmd tx50PrePdtWhsCmd)
        {
            var th63 = new TH63_PrePdtWhsCmdHst()
            {
                F63_AbnormalCode    = tx50PrePdtWhsCmd.F50_AbnormalCode,
                F63_AddDate         = tx50PrePdtWhsCmd.F50_AddDate,
                F63_CmdSeqNo        = tx50PrePdtWhsCmd.F50_CmdSeqNo,
                F63_CommandEndDate  = tx50PrePdtWhsCmd.F50_CommandEndDate,
                F63_CommandNo       = tx50PrePdtWhsCmd.F50_CommandNo,
                F63_CommandSendDate = tx50PrePdtWhsCmd.F50_CommandEndDate,
                F63_CommandType     = tx50PrePdtWhsCmd.F50_CommandType,
                F63_From            = tx50PrePdtWhsCmd.F50_From,
                F63_ContainerNo     = tx50PrePdtWhsCmd.F50_ContainerNo,
                F63_ContainerCode   = tx50PrePdtWhsCmd.F50_ContainerCode,
                F63_PictureNo       = tx50PrePdtWhsCmd.F50_PictureNo,
                F63_Priority        = tx50PrePdtWhsCmd.F50_Priority,
                F63_RetryCount      = tx50PrePdtWhsCmd.F50_RetryCount,
                F63_Status          = tx50PrePdtWhsCmd.F50_Status,
                F63_StrRtrType      = tx50PrePdtWhsCmd.F50_StrRtrType,
                F63_TerminalNo      = tx50PrePdtWhsCmd.F50_TerminalNo,
                F63_To          = tx50PrePdtWhsCmd.F50_To,
                F63_UpdateCount = tx50PrePdtWhsCmd.F50_UpdateCount,
                F63_UpdateDate  = tx50PrePdtWhsCmd.F50_UpdateDate
            };

            Add(th63);
        }
示例#2
0
        private bool Instab(string terminalNo, string as_shelf, string as_conno, string as_concode)
        {
            var nomanage = true;
            var serialNo = _unitOfWork.NoManageRepository.CreateOrUpdateTX48(ref nomanage,
                                                                             Constants.GetColumnInNoManager.PrePdtWhsCmdNo, 0, 1, 0, 0, 0);
            var conveyCode = _unitOfWork.ConveyorRepository.GetbyTerminerNo(terminalNo);
            var tx50       = new TX50_PrePdtWhsCmd
            {
                F50_CommandNo       = Constants.F50_CommandNo.CmdNoRtr.ToString("D"),
                F50_CmdSeqNo        = serialNo.ToString("D4"),
                F50_CommandType     = Constants.CommandType.CmdType_0,
                F50_StrRtrType      = "0",
                F50_Status          = "0",
                F50_ContainerNo     = as_conno,
                F50_ContainerCode   = as_concode,
                F50_Priority        = 0,
                F50_From            = as_shelf,
                F50_To              = conveyCode.F05_ConveyorCode,
                F50_CommandSendDate = DateTime.Now,
                F50_CommandEndDate  = DateTime.Now,
                F50_TerminalNo      = terminalNo,
                F50_PictureNo       = Constants.PictureNo.TCIP023F,
                F50_AbnormalCode    = null,
                F50_AddDate         = DateTime.Now,
                F50_UpdateDate      = DateTime.Now,
                F50_UpdateCount     = 0,
                F50_RetryCount      = 0
            };

            _unitOfWork.PreProductWarehouseCommandRepository.Add(tx50);
            return(true);
        }
示例#3
0
        public TerminalMessage(TX50_PrePdtWhsCmd preProductWarehouseCommand) : this()
        {
            if (preProductWarehouseCommand == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(preProductWarehouseCommand.F50_CmdSeqNo))
            {
                CommandSequence = " ".PadRight(4);
            }
            else
            {
                CommandSequence = preProductWarehouseCommand.F50_CmdSeqNo.PadRight(4);
            }
            CommandIndex = preProductWarehouseCommand.F50_CommandNo.PadRight(4);
            Command      = preProductWarehouseCommand.F50_CommandType.PadRight(4);
            From         = preProductWarehouseCommand.F50_From.PadRight(6);
            To           = preProductWarehouseCommand.F50_To.PadRight(6);
        }
示例#4
0
 public int SendFromC2ToAw(TX50_PrePdtWhsCmd prePdtWhsCmd)
 {
     return(1);
 }
示例#5
0
        //BR28  Retrieving Container rules:
        public ResponseResult Edit(string commandNo, string preProductCode, string lotNo, string tabletisingLine,
                                   string terminalNo)
        {
            //Get and update tx41_tbtcmd
            var tabletCommand =
                _unitOfWork.TabletCommandRepository.GetMany(
                    i => i.F41_KndCmdNo.Trim().Equals(commandNo) && i.F41_PrePdtLotNo.Trim().Equals(lotNo))
                .FirstOrDefault();

            if (tabletCommand != null)
            {
                tabletCommand.F41_TabletLine = "TAB0" + tabletisingLine;
                tabletCommand.F41_UpdateDate = DateTime.Now;
                _unitOfWork.TabletCommandRepository.Update(tabletCommand);
            }

            //Get data for tx49_prepdtshfstk
            var shelfStatus           = Constants.F49_ShelfStatus.TX49_StkFlg_Stk;
            var preProductShelfStocks =
                _unitOfWork.PreProductShelfStockRepository.GetMany(
                    i =>
                    i.F49_KndCmdNo.Trim().Equals(commandNo.Trim()) &&
                    i.F49_PreProductCode.Trim().Equals(preProductCode.Trim()) &&
                    i.F49_PreProductLotNo.Trim().Equals(lotNo.Trim()) &&
                    i.F49_ShelfStatus.Trim().Equals(shelfStatus))
                .OrderBy(i => i.F49_ContainerSeqNo);

            //Declaration lsShelf and   isAddress
            var lsShelf   = "";
            var isAddress = "";

            if (!preProductShelfStocks.Any())
            {
                return(new ResponseResult(false));
            }
            foreach (var preProductShelfStock in preProductShelfStocks)
            {
                //Update status into TX49
                preProductShelfStock.F49_ShelfStatus = Constants.F49_ShelfStatus.TX49_StkFlg_Rtr;
                _unitOfWork.PreProductShelfStockRepository.Update(preProductShelfStock);

                var containerCode   = preProductShelfStock.F49_ContainerCode;
                var lstPrePdtShfSts =
                    _unitOfWork.PreProductShelfStatusRepository.GetMany(
                        i =>
                        i.F37_ContainerCode.Trim().Equals(containerCode.Trim()));

                //	ls_Shelf = [as_Row] + [as_Bay] + [as_Level]
                var prePdtStsItem = lstPrePdtShfSts.FirstOrDefault();
                if (prePdtStsItem != null)
                {
                    lsShelf = prePdtStsItem.F37_ShelfRow + prePdtStsItem.F37_ShelfBay +
                              prePdtStsItem.F37_ShelfLevel;

                    foreach (var prePdtShfSts in lstPrePdtShfSts)
                    {
                        prePdtShfSts.F37_ShelfStatus =
                            Constants.F37_ShelfStatus.ReservedForRetrieval.ToString("D");
                        _unitOfWork.PreProductShelfStatusRepository.Update(prePdtShfSts);

                        break;
                    }
                }

                else
                {
                    return(new ResponseResult(false));
                }

                //The system will check the status of the Conveyor and Pre-product Warehouse as BR 8

                //Insert Or Update tx48_nomanage
                var isNoManage = true;
                var cmdSeqNo   = _unitOfWork.NoManageRepository.CreateOrUpdateTX48(ref isNoManage,
                                                                                   Constants.GetColumnInNoManager.PrePdtWhsCmdNo, 0, 1, 0, 0, 0).ToString("D4");

                var f50commandNo     = Constants.F50_CommandNo.CmdNoRtr.ToString("D");
                var tx50PrePdtWhsCmd =
                    _unitOfWork.PreProductWarehouseCommandRepository.Get(
                        i =>
                        i.F50_CommandNo.Trim().Equals(f50commandNo) &&
                        i.F50_CmdSeqNo.Trim().Equals(cmdSeqNo.Trim()));

                //Insert tx50_prepdtwhscmd
                if (tx50PrePdtWhsCmd == null)
                {
                    var prePdtWhsCmd = new TX50_PrePdtWhsCmd();
                    prePdtWhsCmd.F50_CommandNo       = Constants.F50_CommandNo.CmdNoRtr.ToString("D");
                    prePdtWhsCmd.F50_CmdSeqNo        = cmdSeqNo;
                    prePdtWhsCmd.F50_CommandType     = Constants.CommandType.CmdType_0;
                    prePdtWhsCmd.F50_StrRtrType      = Constants.F50_StrRtrType.StrRtrType_PrePdt.ToString("D");
                    prePdtWhsCmd.F50_Status          = Constants.TC_CMDSTS.TC_CMDSTS_0;
                    prePdtWhsCmd.F50_ContainerNo     = preProductShelfStock.F49_ContainerNo;
                    prePdtWhsCmd.F50_ContainerCode   = preProductShelfStock.F49_ContainerCode;
                    prePdtWhsCmd.F50_Priority        = 0;
                    prePdtWhsCmd.F50_From            = lsShelf;
                    prePdtWhsCmd.F50_To              = _commonDomain.FindConveyor(terminalNo).F05_ConveyorCode;
                    prePdtWhsCmd.F50_CommandSendDate = DateTime.Now;
                    prePdtWhsCmd.F50_CommandEndDate  = DateTime.Now;
                    prePdtWhsCmd.F50_TerminalNo      = terminalNo;
                    prePdtWhsCmd.F50_PictureNo       = Constants.PictureNo.TCIP031F;
                    prePdtWhsCmd.F50_AbnormalCode    = null;
                    prePdtWhsCmd.F50_AddDate         = DateTime.Now;
                    prePdtWhsCmd.F50_UpdateDate      = DateTime.Now;
                    prePdtWhsCmd.F50_UpdateCount     = 0;
                    prePdtWhsCmd.F50_RetryCount      = 0;
                    _unitOfWork.PreProductWarehouseCommandRepository.Add(prePdtWhsCmd);
                }


                // var lsMsg = "Shelf No [" + isAddress + "] retrieving...";
                //_notificationService.SendMessageToC2(lsMsg);
            }
            _unitOfWork.Commit();
            return(new ResponseResult(true));
        }
        //BR46 Re-storing rules
        public ResponseResult CreateAndUpdate(string preProductCode, string shelfNo, string containerCode,
                                              double quantity, string lotNo, string terminalNo, DateTime?updateDate, int containerType)
        {
            //The system will separate the value of [Shelf No.] of the selected item in to 3 parts: [ls_row], [ls_bay], [ls_level] as defined on BR 31.
            var lstShelfNo            = shelfNo.Split('-');
            var lsRow                 = lstShelfNo[0];
            var lsBay                 = lstShelfNo[1];
            var lsLevel               = lstShelfNo[2];
            var preProductShelfStatus =
                _unitOfWork.PreProductShelfStatusRepository.GetMany(
                    i =>
                    i.F37_ShelfRow.Trim().Equals(lsRow) && i.F37_ShelfBay.Trim().Equals(lsBay) &&
                    i.F37_ShelfLevel.Trim().Equals(lsLevel)).FirstOrDefault();

            try
            {
                preProductShelfStatus.F37_ShelfStatus = Constants.F37_ShelfStatus.ReservedForStorage.ToString("D");
                preProductShelfStatus.F37_UpdateDate  = DateTime.Now;
                _unitOfWork.PreProductShelfStatusRepository.Update(preProductShelfStatus);
            }
            catch (Exception ex)
            {
                return(new ResponseResult(false));
            }

            //If the system updates data successfully, it will continue updating data of the following table tx49_prepdtshfstk
            var commandNo   = "";
            var containerNo = "";

            try
            {
                var preProductShelfStock =
                    _unitOfWork.PreProductShelfStockRepository.GetMany(
                        i => i.F49_ContainerCode.Trim().Equals(containerCode))
                    .FirstOrDefault();
                if (preProductShelfStock != null)
                {
                    commandNo   = preProductShelfStock.F49_KndCmdNo;
                    containerNo = preProductShelfStock.F49_ContainerNo;

                    preProductShelfStock.F49_ShelfStatus = Constants.F49_ShelfStatus.TX49_StkFlg_Str;
                    preProductShelfStock.F49_Amount      = quantity;
                    preProductShelfStock.F49_UpdateDate  = DateTime.Now;

                    _unitOfWork.PreProductShelfStockRepository.Update(preProductShelfStock);
                }
            }
            catch (Exception e)
            {
                return(new ResponseResult(false));
            }
            var lstPreProductShelfStock =
                _unitOfWork.PreProductShelfStockRepository.GetMany(
                    i => i.F49_PreProductLotNo.Trim().Equals(lotNo) && i.F49_KndCmdNo.Trim().Equals(commandNo));

            var ldb_prepdtamount = 0.0;

            var liCount = lstPreProductShelfStock.Count();

            foreach (var item in lstPreProductShelfStock)
            {
                ldb_prepdtamount += item.F49_Amount;
            }

            //Update tx42_kndcmd
            var storedStatus = Constants.F42_Status.TX42_Sts_Stored;

            var kneadingCommand =
                _unitOfWork.KneadingCommandRepository.GetMany(
                    i =>
                    i.F42_KndCmdNo.Trim().Equals(commandNo) && i.F42_PrePdtLotNo.Trim().Equals(lotNo) &&
                    i.F42_Status.Equals(storedStatus)).FirstOrDefault();

            if (kneadingCommand != null)
            {
                kneadingCommand.F42_ThrowAmount = ldb_prepdtamount;
                kneadingCommand.F42_StgCtnAmt   = liCount;

                _unitOfWork.KneadingCommandRepository.Update(kneadingCommand);
            }
            var isNomanage = true;
            var as_cmdNo   = _unitOfWork.NoManageRepository.CreateOrUpdateTX48(ref isNomanage,
                                                                               Constants.GetColumnInNoManager.PrePdtWhsCmdNo, prePdtWhsCmdNo: 1);

            //[ls_from] = the value of [is_convcode] retrieved on SQL 15
            //Get record TM03_PreProduct where F03_PreProductCode equals preProductCode
            var preProductItem =
                _unitOfWork.PreProductRepository.GetMany(i => i.F03_PreProductCode.Trim().Equals(preProductCode.Trim()))
                .FirstOrDefault();

            var szColorClass = Constants.ColorClass.Color.ToString("D");

            if (containerType == 30)
            {
                szColorClass = Constants.ColorClass.Black.ToString("D");
            }

            //Get record TM05_Conveyor
            var conveyorItem =
                _unitOfWork.ConveyorRepository.GetAll()
                .FirstOrDefault(
                    i =>
                    i.F05_TerminalNo.Trim().Equals(terminalNo) && i.F05_ColorClass.Trim().Equals(szColorClass));

            if (conveyorItem == null)
            {
                return(new ResponseResult(false, "The corresponding conveyor does not exist!"));
            }

            //assign lsForm=ConveyorCode
            var lsForm = conveyorItem.F05_ConveyorCode;

            //Insert data into tx50_prepdtwhscmd
            try
            {
                var tx50_prePdtWhsCmd = new TX50_PrePdtWhsCmd();
                tx50_prePdtWhsCmd.F50_CommandNo       = Constants.F50_CommandNo.CmdNoStkStr.ToString("D");
                tx50_prePdtWhsCmd.F50_CmdSeqNo        = as_cmdNo.ToString("D4");
                tx50_prePdtWhsCmd.F50_CommandType     = Constants.CommandType.CmdType_0;
                tx50_prePdtWhsCmd.F50_StrRtrType      = Constants.F50_StrRtrType.StrRtrType_PrePdt.ToString("D");
                tx50_prePdtWhsCmd.F50_Status          = Constants.TC_CMDSTS.TC_CMDSTS_0;
                tx50_prePdtWhsCmd.F50_ContainerNo     = containerNo;
                tx50_prePdtWhsCmd.F50_ContainerCode   = containerCode;
                tx50_prePdtWhsCmd.F50_Priority        = 0;
                tx50_prePdtWhsCmd.F50_From            = lsForm;
                tx50_prePdtWhsCmd.F50_To              = $"{lsRow}{lsBay}{lsLevel}";
                tx50_prePdtWhsCmd.F50_CommandSendDate = DateTime.Now;
                tx50_prePdtWhsCmd.F50_CommandEndDate  = DateTime.Now;
                tx50_prePdtWhsCmd.F50_TerminalNo      = terminalNo;
                tx50_prePdtWhsCmd.F50_PictureNo       = Constants.PictureNo.TCIP042F;
                tx50_prePdtWhsCmd.F50_AbnormalCode    = null;
                tx50_prePdtWhsCmd.F50_AddDate         = DateTime.Now;
                tx50_prePdtWhsCmd.F50_UpdateDate      = DateTime.Now;
                tx50_prePdtWhsCmd.F50_UpdateCount     = 0;
                tx50_prePdtWhsCmd.F50_RetryCount      = 0;

                _unitOfWork.PreProductWarehouseCommandRepository.Add(tx50_prePdtWhsCmd);
            }
            catch (Exception e)
            {
                RestoringStatusOfPreproductWarehouse(lsRow, lsBay, lsLevel, terminalNo, containerCode, updateDate).RunSynchronously();
                return(new ResponseResult(false));
            }
            // Restore the status of the Pre-product Warehouse as BR 37.

            // Send message to C2 as BR 13 with the following parameters
            _notificationService.SendMessageToC2(Constants.F50_CommandNo.CmdNoStkRtr.ToString("D"), as_cmdNo.ToString("D4"));

            _unitOfWork.Commit();
            return(new ResponseResult(true));
        }
        /// <summary>
        ///     Retrieve stock taking of pre-product
        /// </summary>
        /// <param name="terminalNo"></param>
        /// <param name="preProductCode"></param>
        /// <param name="lsRow"></param>
        /// <param name="lsBay"></param>
        /// <param name="lsLevel"></param>
        /// <param name="containerCode"></param>
        /// <returns></returns>
        public ResponseResult <string> RetrieveStockTakingOfPreProduct(string terminalNo, string preProductCode,
                                                                       string lsRow, string lsBay, string lsLevel, string containerCode, string containerNo, DateTime?updateDate)
        {
            // TODO: Move this to constant
            var tx37_shfsts_stk = "3";

            // Find all conveyors.
            var conveyors    = _unitOfWork.ConveyorRepository.GetAll();
            var errorMessage = "";
            // Find all pre-products.
            var preProducts = _unitOfWork.PreProductRepository.GetAll();
            var convcode    = "";
            var result      = (from conveyor in conveyors
                               from preProduct in preProducts
                               where conveyor.F05_TerminalNo.Equals(terminalNo.Trim()) &&
                               conveyor.F05_LineNo.Trim().Equals(preProduct.F03_KneadingLine.Trim()) &&
                               conveyor.F05_ColorClass.Trim().Equals(preProduct.F03_ColorClass.Trim()) &&
                               preProduct.F03_PreProductCode.Trim().Equals(preProductCode.Trim())
                               select conveyor.F05_ConveyorCode).FirstOrDefault();

            if (result == null)
            {
                convcode     = "CV211";
                errorMessage = "MSG13";
            }
            else
            {
                convcode = result;
            }
            var checkConveyor = CheckConveyorByCode(convcode);

            if (!checkConveyor.IsSuccess)
            {
                return(new ResponseResult <string>(null, false, checkConveyor.ErrorMessages[0]));
            }
            var systemTime = DateTime.Now;

            // Find TX37 Record
            var prepdtshfstses = _unitOfWork.PreProductShelfStatusRepository.GetAll();

            prepdtshfstses = prepdtshfstses.Where(x => x.F37_ShelfRow.Equals(lsRow));
            prepdtshfstses = prepdtshfstses.Where(x => x.F37_ShelfBay.Equals(lsBay));
            prepdtshfstses = prepdtshfstses.Where(x => x.F37_ShelfLevel.Equals(lsLevel));
            prepdtshfstses = prepdtshfstses.Where(x => x.F37_ShelfStatus.Equals(tx37_shfsts_stk));
            if (!prepdtshfstses.Any())
            {
                errorMessage = "MSG28";
            }
            foreach (var prepdtshfsts in prepdtshfstses)
            {
                prepdtshfsts.F37_ShelfStatus = Constants.F37_ShelfStatus.ReservedForRetrieval.ToString("D");
                prepdtshfsts.F37_TerminalNo  = terminalNo;
                prepdtshfsts.F37_UpdateDate  = systemTime;
                _unitOfWork.PreProductShelfStatusRepository.Update(prepdtshfsts);

                break;
            }

            var prepdtshfstks = _unitOfWork.PreProductShelfStockRepository.GetAll();

            prepdtshfstks = prepdtshfstks.Where(x => x.F49_ContainerCode.Equals(containerCode));
            if (!prepdtshfstks.Any())
            {
                errorMessage = "MSG28";
            }
            if (!string.IsNullOrEmpty(errorMessage) && errorMessage == "MSG28")
            {
                return(new ResponseResult <string>(null, false, errorMessage));
            }
            foreach (var prepdtshfstk in prepdtshfstks)
            {
                prepdtshfstk.F49_ShelfStatus = Constants.F49_ShelfStatus.TX49_StkFlg_Rtr;
                _unitOfWork.PreProductShelfStockRepository.Update(prepdtshfstk);
            }

            var isnoManager = true;

            try
            {
                var as_cmdno = _unitOfWork.NoManageRepository.CreateOrUpdateTX48(ref isnoManager,
                                                                                 Constants.GetColumnInNoManager.PrePdtWhsCmdNo, prePdtWhsCmdNo: 1);

                var prepdtwhscmd = new TX50_PrePdtWhsCmd();
                prepdtwhscmd.F50_CommandNo       = Constants.F50_CommandNo.CmdNoStkRtr.ToString("D");
                prepdtwhscmd.F50_CmdSeqNo        = ("0000" + as_cmdno.ToString()).Substring(("0000" + as_cmdno.ToString()).Length - 4, 4);
                prepdtwhscmd.F50_CommandType     = Constants.CommandType.CmdType_0;
                prepdtwhscmd.F50_StrRtrType      = Constants.F50_StrRtrType.StrRtrType_PrePdt.ToString("D");
                prepdtwhscmd.F50_Status          = Constants.TC_CMDSTS.TC_CMDSTS_0;
                prepdtwhscmd.F50_ContainerNo     = containerNo;
                prepdtwhscmd.F50_ContainerCode   = containerCode;
                prepdtwhscmd.F50_From            = string.Format("{0}{1}{2}", lsRow, lsBay, lsLevel);
                prepdtwhscmd.F50_To              = convcode;
                prepdtwhscmd.F50_CommandSendDate = systemTime;
                prepdtwhscmd.F50_CommandEndDate  = systemTime;
                prepdtwhscmd.F50_TerminalNo      = terminalNo;
                prepdtwhscmd.F50_PictureNo       = Constants.PictureNo.TCIP041F;
                prepdtwhscmd.F50_AddDate         = systemTime;
                prepdtwhscmd.F50_UpdateDate      = systemTime;

                _unitOfWork.PreProductWarehouseCommandRepository.Add(prepdtwhscmd);
                _notificationService.SendMessageToC2(Constants.F50_CommandNo.CmdNoStkRtr.ToString("D"), as_cmdno.ToString("D4"));
                _unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                RestoringStatusOfPreproductWarehouse(lsRow, lsBay, lsLevel,
                                                     terminalNo, containerCode, updateDate).RunSynchronously();
                _unitOfWork.Commit();
                _log.Error(ex.Message, ex);
            }

            return(new ResponseResult <string>(convcode, true, errorMessage));
        }