function buildOrderDownloadXML($data) { // builds download XML string for orders // clean up some fields $temp = explode(' ', $data->info['date_purchased']); $order_date = $temp[0]; // remove the time from the order date stamp $this->strXML = '<?xml version="1.0" encoding="UTF-8" ?>' . chr(10); $this->strXML .= '<AccessRequest>' . chr(10); $this->strXML .= '<AccessUserID>' . MODULE_PHREEBOOKS_ORDER_DOWNLOAD_USER . '</AccessUserID>' . chr(10); $this->strXML .= '<AccessPassword>' . MODULE_PHREEBOOKS_ORDER_DOWNLOAD_PW . '</AccessPassword>' . chr(10); $this->strXML .= '<AccessFunction>' . $type . '</AccessFunction>' . chr(10); $this->strXML .= '<PhreeBooksXMLVersion>1.00</PhreeBooksXMLVersion>' . chr(10); $this->strXML .= '<SalesOrderEntry>' . chr(10); $this->strXML .= '<OrderRequest>' . chr(10); $this->strXML .= '<RequestAction>New</RequestAction>' . chr(10); $this->strXML .= '<ReferenceName>' . $data->info['date_purchased'] . '</ReferenceName>' . chr(10); $this->strXML .= '<Originator>' . chr(10); $this->strXML .= '<StoreID>' . MODULE_PHREEBOOKS_ORDER_DOWNLOAD_STORE_ID . '</StoreID>' . chr(10); $this->strXML .= '<SalesRepID>' . MODULE_PHREEBOOKS_ORDER_DOWNLOAD_SALES_REP_ID . '</SalesRepID>' . chr(10); $this->strXML .= '<SalesGLAccount>' . MODULE_PHREEBOOKS_ORDER_DOWNLOAD_SALES_GL_ACCOUNT . '</SalesGLAccount>' . chr(10); $this->strXML .= '<ReceivablesGLAccount>' . MODULE_PHREEBOOKS_ORDER_DOWNLOAD_AR_GL_ACCOUNT . '</ReceivablesGLAccount>' . chr(10); $this->strXML .= '</Originator>' . chr(10); $this->strXML .= '</OrderRequest>' . chr(10); $this->strXML .= '<SalesOrder>' . chr(10); $this->strXML .= '<OrderSummary>' . chr(10); $this->strXML .= '<SalesOrderID>' . MODULE_PHREEBOOKS_ORDER_DOWNLOAD_PREFIX . $data->id . '</SalesOrderID>' . chr(10); $this->strXML .= '<SalesOrderDate>' . $order_date . '</SalesOrderDate>' . chr(10); // get the totals separately since the default order does not include the totals class name $result = tep_db_query("select * from " . TABLE_ORDERS_TOTAL . " where orders_id = " . $data->id); while ($item = tep_db_fetch_array($result)) { switch ($item['class']) { // TBD also need to include discounts, fees and other order total modules information case 'ot_total': $this->strXML .= '<OrderTotal>' . $item['value'] . '</OrderTotal>' . chr(10); break; case 'ot_shipping': $this->strXML .= '<ShippingTotal>' . $item['value'] . '</ShippingTotal>' . chr(10); $this->strXML .= '<ShippingCarrier>' . $item['title'] . '</ShippingCarrier>' . chr(10); $this->strXML .= '<ShippingMethod>' . $item['title'] . '</ShippingMethod>' . chr(10); break; } } // $this->strXML .= '<OrderNotes>' . $data->info['ip_address'] . '</OrderNotes>' . chr(10); $this->strXML .= '</OrderSummary>' . chr(10); $this->strXML .= '<Payment>' . chr(10); $this->strXML .= '<CardHolderName>' . $data->info['cc_owner'] . '</CardHolderName>' . chr(10); $this->strXML .= '<Method>' . $data->info['payment_method'] . '</Method>' . chr(10); $this->strXML .= '<Type>' . $data->info['cc_type'] . '</Type>' . chr(10); $this->strXML .= '<CardNumber>' . $data->info['cc_number'] . '</CardNumber>' . chr(10); $this->strXML .= '<ExpirationDate>' . $data->info['cc_expires'] . '</ExpirationDate>' . chr(10); $this->strXML .= '<CVV2Number>' . $data->info['cc_cvv'] . '</CVV2Number>' . chr(10); if (function_exists('osc_set_hint')) { $this->strXML .= '<Hint>' . zc_set_hint($data->id) . '</Hint>' . chr(10); } if (function_exists('osc_set_value')) { $temp = strtr(base64_encode(zc_set_value($data->id)), '+/=', '-_,'); $this->strXML .= '<Encval>' . $temp . '</Encval>' . chr(10); } $this->strXML .= '</Payment>' . chr(10); $this->strXML .= '<Customer>' . chr(10); switch (PHREEBOOKS_DOWNLOAD_USER_ID_METHOD) { case 'Telephone': $customer_id = preg_replace("[^0-9]", "", $data->customer['telephone']); break; case 'Email': default: $customer_id = $data->customer['email_address']; } $this->strXML .= '<CustomerID>' . $customer_id . '</CustomerID>' . chr(10); $this->strXML .= '<CompanyName>' . $data->customer['company'] . '</CompanyName>' . chr(10); $this->strXML .= '<Contact>' . $data->customer['name'] . '</Contact>' . chr(10); $this->strXML .= '<Telephone>' . $data->customer['telephone'] . '</Telephone>' . chr(10); $this->strXML .= '<Email>' . $data->customer['email_address'] . '</Email>' . chr(10); $this->strXML .= '<Address1>' . $data->customer['street_address'] . '</Address1>' . chr(10); $this->strXML .= '<Address2>' . $data->customer['suburb'] . '</Address2>' . chr(10); $this->strXML .= '<CityTown>' . $data->customer['city'] . '</CityTown>' . chr(10); $codes = $this->getCodes($data->customer['country'], $data->customer['state']); $this->strXML .= '<StateProvince>' . $codes['state'] . '</StateProvince>' . chr(10); $this->strXML .= '<PostalCode>' . $data->customer['postcode'] . '</PostalCode>' . chr(10); $this->strXML .= '<CountryCode>' . $codes['country'] . '</CountryCode>' . chr(10); $this->strXML .= '</Customer>' . chr(10); $this->strXML .= '<Billing>' . chr(10); $this->strXML .= '<CompanyName>' . $data->billing['company'] . '</CompanyName>' . chr(10); $this->strXML .= '<Contact>' . $data->billing['name'] . '</Contact>' . chr(10); $this->strXML .= '<Address1>' . $data->billing['street_address'] . '</Address1>' . chr(10); $this->strXML .= '<Address2>' . $data->billing['suburb'] . '</Address2>' . chr(10); $this->strXML .= '<CityTown>' . $data->billing['city'] . '</CityTown>' . chr(10); $codes = $this->getCodes($data->billing['country'], $data->billing['state']); $this->strXML .= '<StateProvince>' . $codes['state'] . '</StateProvince>' . chr(10); $this->strXML .= '<PostalCode>' . $data->billing['postcode'] . '</PostalCode>' . chr(10); $this->strXML .= '<CountryCode>' . $codes['country'] . '</CountryCode>' . chr(10); $this->strXML .= '</Billing>' . chr(10); $this->strXML .= '<Shipping>' . chr(10); $this->strXML .= '<CompanyName>' . $data->delivery['company'] . '</CompanyName>' . chr(10); $this->strXML .= '<Contact>' . $data->delivery['name'] . '</Contact>' . chr(10); $this->strXML .= '<Address1>' . $data->delivery['street_address'] . '</Address1>' . chr(10); $this->strXML .= '<Address2>' . $data->delivery['suburb'] . '</Address2>' . chr(10); $this->strXML .= '<CityTown>' . $data->delivery['city'] . '</CityTown>' . chr(10); $codes = $this->getCodes($data->delivery['country'], $data->delivery['state']); $this->strXML .= '<StateProvince>' . $codes['state'] . '</StateProvince>' . chr(10); $this->strXML .= '<PostalCode>' . $data->delivery['postcode'] . '</PostalCode>' . chr(10); $this->strXML .= '<CountryCode>' . $codes['country'] . '</CountryCode>' . chr(10); $this->strXML .= '</Shipping>' . chr(10); $this->strXML .= '<LineItems>' . chr(10); // get the products separately since the default order does not include the products_id $result = tep_db_query("select * from " . TABLE_ORDERS_PRODUCTS . " where orders_id = " . $data->id); while ($item = tep_db_fetch_array($result)) { $this->strXML .= '<LineItemDetails>' . chr(10); $this->strXML .= '<ItemID>' . $this->find_sku($item['products_id'], $item['products_name']) . '</ItemID>' . chr(10); $this->strXML .= '<Description>' . $item['products_name'] . '</Description>' . chr(10); $this->strXML .= '<Quantity>' . $item['products_quantity'] . '</Quantity>' . chr(10); $this->strXML .= '<UnitPrice>' . $item['products_price'] . '</UnitPrice>' . chr(10); $this->strXML .= '<SalesTax>' . $item['products_tax'] . '</SalesTax>' . chr(10); // $this->strXML .= '<SalesTaxPercent>' . $item['products_tax'] . '</SalesTaxPercent>' . chr(10); $this->strXML .= '<TotalPrice>' . $item['products_quantity'] * $item['products_price'] . '</TotalPrice>' . chr(10); $this->strXML .= '</LineItemDetails>' . chr(10); } $this->strXML .= '</LineItems>' . chr(10); $this->strXML .= '</SalesOrder>' . chr(10); $this->strXML .= '</SalesOrderEntry>' . chr(10); $this->strXML .= '</AccessRequest>' . chr(10); return true; }
function buildOrderDownloadXML($orders) { // builds download XML string for orders // clean up some fields $strXML = '<?xml version="1.0" encoding="UTF-8" ?>' . chr(10); $strXML .= '<Request>' . chr(10); $strXML .= $this->xmlEntry('UserID', MODULE_PHREEBOOKS_ORDER_DOWNLOAD_USER); $strXML .= $this->xmlEntry('Password', MODULE_PHREEBOOKS_ORDER_DOWNLOAD_PW); $strXML .= $this->xmlEntry('Version', '1.00'); $strXML .= $this->xmlEntry('Function', 'SalesOrder'); $strXML .= $this->xmlEntry('Action', 'New'); foreach ($orders as $oID) { $data = new order($oID); // open the order and read all information $data->id = $oID; $temp = explode(' ', $data->info['date_purchased']); $order_date = $temp[0]; // remove the time from the order date stamp $strXML .= '<Order>' . chr(10); $strXML .= $this->xmlEntry('Reference', $oID); $strXML .= $this->xmlEntry('StoreID', MODULE_PHREEBOOKS_ORDER_DOWNLOAD_STORE_ID); $strXML .= $this->xmlEntry('SalesRepID', MODULE_PHREEBOOKS_ORDER_DOWNLOAD_SALES_REP_ID); $strXML .= $this->xmlEntry('SalesGLAccount', MODULE_PHREEBOOKS_ORDER_DOWNLOAD_SALES_GL_ACCOUNT); $strXML .= $this->xmlEntry('ReceivablesGLAccount', MODULE_PHREEBOOKS_ORDER_DOWNLOAD_AR_GL_ACCOUNT); $strXML .= $this->xmlEntry('OrderID', MODULE_PHREEBOOKS_ORDER_DOWNLOAD_PREFIX . $data->id); // $strXML .= $this->xmlEntry('PurchaseOrderID', 'TBD'); $strXML .= $this->xmlEntry('OrderDate', $order_date); $strXML .= $this->xmlEntry('OrderTotal', $data->info['total']); $strXML .= $this->xmlEntry('TaxTotal', $data->info['tax']); $freight_totals = $this->getClassInfo('ot_shipping', $data->totals); $strXML .= $this->xmlEntry('ShippingTotal', $this->clean_value($freight_totals['text'], $data->info['currency'])); $strXML .= $this->xmlEntry('ShippingCarrier', $freight_totals['title']); $strXML .= $this->xmlEntry('ShippingMethod', $freight_totals['title']); // TBD also need to include discounts, fees and other order total modules information // $strXML .= $this->xmlEntry('OrderNotes', $data->info['ip_address']); $strXML .= '<Payment>' . chr(10); $strXML .= $this->xmlEntry('CardHolderName', $data->billing['name']); $strXML .= $this->xmlEntry('Method', $data->info['payment_method']); $strXML .= $this->xmlEntry('CardType', $data->info['cc_type']); $strXML .= $this->xmlEntry('CardNumber', $data->info['cc_number']); $strXML .= $this->xmlEntry('ExpirationDate', $data->info['cc_expires']); $strXML .= $this->xmlEntry('CVV2Number', $data->info['cc_cvv']); if (function_exists('zc_set_hint')) { $strXML .= $this->xmlEntry('CardHint', zc_set_hint($data->id)); } if (function_exists('zc_set_value')) { $temp = strtr(base64_encode(zc_set_value($data->id)), '+/=', '-_,'); $strXML .= $this->xmlEntry('CardEncodeValue', $temp); } $strXML .= '</Payment>' . chr(10); $strXML .= '<Customer>' . chr(10); switch (PHREEBOOKS_DOWNLOAD_USER_ID_METHOD) { case 'Telephone': $customer_id = ereg_replace("[^0-9]", "", $data->customer['telephone']); break; case 'Email': default: $customer_id = $data->customer['email_address']; break; } $strXML .= $this->xmlEntry('CustomerID', $customer_id); $strXML .= $this->xmlEntry('CompanyName', $data->customer['company']); $strXML .= $this->xmlEntry('Contact', $data->customer['name']); $strXML .= $this->xmlEntry('Telephone', $data->customer['telephone']); $strXML .= $this->xmlEntry('Email', $data->customer['email_address']); $strXML .= $this->xmlEntry('Address1', $data->customer['street_address']); $strXML .= $this->xmlEntry('Address2', $data->customer['suburb']); $strXML .= $this->xmlEntry('CityTown', $data->customer['city']); $codes = $this->getCodes($data->customer['country'], $data->customer['state']); $strXML .= $this->xmlEntry('StateProvince', $codes['state']); $strXML .= $this->xmlEntry('PostalCode', $data->customer['postcode']); $strXML .= $this->xmlEntry('CountryCode', $codes['country']); $strXML .= '</Customer>' . chr(10); $strXML .= '<Billing>' . chr(10); $strXML .= $this->xmlEntry('CompanyName', $data->billing['company']); $strXML .= $this->xmlEntry('Contact', $data->billing['name']); $strXML .= $this->xmlEntry('Address1', $data->billing['street_address']); $strXML .= $this->xmlEntry('Address2', $data->billing['suburb']); $strXML .= $this->xmlEntry('CityTown', $data->billing['city']); $codes = $this->getCodes($data->billing['country'], $data->billing['state']); $strXML .= $this->xmlEntry('StateProvince', $codes['state']); $strXML .= $this->xmlEntry('PostalCode', $data->billing['postcode']); $strXML .= $this->xmlEntry('CountryCode', $codes['country']); $strXML .= '</Billing>' . chr(10); $strXML .= '<Shipping>' . chr(10); $strXML .= $this->xmlEntry('CompanyName', $data->delivery['company']); $strXML .= $this->xmlEntry('Contact', $data->delivery['name']); $strXML .= $this->xmlEntry('Address1', $data->delivery['street_address']); $strXML .= $this->xmlEntry('Address2', $data->delivery['suburb']); $strXML .= $this->xmlEntry('CityTown', $data->delivery['city']); $codes = $this->getCodes($data->delivery['country'], $data->delivery['state']); $strXML .= $this->xmlEntry('StateProvince', $codes['state']); $strXML .= $this->xmlEntry('PostalCode', $data->delivery['postcode']); $strXML .= $this->xmlEntry('CountryCode', $codes['country']); $strXML .= '</Shipping>' . chr(10); foreach ($data->products as $item) { $strXML .= '<Item>' . chr(10); $strXML .= $this->xmlEntry('ItemID', $this->find_sku($item['id'], $item['name'])); $strXML .= $this->xmlEntry('Description', $item['name']); $strXML .= $this->xmlEntry('Quantity', $item['qty']); $strXML .= $this->xmlEntry('UnitPrice', $item['price']); // $strXML .= $this->xmlEntry('SalesTax', $item['tax']); $strXML .= $this->xmlEntry('SalesTaxPercent', $item['tax']); $strXML .= $this->xmlEntry('TotalPrice', $item['qty'] * $item['price']); $strXML .= '</Item>' . chr(10); } $strXML .= '</Order>' . chr(10); } $strXML .= '</Request>' . chr(10); return $strXML; }