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); } } } }
private int ProcessPurchaseOrderHeader(PurchaseOrderGeneralLedger firstRecordInGrouping) { var header = new DatabasePurchaseOrderReceiptHeader { SenderID = PurchaseOrderInterfaceSenderId, RecipientID = PurchaseOrderInterfaceRecipientId, TransactionDate = firstRecordInGrouping.Shippeddatetimereference }; return(_databaseRepository.InsertDatabasePoReceiptHeader(header)); }
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); }
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)); }