protected void writeDocument(BusinessDocument bdoc, Element elem)
{
	elem.setAttribute("id", ""+bdoc.getId());
	elem.setAttribute("submitted", bdoc.getDate());
	writeAddress(bdoc.getBillTo(), addChild(elem, "billTo"));
	writeAddress(bdoc.getShipTo(), addChild(elem, "shipTo"));
}

protected void writeAddress(Address addr, Element elem)
{
	addChild(elem, "name", addr.getName());
	addChild(elem, "company", addr.getCompany());
	addChild(elem, "street", addr.getStreet());
	addChild(elem, "city", addr.getCity());
	addChild(elem, "state", addr.getState());
	addChild(elem, "postalCode", addr.getPostalcode());
	addChild(elem, "country", addr.getCountry());
}

protected void writePOItem(POItem item, Element elem)
{
	elem.setAttribute("sku", item.getSKU());
	elem.setAttribute("quantity", ""+item.getQuantity());
	addChild(elem, "description", item.getDescription());
}

protected void writeInvoiceItem(InvoiceItem item, Element elem)
{
	writePOItem(item, elem);
	elem.setAttribute("unitPrice", nf.format(item.getUnitPrice()));
}

protected void writeInvoice(Invoice invoice, Element elem)
{
	writeElement(invoice, elem);
	Element order = addChild(elem, "order");
	InvoiceItem[] items = invoice.getItems();
	for (int i = 0; i < items.length; ++i)
	{
		writeInvoiceItem(items[i], addChild(order, "item"));
	}

	addChild(elem, "tax", nf.format(invoice.getTax()));
	addChild(elem, "shippingAndHandling", nf.format(invoice.getShippingAndHandling()));
	addChild(elem, "totalCost", nf.format(invoice.getTotalCost()));
}
