public async Task TestUpdatePost() { // Create a post SupplierRoot post = new SupplierRoot { Supplier = new Supplier { SupplierNumber = "AD7000", Name = "AD 7000 Inc.", CountryCode = "US" } }; // Update the post FortnoxResponse<SupplierRoot> fr = await config.fortnox_client.Update<SupplierRoot>(post, "suppliers/AD7000"); // Log the error if (fr.model == null) { config.logger.LogError(fr.error); } // Test evaluation Assert.AreNotEqual(null, fr.model); } // End of the TestUpdatePost method
} // End of the AddOrder method /// <summary> /// Add an supplier invoice /// </summary> public async Task<SupplierInvoiceRoot> AddSupplierInvoice(string dox_email, AnnytabDoxTrade doc) { // Terms of payment if (string.IsNullOrEmpty(doc.terms_of_payment) == false) { doc.terms_of_payment = CommonTools.ConvertToAlphanumeric(doc.terms_of_payment).ToUpper().Replace("-", ""); await AddTermsOfPayment(doc.terms_of_payment); } // Currency if (string.IsNullOrEmpty(doc.currency_code) == false) { doc.currency_code = doc.currency_code.ToUpper(); await AddCurrency(doc.currency_code); } // Upsert the supplier SupplierRoot supplier_root = await UpsertSupplier(dox_email, doc); // Return if the supplier_root is null if(supplier_root == null || supplier_root.Supplier == null) { return null; } // Create a list with supplier invoice rows IList<SupplierInvoiceRow> rows = new List<SupplierInvoiceRow>(); //// Add accounts payable amount //if(doc.total != null && doc.total != 0M) //{ // rows.Add(new SupplierInvoiceRow // { // Code = "TOT", // Total = doc.total * -1 // }); //} //// Add value added tax //if (doc.vat_total != null && doc.vat_total != 0M) //{ // rows.Add(new SupplierInvoiceRow // { // Code = "VAT", // Total = doc.vat_total // }); //} //// Add rounding //if(doc.rounding != null && doc.rounding != 0M) //{ // rows.Add(new SupplierInvoiceRow // { // Code = "ROV", // Total = doc.rounding // }); //} // Add supplier invoice rows if (doc.product_rows != null) { await AddSupplierInvoiceRows(doc.product_rows, rows); } // Create a supplier invoice SupplierInvoiceRoot root = new SupplierInvoiceRoot { SupplierInvoice = new SupplierInvoice { SupplierNumber = supplier_root.Supplier.SupplierNumber, InvoiceNumber = string.IsNullOrEmpty(doc.payment_reference) == false ? doc.payment_reference : null, InvoiceDate = string.IsNullOrEmpty(doc.issue_date) == false ? doc.issue_date : null, DueDate = string.IsNullOrEmpty(doc.due_date) == false ? doc.due_date : null, Currency = doc.currency_code, Comments = doc.comment, Total = doc.total != null ? doc.total : 0M, VAT = doc.vat_total != null ? doc.vat_total : 0M, RoundOffValue = doc.rounding != null ? doc.rounding : 0M, SupplierInvoiceRows = rows } }; // Add a supplier invoice FortnoxResponse<SupplierInvoiceRoot> fr = await this.nox_client.Add<SupplierInvoiceRoot>(root, "supplierinvoices"); // Log errors if (string.IsNullOrEmpty(fr.error) == false) { this.logger.LogError(fr.error); } // Return the supplier invoice return fr.model; } // End of the AddSupplierInvoice method
} // End of the CreateOrderConfirmation method /// <summary> /// Create a purchase order /// </summary> private AnnytabDoxTrade CreatePurchaseOrder(CompanySettingsRoot company, OrderRoot root, SupplierRoot supplier_root, IList<ProductRow> product_rows, decimal? total_weight) { // Calculate totals decimal? net_sum = 0; decimal? vat_sum = 0; foreach (ProductRow row in product_rows) { net_sum += row.unit_price * row.quantity; vat_sum += row.unit_price * row.quantity * row.vat_rate; } // Create a Annytab Dox Trade document AnnytabDoxTrade post = new AnnytabDoxTrade(); post.id = root.Order.DocumentNumber; post.document_type = "order"; post.issue_date = DateTime.Now.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); post.delivery_date = root.Order.DeliveryDate; post.seller_references = new Dictionary<string, string>(); post.seller_references.Add("supplier_id", supplier_root.Supplier.SupplierNumber); post.buyer_references = new Dictionary<string, string>(); post.buyer_references.Add("customer_id", supplier_root.Supplier.OurCustomerNumber); post.terms_of_delivery = root.Order.TermsOfDelivery; post.terms_of_payment = supplier_root.Supplier.TermsOfPayment; post.mode_of_delivery = root.Order.WayOfDelivery; post.total_weight_kg = total_weight; post.currency_code = supplier_root.Supplier.Currency; post.comment = root.Order.Remarks; post.seller_information = new PartyInformation { person_id = supplier_root.Supplier.OrganisationNumber, person_name = supplier_root.Supplier.Name, address_line_1 = supplier_root.Supplier.Address1, address_line_2 = supplier_root.Supplier.Address2, postcode = supplier_root.Supplier.ZipCode, city_name = supplier_root.Supplier.City, country_name = supplier_root.Supplier.Country, country_code = supplier_root.Supplier.CountryCode, contact_name = supplier_root.Supplier.YourReference, phone_number = supplier_root.Supplier.Phone1, email = supplier_root.Supplier.Email, vat_number = supplier_root.Supplier.VATNumber }; post.buyer_information = GetCompanyParty(company, supplier_root.Supplier.OurReference); post.delivery_information = new PartyInformation { person_name = root.Order.DeliveryName, address_line_1 = root.Order.DeliveryAddress1, address_line_2 = root.Order.DeliveryAddress2, postcode = root.Order.DeliveryZipCode, city_name = root.Order.DeliveryCity, country_name = root.Order.DeliveryCountry }; post.product_rows = product_rows; post.subtotal = net_sum; post.vat_total = vat_sum; post.rounding = 0M; post.total = net_sum + vat_sum; // Return the post return post; } // End of the CreatePurchaseOrder method