public sp_ReserveInvoices_InvoiceLines2_Result[] GetInvoicesByPriceMode(PriceModeDocumentEnum pricemode) { if (Invoices != null) { string priceModeCode = null;; switch (pricemode) { case PriceModeDocumentEnum.pmdGross: priceModeCode = "G"; break; case PriceModeDocumentEnum.pmdNet: priceModeCode = "N"; break; case PriceModeDocumentEnum.pmdNetAndGross: Console.Write("pmdNetAndGross not yet implemented."); Console.ReadKey(); break; } if (priceModeCode != null) { return(Invoices.Where(x => x.PriceMode == priceModeCode).ToArray()); } } return(null); }
public static string CreateDraft(SAP sap, Invoice invoice, PriceModeDocumentEnum pricemode) { // Which price mode var lines = invoice.GetInvoicesByPriceMode(pricemode); string results = null; if (lines.Length > 0) { // Group by shop var shopitems = from i in lines group i by new { i.BaseCard, i.WhsCode } into g select new { Shop = g.Key.BaseCard, Whscode = g.Key.WhsCode, Items = g, DocDate = g.First().DocDate }; // Memory var shopItemsList = shopitems.ToArray(); // Create draft in SAP foreach (var shop in shopItemsList) { Documents delivery = (Documents)sap.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts); Documents invoices = (Documents)sap.oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oInvoices); delivery.DocObjectCodeEx = "15"; // 15 = Delivery delivery.CardCode = shop.Shop; delivery.DocDate = shop.DocDate.Value; //delivery.BPL_IDAssignedToInvoice = 1; // Price mode delivery.PriceMode = pricemode; var items = shop.Items.ToArray(); //Console.WriteLine($"Creating draft for {shop.Shop}, items: {items.Count()}"); for (int i = 0; i < items.Count(); i++) { if (i > 0) { delivery.Lines.Add(); } // Items delivery.Lines.ItemCode = items[i].ItemCode; //delivery.Lines.Quantity = Convert.ToDouble(items[i].Quantity); delivery.Lines.Quantity = Convert.ToDouble(items[i].OpenQty.Value); delivery.Lines.WarehouseCode = shop.Whscode; delivery.Lines.UoMEntry = items[i].UomEntry.Value; // References delivery.Lines.BaseEntry = items[i].DocEntry; delivery.Lines.BaseLine = items[i].LineNum; delivery.Lines.BaseType = 13; // 13 = Invoices // Pricing if (pricemode == PriceModeDocumentEnum.pmdGross) { delivery.Lines.GrossPrice = Convert.ToDouble(items[i].GrossPrice.Value); } if (pricemode == PriceModeDocumentEnum.pmdNet) { delivery.Lines.UnitPrice = Convert.ToDouble(items[i].NetPrice.Value); } } int result = delivery.Add(); if (result != 0) { results = results + sap.oCompany.GetLastErrorDescription() + Environment.NewLine; } else { int newDocEntry = int.Parse(sap.oCompany.GetNewObjectKey()); DeliveryDraftsTaskList.Add(newDocEntry); results = results + "OK - " + sap.oCompany.GetNewObjectKey() + Environment.NewLine; } } } else { results = "No invoices for " + pricemode + "."; } return(results); }