Example #1
0
        private void NotifyReceivedPurchaseOrders()
        {
            _log.Info("Searching for received purchase orders");
            var criteria = new PerpetualInventoryTransactionCriteria()
            {
                ProcessType     = ProcessType.PurchaseOrderReceiptNotification,
                TransactionType = TransactionType.QuantityAdjust
            };

            var poReceiptRecords    = _repository.FindPerpetualInventoryTransfers(criteria);
            var adjustmentsToIgnore = poReceiptRecords.Where(adj => String.IsNullOrWhiteSpace(adj.Ponumber)).ToList();

            MarkNotificationRecordsAsProcessed(adjustmentsToIgnore, ProcessType.PurchaseOrderReceiptNotification);

            var recordsWithPos = poReceiptRecords.Except(adjustmentsToIgnore).ToList();
            var distinctPos    = recordsWithPos.Select(item => item.Ponumber).Distinct().ToList();

            foreach (var poNumber in distinctPos)
            {
                var receiptRecord             = recordsWithPos.First(r => r.Ponumber == poNumber);
                var inventoryAdjustmentsForPo = _repository.FindPerpetualInventoryTransfers(
                    new PerpetualInventoryTransactionCriteria()
                {
                    ProcessType         = ProcessType.PurchaseOrderReceiptNotification,
                    PurchaseOrderNumber = poNumber,
                    TransactionType     = TransactionType.InventoryAdjustment
                });

                var firstPoInventoryAdjustment = recordsWithPos
                                                 .Where(r => r.Ponumber == poNumber)
                                                 .OrderBy(r => MainframeExtensions.ParseDateTime(r.DateCreated, r.TimeCreated))
                                                 .First();
                var receiptList = SumPixItems(inventoryAdjustmentsForPo);
                var receipt     = new PurchaseOrderReceiptEvent(
                    firstPoInventoryAdjustment.Ponumber,
                    MainframeExtensions.ParseDateTime(firstPoInventoryAdjustment.DateCreated, firstPoInventoryAdjustment.TimeCreated),
                    receiptList
                    );
                try
                {
                    _apiAccess.PurchaseOrderReceived(receipt);
                }
                catch (Exception ex)
                {
                    _log.Exception("Failed to notify service of PO Receipt", ex);
                }
                var toMarkComplete = inventoryAdjustmentsForPo.Concat(new[] { receiptRecord }).ToList();
                MarkNotificationRecordsAsProcessed(toMarkComplete, ProcessType.PurchaseOrderReceiptNotification);
            }
        }
Example #2
0
        private void NotifyStockedPurchaseOrders(List <ManhattanPerpetualInventoryTransfer> purchaseOrderReceiptNotificationRecords)
        {
            var poReceiptGroup = purchaseOrderReceiptNotificationRecords
                                 .GroupBy(po => po.Ponumber)
                                 .ToList();

            foreach (var poReceiptRecordGroup in poReceiptGroup)
            {
                _log.Info(String.Format("Processing Po Receipt {0}", poReceiptRecordGroup.Key));
                var productQuantities = SumPixItems(poReceiptRecordGroup.ToList());
                var stockedEvent      = new PurchaseOrderStockedEvent(
                    poReceiptRecordGroup.First().Ponumber,
                    poReceiptRecordGroup.Max(poGroup =>
                                             MainframeExtensions.ParseDateTime(poGroup.DateCreated, poGroup.TimeCreated)),
                    productQuantities);
                _apiAccess.PurchaseOrderStocked(stockedEvent);
                MarkNotificationRecordsAsProcessed(poReceiptRecordGroup.ToList(), ProcessType.InventoryAdjustmentNotification);
            }
        }
Example #3
0
        public Order ToOrder(ICarrierReadRepository carrierReadRepository, ICountryReader countryReader)
        {
            int soldToCountry, shipToCountry;

            int.TryParse(SoldToCountry, out soldToCountry);
            int.TryParse(ShipToCountry, out shipToCountry);

            return(new Order
            {
                BillingAddress = new Address
                {
                    City = SoldToCity,
                    Country = countryReader.GetCountryAbbreviation(soldToCountry),
                    Line1 = SoldToAddr1,
                    Line2 = SoldToAddr2,
                    Line3 = SoldToAddr3,
                    Name = SoldToName,
                    State = SoldToState,
                    Zip = SoldToZip
                },
                ShippingAddress = new Address
                {
                    City = ShipToCity,
                    Country = countryReader.GetCountryAbbreviation(shipToCountry),
                    Line1 = ShipToAddr1,
                    Line2 = ShipToAddr2,
                    Line3 = ShipToAddr3,
                    Name = ShipToName,
                    State = ShipToState,
                    Zip = ShipToZip
                },
                OrderNumber = PickticketControlNumber, //MiscellaneousIns20Byte11, ?
                OrderDate = (OrderDate != 0 ? MainframeExtensions.ParseDateTime(OrderDate, 0, DateTimeStyles.AssumeUniversal) : MainframeExtensions.ParseDateTime(DateCreated, 0, DateTimeStyles.AssumeUniversal)).ToUniversalTime(),
                BillingPhone = TelephoneNumber,
                ShippingPhone = TelephoneNumber,
                EmailAddress = "*****@*****.**",
                ShippingMethod = carrierReadRepository.GetOmsShipMethod(ShipVia)
            });
        }