/// <summary> /// Build a new document instance (Invoice) /// </summary> /// <param name="documentDaysPassed">Instead of the invoice datetime, pass the number of days to be added to the invoice date</param> public static APIClient.V2.Models.SimplifiedInvoice BuildDocument(string series = null, int documentDaysPassed = 60, decimal unitPrice = 10) { if (documentDaysPassed > 0) { // subtract days to date documentDaysPassed = documentDaysPassed * -1; } DateTime date = DateTime.Now.AddDays(documentDaysPassed); var invoice = new APIClient.V2.Models.SimplifiedInvoice() { Currency = "EUR", Date = date, Description = "API Client Test", DueDate = date.AddDays(30), EuroRate = 0, ExternalId = null, Id = 0, Retention = 0, Series = series, TaxExemptionReasonCode = null }; invoice.Lines.Add(new APIClient.V2.Models.APIInvoicingProduct() { Code = "999", CostCenter = null, Description = "General Expense", ProductDiscount = 0, Quantity = 1, TaxValue = 23, Type = APIClient.V2.Models.ProductType.S, Unit = "API Activation", UnitPrice = unitPrice }); return(invoice); }
/// <summary> /// Scenario description: /// 1. Create Invoice /// 2. Correct invoice with Credit Note /// 3. Create new Invoice /// </summary> private static void CreateSimpleInvoice_Scenario_01(Magni.APIClient.V2.Invoicing api) { var client = new APIClient.V2.Models.Client() { Address = "Av. Sidónio Pais", City = "Lisboa", CountryCode = "PT", Name = "Consumidor Final", NIF = "999999990", PhoneNumber = "111111112", PostCode = "1500-244" }; var invoice = new APIClient.V2.Models.SimplifiedInvoice() { Currency = "EUR", Date = DateTime.Now, Description = "API Client Test", DueDate = DateTime.Now.AddDays(30), EuroRate = 0, ExternalId = null, Id = 0, Retention = 0, Series = null, TaxExemptionReasonCode = null }; invoice.Lines.Add(new APIClient.V2.Models.APIInvoicingProduct() { Code = "999", CostCenter = null, Description = "General Expense", ProductDiscount = 0, Quantity = 1, TaxValue = 23, Type = APIClient.V2.Models.ProductType.S, Unit = "API Activation", UnitPrice = 10 }); var response = api.InvoiceSimplifiedCreate(client, invoice, isToClose: false, sentTo: sentToEmail); if (response.Type == APIClient.V2.Models.ResponseType.Success) { var creditNote = new APIClient.V2.Models.CreditNote() { Currency = "EUR", Date = DateTime.Now, Description = "API Client Test", DueDate = DateTime.Now.AddDays(30), EuroRate = 0, ExternalId = null, Id = response.Document.DocumentId, Retention = 0, Series = null, TaxExemptionReasonCode = null }; creditNote.Lines.Add(invoice.Lines.First()); var creditNoteResponse = api.CreditNoteCreate(client, creditNote, isToClose: false, sentTo: sentToEmail); if (creditNoteResponse.Type == APIClient.V2.Models.ResponseType.Success) { invoice.Lines.First().UnitPrice = 8; response = api.InvoiceSimplifiedCreate(client, invoice, isToClose: false, sentTo: sentToEmail); if (response.Type == APIClient.V2.Models.ResponseType.Success) { var documentFile = api.DocumentGet(response.Document.DocumentId); } } } }