Пример #1
0
        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);
        }
Пример #2
0
        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);
        }