/// <summary> /// Creates a Xero line item for every Aquairum line item with a matching Invoice number, and bundles them up into a Xero invoice /// </summary> /// <param name="theInvoiceLineItemToConvert"></param> /// <returns></returns> public static XeroApi.Model.Invoice ConvertMultipleOutboundInvoiceLineItemsToXeroInvoice(OutboundInvoiceLineItemList theInvoiceLineItemsToConvert, OutboundInvoiceLineItem theLineItemToMatchTo, Datalayer.Xero.Interresolve.InterResolveXeroService aService) { try { XeroApi.Model.Invoice theInvoiceToReturn = new XeroApi.Model.Invoice(); theInvoiceToReturn.LineItems = new XeroApi.Model.LineItems(); theInvoiceToReturn.Contact = new XeroApi.Model.Contact(); //NEED TO SPECIFY A CONTACT //assign the xero contact aService.LoginToXero(); theInvoiceToReturn.Contact = aService.GetXeroContactFromAquariumInvoiceLineItemList(theLineItemToMatchTo); //assign top level invoice fields for the passed invoice to the Xero counterpart theInvoiceToReturn.InvoiceNumber = theLineItemToMatchTo.InvoiceNumber.ToString(); theInvoiceToReturn.Status = "DRAFT"; theInvoiceToReturn.Type = "ACCREC"; //Sales invoice theInvoiceToReturn.Reference = theLineItemToMatchTo.SageNarrative + " " + theLineItemToMatchTo.YourRef; theInvoiceToReturn.LineAmountTypes = XeroApi.Model.LineAmountType.Exclusive; theInvoiceToReturn.SubTotal = theLineItemToMatchTo.OriginalPurchaseInvoiceTotal; theInvoiceToReturn.DueDate = DateTime.Now.AddDays(14); theInvoiceToReturn.Date = theLineItemToMatchTo.InvoiceDate; // theInvoiceToReturn.TotalTax //this must be calculated AFTER by summing all the line item VATs theInvoiceToReturn.Total = theLineItemToMatchTo.OriginalPurchaseInvoiceTotal; //iterate through and if number matches specified invoice number, add it to the list decimal RunningVATTotalForInvoice = new decimal(0.00); for (int i = 0; i < theInvoiceLineItemsToConvert.OutboundInvoiceLineItems.Count(); i++) { if (theInvoiceLineItemsToConvert.OutboundInvoiceLineItems.ElementAt(i).InvoiceNumber == theLineItemToMatchTo.InvoiceNumber) { //if the invoice numbers match, create a new line item and add this line item to the list XeroApi.Model.LineItem aLineItem = new XeroApi.Model.LineItem(); aLineItem.Quantity = 1; //always one line item aLineItem.Description = theInvoiceLineItemsToConvert.OutboundInvoiceLineItems.ElementAt(i).InvoiceType; // aLineItem.UnitAmount = theInvoiceLineItemsToConvert.OutboundInvoiceLineItems.ElementAt(i).OriginalPurchaseInvoiceAmount; aLineItem.TaxAmount = theInvoiceLineItemsToConvert.OutboundInvoiceLineItems.ElementAt(i).OriginalPurchaseInvoiceVAT; aLineItem.LineAmount = (aLineItem.Quantity * aLineItem.UnitAmount); aLineItem.AccountCode = InterResolveXeroService.GetXeroAccountCodeForAquariumLineItem(theInvoiceLineItemsToConvert.OutboundInvoiceLineItems.ElementAt(i)); //add the VAT to the running total RunningVATTotalForInvoice =+ theInvoiceLineItemsToConvert.OutboundInvoiceLineItems.ElementAt(i).OriginalPurchaseInvoiceVAT; //add it to the list theInvoiceToReturn.LineItems.Add(aLineItem); } } //assign the overall invoice VAT theInvoiceToReturn.TotalTax = RunningVATTotalForInvoice; return theInvoiceToReturn; } catch (Exception ex) { throw ex; } }