Example #1
0
        public void ProcessPurchaseOrders(IList <ManhattanPerpetualInventoryTransfer> unprocessed)
        {
            foreach (var purchaseOrderGrouping in unprocessed.GroupBy(g => g.Ponumber))
            {
                using (var scope = Scope.CreateTransactionScope())
                {
                    try
                    {
                        var firstRecordInGrouping = new PurchaseOrderGeneralLedger(purchaseOrderGrouping.First());

                        var headerId = ProcessPurchaseOrderHeader(firstRecordInGrouping);
                        var detailId = ProcessPurchaseOrdersDetail(headerId, purchaseOrderGrouping, firstRecordInGrouping);

                        foreach (var pix in purchaseOrderGrouping.OrderBy(o => o.SequenceNumber))
                        {
                            ProcessPurchaseOrderDetailLineItem(pix, detailId);
                        }

                        scope.Complete();
                    }
                    catch (Exception exception)
                    {
                        _log.Exception("Fatal error processing pix transaction number " + purchaseOrderGrouping.Key, exception);
                    }
                }
            }
        }
Example #2
0
        private int ProcessPurchaseOrderHeader(PurchaseOrderGeneralLedger firstRecordInGrouping)
        {
            var header = new DatabasePurchaseOrderReceiptHeader
            {
                SenderID        = PurchaseOrderInterfaceSenderId,
                RecipientID     = PurchaseOrderInterfaceRecipientId,
                TransactionDate = firstRecordInGrouping.Shippeddatetimereference
            };

            return(_databaseRepository.InsertDatabasePoReceiptHeader(header));
        }
Example #3
0
        private void ProcessPurchaseOrderDetailLineItem(ManhattanPerpetualInventoryTransfer pix, int detailId)
        {
            var purchaseOrderGl = new PurchaseOrderGeneralLedger(pix);
            var databasePurchaseOrderReceiptDetailLineItem = new DatabasePurchaseOrderReceiptDetailLineItem
            {
                PoReceiptDetailId = detailId,
                LineNumber        = purchaseOrderGl.LineItemNumber.ToString(CultureInfo.InvariantCulture),
                Upc = purchaseOrderGl.Sku,
                Uom = purchaseOrderGl.UnitOfMeasure,
                QuantityInvoiced = purchaseOrderGl.NumberUnitsShipped.ToString(CultureInfo.InvariantCulture),
                DateAdded        = DateTime.Now
            };

            _databaseRepository.InsertDatabasePurchaseOrderReceiptDetailLineItem(databasePurchaseOrderReceiptDetailLineItem);
            MarkPixAsProcessed(pix);
        }
Example #4
0
        private int ProcessPurchaseOrdersDetail(int headerId, IGrouping <string, ManhattanPerpetualInventoryTransfer> purchaseOrderGrouping, PurchaseOrderGeneralLedger firstRecordInGrouping)
        {
            var detail = new DatabasePurchaseOrderReceiptDetail
            {
                POReceiptHeaderID        = headerId,
                PONumber                 = purchaseOrderGrouping.Key,
                InvoiceNumber            = firstRecordInGrouping.InvoiceNumber,
                NumberLineItems          = purchaseOrderGrouping.Count().ToString(CultureInfo.InvariantCulture),
                shippeddatetimereference = firstRecordInGrouping.Shippeddatetimereference,
                IntegrationStatus        = PurchaseOrderInterfaceIntegrationStatus,
                DateAdded                = DateTime.Now
            };

            return(_databaseRepository.InsertDatabasePurchaseOrderReceiptDetail(detail));
        }