20120921
old
// ******* TODO: The Offical Post Invoice List Function *******
public void PostInvoices(List<SenddrInvoice.senddr.invoice> _ListSenddr)
{
using (var sw = new StringWriter())
{
using (var xw = XmlWriter.Create(sw))
{
// Build Xml with xw.
xw.WriteStartDocument();
xw.WriteStartElement("Invoices");
foreach (var senddr in _ListSenddr)
{
xw.WriteStartElement("Invoice");
//xw.WriteElementString("Type", senddr.invoice_header.xml_invoice_type.Equals(String.Empty) ? "" : senddr.invoice_header.xml_invoice_type);
xw.WriteElementString("Type", "ACCREC");
#region Contact Elements Area
xw.WriteStartElement("Contact");
xw.WriteElementString("ContactNumber", senddr.invoice_company.company_telephone.Equals(String.Empty) ? "" : senddr.invoice_company.company_telephone);
xw.WriteElementString("Name", senddr.invoice_company.company_name.Equals(String.Empty) ? "" : senddr.invoice_company.company_name);
xw.WriteElementString("ContactStatus", senddr.invoice_company.xml_status.Equals(String.Empty) ? "" : senddr.invoice_company.xml_status);
xw.WriteElementString("EmailAddress", senddr.invoice_company.company_email.Equals(String.Empty) ? "" : senddr.invoice_company.company_email);
xw.WriteElementString("SkypeUserName", String.Empty);
xw.WriteElementString("BankAccountDetails", String.Empty);
xw.WriteElementString("TaxNumber", senddr.invoice_company.tax_reference.Equals(String.Empty) ? "" : senddr.invoice_company.tax_reference);
xw.WriteElementString("AccountsReceivableTaxType", String.Empty);
xw.WriteElementString("AccountsPayableTaxType", String.Empty);
xw.WriteElementString("FirstName", senddr.invoice_company.company_person_firstname.Equals(String.Empty) ? "" : senddr.invoice_company.company_person_firstname);
xw.WriteElementString("LastName", senddr.invoice_company.company_person_secondname.Equals(String.Empty) ? "" : senddr.invoice_company.company_person_secondname);
xw.WriteElementString("DefaultCurrency", senddr.invoice_company.currency_code.Equals(String.Empty) ? "" : senddr.invoice_company.currency_code);
xw.WriteStartElement("Addresses");
xw.WriteStartElement("Address");
xw.WriteElementString("AddressType", String.Empty);
xw.WriteElementString("AttentionTo", String.Empty);
xw.WriteElementString("AddressLine1", senddr.invoice_company.address1.Equals(String.Empty) ? "" : senddr.invoice_company.address1);
xw.WriteElementString("AddressLine2", senddr.invoice_company.address2.Equals(String.Empty) ? "" : senddr.invoice_company.address2);
xw.WriteElementString("AddressLine3", senddr.invoice_company.address3.Equals(String.Empty) ? "" : senddr.invoice_company.address3);
xw.WriteElementString("AddressLine4", senddr.invoice_company.address4.Equals(String.Empty) ? "" : senddr.invoice_company.address4);
xw.WriteElementString("City", String.Empty);
xw.WriteElementString("Region", String.Empty);
xw.WriteElementString("PostalCode", senddr.invoice_company.postcode.Equals(String.Empty) ? "" : senddr.invoice_company.postcode);
xw.WriteElementString("Country", senddr.invoice_company.country_code.Equals(String.Empty) ? "" : senddr.invoice_company.country_code);
xw.WriteEndElement();
xw.WriteEndElement();
xw.WriteStartElement("Phones");
xw.WriteStartElement("Phone");
xw.WriteElementString("PhoneType", "DEFAULT");
xw.WriteElementString("PhoneNumber", senddr.invoice_company.company_telephone.Equals(String.Empty) ? "" : senddr.invoice_company.company_telephone);
xw.WriteElementString("PhoneAreaCode", String.Empty);
xw.WriteElementString("PhoneCountryCode", String.Empty);
xw.WriteEndElement();
xw.WriteStartElement("Phone");
xw.WriteElementString("PhoneType", "FAX");
xw.WriteElementString("PhoneNumber", senddr.invoice_company.company_fax.Equals(String.Empty) ? "" : senddr.invoice_company.company_fax);
xw.WriteElementString("PhoneAreaCode", String.Empty);
xw.WriteElementString("PhoneCountryCode", String.Empty);
xw.WriteEndElement();
xw.WriteEndElement();
xw.WriteEndElement();
#endregion
//xw.WriteElementString("Date", senddr.invoice_header.invoice_date.Equals(String.Empty) ? "" : senddr.invoice_header.invoice_date.ToShortDateString().Replace('/','-'));
//xw.WriteElementString("DueDate", senddr.invoice_header.invoice_due_date.Equals(String.Empty) ? "" : senddr.invoice_header.invoice_due_date.ToShortDateString().Replace('/','-'));
xw.WriteElementString("Date", "2012-09-13");
xw.WriteElementString("DueDate", "2012-12-25");
xw.WriteElementString("InvoiceNumber", senddr.invoice_header.invoice_number.Equals(String.Empty) ? "" : senddr.invoice_header.invoice_number);
xw.WriteElementString("Reference", String.Empty);
xw.WriteElementString("BrandingThemeID", String.Empty);
xw.WriteElementString("Url", senddr.invoice_header.document_url.Equals(String.Empty) ? "" : senddr.invoice_header.document_url);
xw.WriteElementString("CurrencyCode", senddr.invoice_header.currency_code.Equals(String.Empty) ? "" : senddr.invoice_header.currency_code);
//xw.WriteElementString("Status", senddr.invoice_header.xml_status.Equals(String.Empty) ? "" : senddr.invoice_header.xml_status);
//xw.WriteElementString("Status", "DRAFT");
//xw.WriteElementString("LineAmountTypes", "Exclusive"); // For Draft Invoices
xw.WriteElementString("SubTotal", senddr.invoice_header.invoice_net_amount.Equals(String.Empty) ? "" : senddr.invoice_header.invoice_net_amount.ToString());
xw.WriteElementString("TotalTax", senddr.invoice_header.invoice_tax_amount.Equals(String.Empty) ? "" : senddr.invoice_header.invoice_tax_amount.ToString());
xw.WriteElementString("Total", senddr.invoice_header.invoice_amount.Equals(String.Empty) ? "" : senddr.invoice_header.invoice_amount.ToString());
#region LineItems Elements Area
xw.WriteStartElement("LineItems");
foreach (var i in senddr.invoice_item)
{
xw.WriteStartElement("LineItem");
xw.WriteElementString("Description", i.invoice_item_desc.Equals(String.Empty) ? "" : i.invoice_item_desc);
xw.WriteElementString("Quantity", i.item_qty.Equals(String.Empty) ? "" : i.item_qty.ToString());
xw.WriteElementString("UnitAmount", i.invoice_item_amount.Equals(String.Empty) ? "" : i.invoice_item_amount.ToString());
xw.WriteElementString("TaxAmount", i.invoice_item_tax_amount.Equals(String.Empty) ? "" : i.invoice_item_tax_amount.ToString());
xw.WriteElementString("LineAmount", String.Empty);
xw.WriteElementString("AccountCode", i.account_code.Equals(String.Empty) ? "" : i.account_code);
xw.WriteEndElement();
}
xw.WriteEndElement();
#endregion
xw.WriteEndElement();
}
xw.WriteEndElement();
xw.WriteEndDocument();
}
//return sw.ToString();
//String TestXML = sw.ToString();
String postInvoiceResponse = CallTheXeroApi(Final_oauth_token, Final_oauth_secret, "https://api.xero.com/api.xro/2.0/Invoices", "POST", sw.ToString());
if (postInvoiceResponse != string.Empty)
{
var responseElement = XElement.Parse(postInvoiceResponse);
string statusCode = responseElement.XPathSelectElement("/Status").Value;
if (statusCode == "OK")
{
InvoiceCreateStatus = true;
}
else
{
InvoiceCreateStatus = false;
}
}
}
}
new
public void PostInvoicesTest(List<SenddrInvoice.senddr.invoice> _ListSenddr)
{
using (var sw = new StringWriter())
{
using (var xw = XmlWriter.Create(sw))
{
// Build Xml with xw.
xw.WriteStartDocument();
xw.WriteStartElement("Invoices");
foreach (var senddr in _ListSenddr)
{
xw.WriteStartElement("Invoice");
//if (!senddr.invoice_header.xml_invoice_type.Equals(String.Empty)) xw.WriteElementString("Type", senddr.invoice_header.xml_invoice_type);
xw.WriteElementString("Type", "ACCREC");
#region Contact Elements Area
xw.WriteStartElement("Contact");
xw.WriteElementString("Name", senddr.invoice_company.company_name.Equals(String.Empty) ? "" : senddr.invoice_company.company_name);
if (!senddr.invoice_company.company_telephone.Equals(String.Empty)) xw.WriteElementString("ContactNumber", senddr.invoice_company.company_telephone);
if (!senddr.invoice_company.xml_status.Equals(String.Empty)) xw.WriteElementString("ContactStatus", senddr.invoice_company.xml_status);
if (!senddr.invoice_company.company_email.Equals(String.Empty)) xw.WriteElementString("EmailAddress", senddr.invoice_company.company_email);
if (!senddr.invoice_company.tax_reference.Equals(String.Empty)) xw.WriteElementString("TaxNumber", senddr.invoice_company.tax_reference);
if (!senddr.invoice_company.company_person_firstname.Equals(String.Empty)) xw.WriteElementString("FirstName", senddr.invoice_company.company_person_firstname);
if (!senddr.invoice_company.company_person_secondname.Equals(String.Empty)) xw.WriteElementString("LastName", senddr.invoice_company.company_person_secondname);
if (!senddr.invoice_company.currency_code.Equals(String.Empty)) xw.WriteElementString("DefaultCurrency", senddr.invoice_company.currency_code);
xw.WriteStartElement("Addresses");
xw.WriteStartElement("Address");
if (!senddr.invoice_company.address1.Equals(String.Empty)) xw.WriteElementString("AddressLine1", senddr.invoice_company.address1);
if (!senddr.invoice_company.address2.Equals(String.Empty)) xw.WriteElementString("AddressLine2", senddr.invoice_company.address2);
if (!senddr.invoice_company.address3.Equals(String.Empty)) xw.WriteElementString("AddressLine3", senddr.invoice_company.address3);
if (!senddr.invoice_company.address4.Equals(String.Empty)) xw.WriteElementString("AddressLine4", senddr.invoice_company.address4);
if (!senddr.invoice_company.postcode.Equals(String.Empty)) xw.WriteElementString("PostalCode", senddr.invoice_company.postcode);
if (!senddr.invoice_company.country_code.Equals(String.Empty)) xw.WriteElementString("Country", senddr.invoice_company.country_code);
xw.WriteEndElement();
xw.WriteEndElement();
xw.WriteStartElement("Phones");
xw.WriteStartElement("Phone");
xw.WriteElementString("PhoneType", "DEFAULT");
if (!senddr.invoice_company.company_telephone.Equals(String.Empty)) xw.WriteElementString("PhoneNumber", senddr.invoice_company.company_telephone);
xw.WriteEndElement();
xw.WriteStartElement("Phone");
xw.WriteElementString("PhoneType", "FAX");
if (!senddr.invoice_company.company_fax.Equals(String.Empty)) xw.WriteElementString("PhoneNumber", senddr.invoice_company.company_fax);
xw.WriteEndElement();
xw.WriteEndElement();
xw.WriteEndElement();
#endregion
xw.WriteElementString("Date", String.Format("{0}-{1}-{2}",senddr.invoice_header.invoice_date.Year, senddr.invoice_header.invoice_date.Month, senddr.invoice_header.invoice_date.Day));
xw.WriteElementString("DueDate", String.Format("{0}-{1}-{2}",senddr.invoice_header.invoice_due_date.Year, senddr.invoice_header.invoice_due_date.Month, senddr.invoice_header.invoice_due_date.Day));
xw.WriteElementString("LineAmountTypes", "Exclusive");
#region LineItems Elements Area
xw.WriteStartElement("LineItems");
foreach (var i in senddr.invoice_item)
{
xw.WriteStartElement("LineItem");
if (!i.invoice_item_desc.Equals(String.Empty)) xw.WriteElementString("Description", i.invoice_item_desc);
if (!i.item_qty.Equals(String.Empty)) xw.WriteElementString("Quantity", i.item_qty.ToString());
if (!i.invoice_item_amount.Equals(String.Empty)) xw.WriteElementString("UnitAmount", i.invoice_item_amount.ToString());
if (!i.account_code.Equals(String.Empty)) xw.WriteElementString("AccountCode", i.account_code);
xw.WriteEndElement();
}
xw.WriteEndElement();
#endregion
//Now the Invoice Type is Draft only
//xw.WriteElementString("Status", "AUTHORISED");
xw.WriteEndElement();
}
xw.WriteEndElement();
xw.WriteEndDocument();
}
// For Post the generated XML to XML API
String postInvoiceResponse = CallTheXeroApi(Final_oauth_token, Final_oauth_secret, "https://api.xero.com/api.xro/2.0/Invoices", "POST", sw.ToString());
if (postInvoiceResponse != string.Empty)
{
var responseElement = XElement.Parse(postInvoiceResponse);
string statusCode = responseElement.XPathSelectElement("/Status").Value;
if (statusCode == "OK")
{
InvoiceCreateStatus = true;
}
else
{
InvoiceCreateStatus = false;
}
}
}
}