} $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++;
$xml_content .= writeXMLline('DIFF_QUANTITY', $i['cancel_quantity'], 4); $cancel_status = $i['cancel_quantity_status'] == 'J' ? 'BST' : 'KDW'; $xml_content .= writeXMLline('DIFF_CAUSE_ID', $cancel_status, 4); } } elseif ($class_jo->statusIsCancelled($i['status'])) { $items_confirmed[] = $i['jng_sp_orders_items_id']; if ($i['cancel_quantity'] > 0) { $qty_cancel_confirmed[] = $i['jng_sp_orders_items_id']; $cancel_quantity = $i['cancel_quantity'] + $i['order_quantity']; } else { $cancel_quantity = $i['order_quantity']; } $xml_content .= writeXMLline('SHIP_QUANTITY', '0', 4); $xml_content .= writeXMLline('DIFF_QUANTITY', $cancel_quantity, 4); $cancel_status = $i['cancel_status'] == 'J' ? 'BST' : 'KDW'; $xml_content .= writeXMLline('DIFF_CAUSE_ID', $cancel_status, 4); } $xml_content .= writeXMLclose('QUANTITY', 3); //ITEMS close $xml_content .= writeXMLclose('ITEMS', 2); } //BDATA close $xml_content .= writeXMLclose('BDATA', 1); } //END ORDER LOOPING $xml_content .= writeXMLclose('NECKERMANN_BDATA', 0); //CREATE XML ON SERVER $file = fopen(SP_NECKERMANNAT_TEMP_FOLDER . $xml_filename, 'w'); $success = fwrite($file, $xml_content) !== false; fclose($file); $success_upload = false;
$xml_content .= writeXMLclose('ORDER_SELLTO', 3); //HEADER close $xml_content .= writeXMLclose('HEADER', 2); $items = $class_jo->retrieveItems($o['jng_sp_orders_id']); //XML PER ITEM foreach ($items as $i) { //ITEMS $xml_content .= writeXMLopen('ITEMS', 2); //Article Data $xml_content .= writeXMLopen('ARTICLE_DATA', 3); $xml_content .= writeXMLline('A_SUP_ARTNO', $i['article_number'], 4); $xml_content .= writeXMLline('NECKERMANN_POS_REF', $i['article_reference_number'], 4); $xml_content .= writeXMLclose('ARTICLE_DATA', 3); //Quantity $xml_content .= writeXMLopen('QUANTITY', 3); $xml_content .= writeXMLline('ORDER_QUANTITY', $i['order_quantity'], 4); $xml_content .= writeXMLclose('QUANTITY', 3); //ITEMS close $xml_content .= writeXMLclose('ITEMS', 2); } //BDATA close $xml_content .= writeXMLclose('BDATA', 1); } //END ORDER LOOPING $xml_content .= writeXMLclose('NECKERMANN_BDATA', 0); //CREATE XML ON SERVER $file = fopen(SP_NECKERMANN_TEMP_FOLDER . $xml_filename, 'w'); $success = fwrite($file, $xml_content) !== false; fclose($file); $success_upload = false; if ($success) {
function generateXMLproductsLink($product_links, $type) { $result = ''; $total_links = count($product_links); if ($total_links > 0) { $pl_sort = 0; foreach ($product_links as $plt) { $result .= writeXMLopen('P_PRODUCT_LINK', 1, 'type="' . $type . '"'); $result .= writeXMLline('P_ID', $plt['links_id'], 2); if ($total_links > 1) { $pl_sort++; $result .= writeXMLline('LINK_SORT', $pl_sort, 2); } $result .= writeXMLclose('P_PRODUCT_LINK', 1); } } return $result; }
function createXMLStarter($data) { //XML STARTER return '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<ottopartner xmlns="http://www.ottogroupb2b.com/ottopartner">' . "\n" . writeXMLline('LKZ', $data['jng_id'], 0); }
$xml_content .= writeXMLopen('ottopartner', 0); $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); $xml_content .= writeXMLline('order-status', 'return', 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->confirmOrderReturn($items_confirmed);
} $total_products++; if ($product_has_stock) { $total_products_hasStock++; } } } foreach ($articles_manual as $pid => $alist) { $xml_content = ''; foreach ($alist as $a) { $xml_content .= writeXMLopen('InventoryUpdate', 1); $xml_content .= writeXMLline('ItemNo', $pid, 2); $xml_content .= writeXMLline('Size', $a, 2); $xml_content .= writeXMLopen('Inventory', 2); $xml_content .= writeXMLline('ModificationDate', $export_date, 3); $xml_content .= writeXMLline('Count', '0', 3); $xml_content .= writeXMLclose('Inventory', 2); $xml_content .= writeXMLclose('InventoryUpdate', 1); } fwrite($file, $xml_content); } $xml_content = writeXMLclose('Inventories'); $xml_content .= writeXMLclose('ottopartner'); $success = fwrite($file, $xml_content); fclose($file); $logger->write($xml_filename); if ($success) { $backup_file = SP_OTTODE_PATH . 'cat-backup/inventories.zip'; if (is_file($backup_file)) { unlink($backup_file); }
function generateXMLarticle($article_number, $p) { global $sp_detail; global $products_stock, $hide_extreme_flag, $hide_hard_flag, $hide_nostock_flag; $actual_stock = $products_stock[$p['products_id'] . '-' . $p['articles_id']]; $stock_info = actualStockReport($sp_detail, $p['reported_stock'], $actual_stock, $p['delivery_days'], $p['is_bestselling'], $p['complexity'], $hide_extreme_flag, $hide_hard_flag, $hide_nostock_flag); $reported_stock = $p['active_status'] == '0' && $stock_info['stock_isreal'] == '0' ? '0' : $stock_info['stock']; //TODO: Remove 4 lines below to reactive bestselling in NM.DE // It is currently deactivate to wait final confirmation // on future partnership with NM.DE (sahat - 20.07.2012) //if($p['is_bestselling']=='1') { $reported_stock = '0'; $stock_info['delivery_time'] = '14'; //} //------------------------------------------------------------ $result = ''; //XML ARTICLES $result .= writeXMLopen('ARTICLEDATA', 1); $result .= writeLine(); //XML ARTICLE DETAIL $article_number_used = $article_number; if ($p['length'] != '' && $p['length'] != '0') { $plength = textLength($p['length'], false); $plength = intval($plength); if ($plength != 0) { $article_number_used .= '_' . $plength; } } if ($p['text'] != '' && $p['text_code'] != '') { $article_number_used .= '_' . $p['text_code']; } $result .= writeXMLline('A_SUP_ARTNO', $article_number_used, 2); $result .= writeXMLline('A_EAN', $p['products_ean'], 2); $valid_date = date('Y-m-d', strtotime($p['date_added'])); $result .= writeXMLline('A_VALID_DATE', $valid_date, 2); $result .= writeLine(); //XML ARTICLE STOCK //below additional stock is to handle neckermann error about hiding resourcable products when stock is 0 //if($p['reported_stock']>0) $p['reported_stock'] += 49; //thile line above should be deleted once this error is fixed $result .= writeXMLline('A_STOCK', $reported_stock, 2); $result .= writeLine(); //XML ARTICLE PRICING $result .= writeXMLopen('A_PRICE', 2); $result .= writeXMLline('PRICE_VK', $p['price'], 3); if ($p['price_old'] > 0 && $p['price_old'] > $p['price']) { $result .= writeXMLline('PRICE_VK_OLD', $p['price_old'], 3); } //$result .= writeXMLline('PRICE_TAX', '2', 3); $result .= writeXMLline('PRICE_PROVISION_TYPE', $sp_detail['provision'], 3); $result .= writeXMLclose('A_PRICE', 2); $result .= writeLine(); //XML DELIVERY //$delivery_time = ($p['delivery_days']==0) ? $sp_detail['delivery_time'] : $p['delivery_days']; $delivery_time = $stock_info['delivery_time']; if ($reported_stock == 0 || $p['reported_stock'] == 0) { $replacement = 'N'; $delivery_replacement_time = ''; } else { $replacement = 'J'; $delivery_replacement_time = $delivery_time + 2; } $result .= writeXMLopen('A_DELIVERY', 2); $result .= writeXMLline('DELIVERY_TIME', $delivery_time, 3); $result .= writeXMLline('DELIVERY_REPLACEMENT', $replacement, 3); $result .= writeXMLline('DELIVERY_REPLACEMENT_TIME', $delivery_replacement_time, 3); $result .= writeXMLclose('A_DELIVERY', 2); $result .= writeLine(); $result .= writeXMLclose('ARTICLEDATA', 1); $result .= writeLine(); return $result; }