コード例 #1
0
ファイル: Sage50Api.cs プロジェクト: valentin78/Apination
        public void UpdateInvoice(Models.Data.SalesInvoice invoice)
        {
            var customer = FindSageCustomer(invoice.Customer);

            if (customer == null)
            {
                throw new AbortException($"Not found customer with Key: '{invoice.Customer.GlobalKey(actionSource)}'. Transaction aborted.", StatusCode.Fail);
            }

            var sageInvoice = FindInvoice(invoice.ReferenceNumber, customer.ID);

            if (sageInvoice == null)
            {
                throw new AbortException($"Not found invoice with ReferenceNumber: '{invoice.ReferenceNumber}' and CustomerId: '{customer.ID}'. Transaction aborted.", StatusCode.Ignored);
            }

            sageInvoice.CustomerReference = CreateOrUpdateCustomer(invoice.Customer);

            sageInvoice.PopulateFromModel(CompanyContext, invoice);
            sageInvoice.Save();
        }
コード例 #2
0
ファイル: Sage50Api.cs プロジェクト: valentin78/Apination
        public void UpsertInvoice(Models.Data.SalesInvoice invoice)
        {
            var customer = FindSageCustomer(invoice.Customer);

            // if no exist Customer, goto CreateInvoice
            if (customer == null)
            {
                CreateInvoice(invoice);
            }
            else
            {
                var sageInvoice = FindInvoice(invoice.ReferenceNumber, customer.ID);
                if (sageInvoice == null)
                {
                    CreateInvoice(invoice);
                }
                else
                {
                    UpdateInvoice(invoice);
                }
            }
        }
コード例 #3
0
ファイル: Sage50Api.cs プロジェクト: valentin78/Apination
        public void CreateInvoice(Models.Data.SalesInvoice invoice)
        {
            var customer = FindSageCustomer(invoice.Customer);

            SalesInvoice sageInvoice;

            if (customer != null)
            {
                sageInvoice = FindInvoice(invoice.ReferenceNumber, customer.ID);
                if (sageInvoice != null)
                {
                    throw new AbortException(
                              $"Found invoice with ReferenceNumber: '{invoice.ReferenceNumber}' and CustomerId: '{customer.ID}'. Transaction aborted.", StatusCode.Ignored);
                }
            }

            // if no exist invoice, we can create new
            sageInvoice = CompanyContext.Factories.SalesInvoiceFactory.Create();

            sageInvoice.CustomerReference = CreateOrUpdateCustomer(invoice.Customer);

            sageInvoice.PopulateFromModel(CompanyContext, invoice);
            sageInvoice.Save();
        }
コード例 #4
0
        public static void PopulateFromModel(this SalesInvoice sageInvoice, Company companyContext, Models.Data.SalesInvoice invoice)
        {
            sageInvoice.ReferenceNumber = invoice.ReferenceNumber;

            sageInvoice.Date             = invoice.Date;
            sageInvoice.Date             = invoice.Date;
            sageInvoice.ShipDate         = invoice.ShipDate;
            sageInvoice.CustomerNote     = invoice.CustomerNote;
            sageInvoice.InternalNote     = invoice.InternalNote;
            sageInvoice.TermsDescription = invoice.TermsDescription;
            sageInvoice.StatementNote    = invoice.StatementNote;
            sageInvoice.ShipVia          = invoice.ShipVia;
            sageInvoice.PrintCustomerNoteAfterLineItems = invoice.PrintCustomerNoteAfterLineItems;
            sageInvoice.FreightAmount  = invoice.FreightAmount;
            sageInvoice.DropShip       = invoice.DropShip;
            sageInvoice.DiscountDate   = invoice.DiscountDate;
            sageInvoice.DiscountAmount = invoice.DiscountAmount;
            sageInvoice.DateDue        = invoice.DateDue ?? DateTime.Now;
            sageInvoice.CustomerPurchaseOrderNumber = invoice.CustomerPurchaseOrderNumber;

            foreach (var sageInvoiceApplyToSalesLine in sageInvoice.ApplyToSalesLines)
            {
                sageInvoiceApplyToSalesLine.MarkForDeletion();
            }
            foreach (var salesLine in invoice.SalesLines)
            {
                var sageSalesLine = sageInvoice.AddSalesLine();
                sageSalesLine.Amount           = salesLine.Amount;
                sageSalesLine.Quantity         = salesLine.Quantity;
                sageSalesLine.SalesTaxType     = salesLine.SalesTaxType;
                sageSalesLine.UnitPrice        = salesLine.UnitPrice;
                sageSalesLine.Description      = salesLine.Description;
                sageSalesLine.AccountReference = sageSalesLine.AccountReference.PopulateFromModel(salesLine.Account, companyContext);
            }

            sageInvoice.FreightAccountReference = sageInvoice.FreightAccountReference.PopulateFromModel(invoice.FreightAccount, companyContext);
            sageInvoice.ShipToAddress.PopulateFromModel(invoice.ShipToAddress);
        }