Esempio n. 1
0
        private bool UnitIsDfiled(ReceiptFacts facts)
        {
            Logging.Log("Checking if unit " + facts.SerialNumber + " is to be dfiled.", LogType.Information);

            CloseResolvedDfile(facts);

            if (facts.DisableDfileCheck)
            {
                return(false);
            }

            if (facts.PurchaseOrder.Shopfloorline.DfileIsEnabled == false)
            {
                return(false);
            }

            DfileCondition dfile = new DfileCondition();

            if (dfile.IsSatisfiedBy(facts))
            {
                DfileItem item =
                    Scout.Core.Service <IDfileService>()
                    .CreateDfileItem(facts, dfile.Message.ToString());

                if (item != null)
                {
                    UserInteraction.Dialog.ShowMessage("This is unit is to be dfiled for: " + dfile.Message.Message, UserMessageType.Warning, stubborn: true);
                }

                return(true);
            }

            return(false);
        }
Esempio n. 2
0
        private Receipt CreateReceipt(ReceiptFacts facts)
        {
            Receipt receipt =
                new FactsReceiptMapper().MapFrom(facts);

            return(receipt);
        }
Esempio n. 3
0
        private void MapToPreAlertItem(ReceiptFacts facts, string lotid)
        {
            IPreAlert preAlert =
                OrderService.GetPreAlertByType(facts.PurchaseOrder.PreAlertType);

            if (preAlert == null)
            {
                return;
            }

            string serialNumber = facts.SerialNumber;

            if (!string.IsNullOrEmpty(facts.SerialNumber))
            {
                serialNumber = serialNumber.Trim();
                serialNumber = serialNumber.ToUpper();

                IPreAlertItem item =
                    preAlert.GetItemBySerialNumber(facts.PurchaseOrder, serialNumber);

                if (item != null)
                {
                    item.LotId = lotid;
                }
            }
        }
Esempio n. 4
0
        public DfileItem CreateDfileItem(ReceiptFacts facts, string reason)
        {
            if (Repository.GetUnResolvedItemBySerialNumber
                    (Data.GetUnitOfWork(), facts.SerialNumber) != null)
            {
                UserInteraction.Dialog.ShowMessage
                    ("This unit is on dfile and must be resolved before it can be received.", UserMessageType.Error, stubborn: true);

                return(null);
            }

            Logging.Log("Creating dfile for " + facts.SerialNumber, LogType.Information);

            DfileItem dfileItem = new DfileItem(Data.GetUnitOfWork())
            {
                ShopfloorlineId    = facts.PurchaseOrder.Shopfloorline.Id,
                IncomingOrderId    = facts.PurchaseOrder.Order.Id,
                PartId             = facts.Part.Id,
                SerialNumber       = facts.SerialNumber,
                Reason             = reason,
                Comments           = facts.Comments,
                LineItemIdentifier = facts.LineItemIdentifier
            };

            Scout.Core.Data.Save(dfileItem.Session);
            return(dfileItem);
        }
Esempio n. 5
0
        private bool CreateReceiptRecords(ReceiptFacts facts)
        {
            if (!new ReceiptValidator(facts).Validated())
            {
                return(false);
            }
            try
            {
                IUnitOfWork uow = facts.Session as IUnitOfWork;

                Receipt receipt = CreateReceipt(facts);

                CreateInventoryItem(receipt);
                CreateSerializedUnit(receipt);
                CreateTransaction(receipt, facts.SourceType);

                MapToPreAlertItem(facts, receipt.UnitTrackingId);
                ProcessRouting(receipt.PurchaseLineItem, receipt.Item);
                UpdateLineItemStatus(receipt);

                //Persist
                Scout.Core.Data.Save(uow);

                // Check if the unit should be captured
                Scout.Core.Service <ICaptureService>()
                .RunCaptureCheck(receipt.Item, "PURREC");

                // Print Traveler Label
                Scout.Core.Service <IInventoryService>()
                .PrintTravelerLabel(receipt.Item);

                return(true);
            }
            catch (Exception ex)
            {
                UserInteraction.Dialog.ShowMessage(
                    "There was an error saving the receipt " + ex.Message,
                    UserMessageType.Exception
                    );

                Logging.Log("Error receiving unit [" + facts.SerialNumber + "] " + ex.Message, LogType.Error);

                return(false);
            }
        }
Esempio n. 6
0
        public bool ReceiveUnit(ReceiptFacts facts)
        {
            if (Scout.Core.Service <IInventoryService>().DuplicateSNItemExists(facts.SerialNumber))
            {
                Logging.Log("Unit already exists " + facts.SerialNumber, LogType.Error);
                UserInteraction.Dialog.ShowMessage("This unit already exists: " + facts.SerialNumber,
                                                   UserMessageType.Error);
                return(false);
            }

            Logging.Log("Receiving unit " + facts.SerialNumber, LogType.Information);

            if (UnitIsDfiled(facts))
            {
                return(true);
            }

            return(CreateReceiptRecords(facts));
        }
Esempio n. 7
0
        public void CloseDfileItemFromReceipt(ReceiptFacts facts)
        {
            IUnitOfWork uow = Scout.Core.Data.GetUnitOfWork();

            DfileItem item = Repository.GetResolvedItemBySerialNumber(uow, facts.SerialNumber);

            if (item != null && item.ActionOrder.Id == facts.PurchaseOrder.Order.Id)
            {
                CloseItem(item);
                facts.DisableDfileCheck = item.DisableDfileAtReceipt;

                Logging.Log("Closing dfile item for " + facts.SerialNumber, LogType.Information);
            }
            else if (item != null)
            {
                Scout.Core.UserInteraction.Dialog.ShowMessage
                    ("This dfile unit should be received against order" + item.ActionOrder.Id,
                    UserMessageType.Error);
            }
        }
Esempio n. 8
0
        private void Receive()
        {
            ReceiptFacts facts = GatherFacts();

            if (m_receiving.ReceiveUnit(facts))
            {
                m_purchaseOrder.ReceiptDeltas.Reload();
                expectedGrid.DataSource = m_purchaseOrder.ReceiptDeltas;

                if (batchReceiptCheck.Checked)
                {
                    BatchClear();
                }
                else
                {
                    Clear();
                }
            }

            LoadDfileUnits();
        }
Esempio n. 9
0
        private ReceiptFacts GatherFacts()
        {
            ReceiptFacts facts = new ReceiptFacts();

            facts.Session            = m_purchaseOrder.Session;
            facts.SerialNumber       = serialNumberText.Text;
            facts.Qty                = Int32.Parse(quantityText.Text);
            facts.Comments           = commentsText.Text;
            facts.Part               = m_part;
            facts.ReceivingCart      = (Tote)cartLookup.EditValue;
            facts.RoutingRequired    = m_purchaseOrder.RoutingRequired;
            facts.PurchaseOrder      = m_purchaseOrder;
            facts.PurchaseLineItem   = m_purchaseOrder.GetLineByPart(m_part);
            facts.LineItemIdentifier = lineItemIdentifierText.Text;
            facts.SourceType         = m_purchaseOrder.SourceType ?? "PURREC";

            // Assign custom fields
            if (m_customFields != null)
            {
                facts.CustomFields = m_customFields;
            }

            return(facts);
        }
Esempio n. 10
0
 private void CloseResolvedDfile(ReceiptFacts facts)
 {
     Scout.Core.Service <IDfileService>()
     .CloseDfileItemFromReceipt(facts);
 }