} $ts_counter++; $xml_content = '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; $xml_content .= writeXMLopen('ottopartner', 0, 'xmlns="http://www.ottogroupb2b.com/ottopartner"'); $xml_content .= writeXMLline('LKZ', $temp_sp['jng_id'], 1); $xml_content .= writeXMLopen('OrderStates', 1); $xml_content .= writeXMLopen('OrderState', 2); $xml_content .= writeXMLline('order-no', $o['order_id'], 3); $xml_content .= writeXMLopen('product-line-items', 3); $items = $class_jo->retrieveItems($o['jng_sp_orders_id']); foreach ($items as $i) { $xml_content .= writeXMLopen('product-line-item', 4); $xml_content .= writeXMLline('position', $i['position'], 5); $xml_content .= writeXMLline('order-status', 'entered', 5); $xml_content .= writeXMLline('quantity', intval($i['order_quantity']), 5); $xml_content .= writeXMLline('ModificationDate', ottodeDateFormat($timestamp), 5); $xml_content .= writeXMLclose('product-line-item', 4); } $xml_content .= writeXMLclose('product-line-items', 3); $xml_content .= writeXMLclose('OrderState', 2); $xml_content .= writeXMLclose('OrderStates', 1); $xml_content .= writeXMLclose('ottopartner', 0); //CREATE XML ON SERVER $fn_counter = str_pad($ts_counter, 2, '0', STR_PAD_LEFT); $xml_filename = $temp_sp['jng_id'] . '_orderstatus_' . $ts_period . $fn_counter . '.xml'; $xmlfullpath = SP_OTTODE_UPLOAD_PATH_STATES . $xml_filename; $file = fopen($xmlfullpath, 'w'); $success = fwrite($file, $xml_content) !== false; fclose($file); if ($success) { $orders_confirmed++;
function generateXMLarticle($sp_detail, $p, $uselength = false) { global $deleted_eans, $deleted_eans_reported, $jng_sp_id; $result = ''; if (!in_array($p['products_ean'], $deleted_eans_reported)) { //only delete product if it is killed if ($p['products_active_status'] != '1') { $deleted_eans[] = $p['products_ean']; } else { //kill article if it's deactivated if (isset($p['article_status']) && $p['article_status'] == '0') { $deleted_eans[] = $p['products_ean']; } } //XML ARTICLES $result .= writeXMLopen('SKU', 3); if ($p['length'] != '' && $p['length'] != '0') { $result .= writeXMLline('Dimension2', textLength($p['length']) . ' Länge', 4); } $date_inv_start = ottodeDateFormat(date('Y-m-d H:i:s', strtotime($p['date_added']))); if ($p['active_status'] == '1' && (!isset($p['article_status']) || $p['article_status'] == '1')) { $date_inv_end_time = strtotime('+10 years'); } else { //deactivate products $date_inv_end_time = strtotime('+3 days'); } $date_inv_end = ottodeDateFormat(date('Y-m-d H:i:s', $date_inv_end_time)); $date_updated = ottodeDateFormat(date('Y-m-d H:i:s')); $price_old = $p['price_old'] == 0 ? $p['price'] : $p['price_old']; $result .= writeXMLline('InvoicingStartDate', $date_inv_start, 4); $result .= writeXMLline('InvoicingEndDate', $date_inv_end, 4); $result .= writeXMLline('SellingPrice', $p['price'], 4); $result .= writeXMLline('SellingPriceOld', $price_old, 4); $result .= writeXMLline('BuyingPrice', getPurchasePrice($p['price'], $jng_sp_id, $sp_detail), 4); $size = $p['length'] != '' && $p['length'] != '0' ? textLength($p['length'], false) : 'none'; $result .= writeXMLline('Size', $size, 4); $result .= writeXMLline('EAN', $p['products_ean'], 4); //In latest Warengruppen it seems that we can only use "neutral" //This means we can not use the existing gender information and //use a static value "neutral" instad. Updated by sahat on 02.07.2014 $result .= writeXMLline('Targetgroup', 'neutral', 4); //$result .= writeXMLline('ExpressDelivery', $p[''], 4); $result .= writeXMLclose('SKU', 3); } return $result; }
$xml_content .= writeXMLline('LKZ', $sp_detail[$jng_sp_id]['jng_id'], 1); $xml_content .= writeXMLopen('OrderStates', 1); //XML PER ORDER $items_confirmed = array(); foreach ($orders as $counter => $o) { $xml_content .= writeXMLopen('OrderState', 2); $xml_content .= writeXMLline('order-no', $o['order_id'], 3); $xml_content .= writeXMLopen('product-line-items', 3); $items = $data_sp['items'][$o['jng_sp_orders_id']]; foreach ($items as $i) { $items_confirmed[] = $i['jng_sp_orders_items_id']; $xml_content .= writeXMLopen('product-line-item', 4); $xml_content .= writeXMLline('position', $i['position'], 5); $status = $class_jo->statusIsCancelled($i['status']) ? 'cancel' : 'sent'; $xml_content .= writeXMLline('order-status', $status, 5); $xml_content .= writeXMLline('ModificationDate', ottodeDateFormat($export_date), 5); $xml_content .= writeXMLclose('product-line-item', 4); } $xml_content .= writeXMLclose('product-line-items', 3); $xml_content .= writeXMLclose('OrderState', 2); } $xml_content .= writeXMLclose('OrderStates', 1); $xml_content .= writeXMLclose('ottopartner', 0); //CREATE XML ON SERVER $xmlfullpath = SP_OTTODE_UPLOAD_PATH_STATES . $xml_filename; $file = fopen($xmlfullpath, 'w'); $success = fwrite($file, $xml_content) !== false; fclose($file); if ($success) { $upload_id = $class_ju->newUpload($jng_sp_id, 'BS', $xml_filename, $session_userinfo['username']); $class_jo->confirmOrderDelivery($items_confirmed);
$class_jc = new jng_sp_catalog(); $class_ju = new jng_sp_upload(); $class_pm = new products_minierp(); $class_pa = new products_articles(); $sp_detail = $class_sp->retrieveDetail($jng_sp_id); $excluded_booked_qty = true; $products_stock = $class_pm->stockRetrieveAll(WAREHOUSE_ID_PRODUCTS_HAMBURG, '', $excluded_booked_qty); $o_products = $class_jc->retrieveCatalogForUpload($jng_sp_id, true); if (count($o_products) == 0) { $logger->write('No Products found'); } else { $ean_format = false; //use "EAN" or "Product Code + Length" as ID //GRAB ALREADY REPORTED EAN $deleted_eans_reported = retrieveOTDEremovedEANList(); $export_date = ottodeDateFormat(date('Y-m-d H:i:s')); $xml_content = '<?xml version="1.0" encoding="UTF-8"?>'; $xml_content .= writeXMLopen('ottopartner', 0, 'xmlns="http://www.ottogroupb2b.com/ottopartner"'); $xml_content .= writeXMLline('LKZ', $sp_detail['jng_id']); $xml_content .= writeXMLopen('Inventories'); //CREATE XML ON SERVER $xml_filename = $sp_detail['jng_id'] . 'bestand' . ($ean_format ? '-per-ean' : 'daten') . '-' . date('YmdHi') . '.xml'; $file_fullpath = SP_OTTODE_UPLOAD_PATH_INVENTORIES . $xml_filename; $file = fopen($file_fullpath, 'w'); fwrite($file, $xml_content); foreach ($o_products as $products_id => $data) { if ($data['products_ean'] != '') { $product_has_stock = false; $reported_data = array(); //DEFAULT LENGTH $actual_stock = $products_stock[$data['products_id'] . '-0'];