$package_id = tep_db_prepare_input($_GET['id']); $package = $class_jp->retrieveDetail($package_id); $package_id = $package['jng_sp_packages_id']; $sent_date = $package['sent_date'] == '' ? ' ' : date('d F Y', strtotime($package['sent_date'])); $received_date = $package['received_date'] == '' ? ' ' : date('d F Y', strtotime($package['received_date'])); $content .= '<div id="sp-package">'; $content .= '<ul>'; $content .= '<li><a href="#pack-tab1"><span>Package Data</span></a></li>'; $content .= '<li><a href="#pack-tab2"><span>Package Contents</span></a></li>'; $content .= '</ul>'; $content .= '<div id="pack-tab1">'; $content .= '<div>'; $content .= '<table border="0" cellpadding="0" cellspacing="0">'; $content .= '<tr><td width="150">Package ID</td><td>' . $package_id . '</td></tr>'; $content .= '<tr><td>Package Code</td><td><strong>' . $package['package_code'] . '</strong></td></tr>'; $awb_code = $class_jp->awbCodeLink($package['awb_no']); $content .= '<tr><td>AWB No</td><td>' . $awb_code . '</td></tr>'; $content .= '<tr><td>Sent Date</td><td>' . $sent_date . '</td></tr>'; $content .= '<tr><td>Received Date</td><td>' . $received_date . '</td></tr>'; $content .= '</table>'; $content .= '</div>'; $content .= '<div style="margin-top:20px;">'; $printtext = $sent_date == ' ' ? 'Print' : 'Reprint'; $content .= '<input type="button" class="blue" name="rp-labels" value="' . $printtext . ' Labels" onclick="window.open(\'print/package-labels.php?id=' . $package_id . '\');" />'; $content .= '<input type="button" class="blue" name="rp-checklist" value="' . $printtext . ' Checklist" onclick="window.open(\'print/package-checklist.php?id=' . $package_id . '\');" />'; $printtext = $received_date == ' ' ? 'Print' : 'Reprint'; $content .= '<input type="button" class="blue" name="rp-picklist" value="' . $printtext . ' Picklist" onclick="window.open(\'print/package-picklist.php?id=' . $package_id . '\');" />'; $content .= '</div>'; $content .= '<div style="margin-top:20px;">'; $content .= '<input type="button" name="back" value="Back to Package List" onclick="location.href=\'?open=sp-packages\';" />'; $content .= '</div>';
/** * Retrieve order items data on Package * @global array $SP_DOESNT_NEED_EASYLOG * @param int $jng_sp_id * @param int $status * @param string $ean_list * @param string $date_start * @param string $date_end * @param int $brand_id * @param int $cat_id * @param string $orders_no * @return array of order items */ function manageOrderPackageList($jng_sp_id, $status, $ean_list = null, $date_start = null, $date_end = null, $brand_id = null, $cat_id = null, $orders_no = '') { use_class('jng_sp'); $class_sp = new jng_sp(); $SP_DOESNT_NEED_EASYLOG = array_keys($class_sp->retrieveList('use_easylog=0')); $query = "SELECT CONCAT(jo.customer_billing_firstname,' ',jo.customer_billing_lastname) AS customer_name"; $query .= ", jo.order_id, jo.order_date, jo.customers_order_count, joi.*, p.products_image, p.products_brand_id, joih.status_date"; $query .= ", jp.jng_sp_id, jp.jng_sp_packages_id, jp.package_code, jp.awb_no, jcust.jng_sp_customers_id, jscs.list_type"; $query .= ", IFNULL(joi.leadtime_start_date, jo.order_date) AS date_for_sorting"; $query .= " FROM jng_sp_orders jo"; $query .= " LEFT JOIN jng_sp_customers jcust ON jcust.jng_sp_id=jo.jng_sp_id AND jcust.customer_id=jo.customer_billing_id"; $query .= " LEFT JOIN jng_sp_customers_special jscs ON jscs.jng_sp_customers_id=jcust.jng_sp_customers_id"; $query .= " LEFT JOIN jng_sp_orders_items joi ON joi.jng_sp_orders_id=jo.jng_sp_orders_id"; $query .= " LEFT JOIN jng_sp_orders_items_status_history joih ON joih.jng_sp_orders_items_id=joi.jng_sp_orders_items_id AND joih.status=joi.status"; $query .= " INNER JOIN jng_sp_packages_items jpi ON jpi.jng_sp_orders_items_id=joi.jng_sp_orders_items_id"; $query .= " LEFT JOIN products p ON p.products_id=joi.products_id"; $query .= " LEFT JOIN jng_sp_packages jp ON jp.jng_sp_packages_id=jpi.jng_sp_packages_id"; $query .= " LEFT JOIN products_to_categories ptc ON ptc.categories_id=joi.products_id"; $query .= " WHERE joi.status='{$status}'"; if ($jng_sp_id != '0') { $query .= " AND jo.jng_sp_id={$jng_sp_id}"; } $query .= $this->eanListFilterQuery($ean_list, 'AND', ''); $query .= $this->leadtimeFilterQuery($status, $date_start, $date_end, 'AND', ''); if ($brand_id > 0) { $query .= " AND p.products_brand_id='{$brand_id}' "; } if ($cat_id > 0) { $query .= " AND ptc.categories_id='{$cat_id}' "; } if ($orders_no != '') { $query .= " AND jo.order_id IN ('" . (is_array($orders_no) ? implode("','", $orders_no) : $orders_no) . "') "; } $query .= " ORDER BY IFNULL(jp.sent_date, NOW()) "; $query .= $status < 14 ? 'ASC' : 'DESC'; $query .= ", date_for_sorting ASC, jo.jng_sp_orders_id ASC, joi.order_item_count ASC"; $result = tep_db_query($query); $orders = array(); $package_code = array(); $package_awb = array(); $package_sp_id = array(); $all_package_receivable = true; $filters = $this->manageOrderList_drawFilter($jng_sp_id, $ean_list, $date_start, $date_end, $brand_id, $cat_id, $orders_no); if (tep_db_num_rows($result) > 0) { $header = array(); $header['d'] = ($status < 6 or $status > 7) ? 'Date' : 'Lead Time'; //$header['d2'] = '<abbr title="Reported Shipping Date">RSD</abbr>'; if (!($status < 6 || $status > 7)) { $header['d3'] = 'Cycle Time'; $header['d2'] = 'Started Date'; } $header['c'] = 'Customer / Order No'; $header['o'] = 'Order ID'; $header['a'] = 'Article No'; $header['p'] = 'Price'; $header['q'] = 'Qty'; $header['t'] = 'Action'; $orders_items = array(); $items_listed = array(); while ($row = tep_db_fetch_array($result)) { if (!in_array($row['jng_sp_orders_items_id'], $items_listed)) { $obj_product = new Product($row['products_id']); $orders_items[$row['jng_sp_orders_items_id']] = $row; $items_listed[] = $row['jng_sp_orders_items_id']; $package_id = $row['jng_sp_packages_id']; if (!isset($orders[$package_id])) { $orders[$package_id] = array(); $package_code[$package_id] = $row['package_code']; $package_awb[$package_id] = $row['awb_no']; if ($row['awb_no'] == '') { $all_package_receivable = false; } } $order_date = strtotime($row['order_date']); $o = array(); /* $date_used = strtotime($row['prod_target_in']); if (($status < 6) OR ($status > 7)) { $value_date = date('d-M-y', $order_date); } else { $value_date = displayLeadTime($row['prod_target_in'], $date_used); } $o['d'] = $value_date; */ $o['d'] = displayLeadTime($row['leadtime_start_date'], strtotime($row['leadtime_start_date'])); //$o['d'] = '<div title="'.date('H:i:s', $order_date).'">'.date('d-M-y', $order_date).'</div>'; //$o['d2'] = $this->reportedShippingDate($order_date, $status, $row['delivery_time'], $row['delivery_replacement_time']); if (!($status < 6 or $status > 7)) { $o['d3'] = displayCycleTime($row['status_date']); //$o['d2'] = date('d-M-y', $date_used); $o['d2'] = date('d-M-y', strtotime($row['leadtime_start_date'])); } $cust = '<a href="?open=sp-customer&id=' . $row['jng_sp_customers_id'] . '&hidemenu=true" class="view_webpage" >' . $row['customer_name'] . '</a>'; if ($row['list_type'] != '') { $crown_img_col = array('V' => 'vip', 'B' => 'black'); $crown_img_title = array('V' => 'VIP Customer', 'B' => 'Blacklist Customer'); $crown_img = '<a href="?open=sp-customers-special-detail&id=' . $row['jng_sp_customers_id'] . '&hidemenu=true" class="view_webpage">'; $crown_img .= '<img src="images/list-' . $crown_img_col[$row['list_type']] . '.gif" title="' . $crown_img_title[$row['list_type']] . '" />'; $crown_img .= '</a> '; $cust = $crown_img . $cust; } $cust .= ' <sup>' . $row['customers_order_count'] . '</sup>'; $link_item = '<a href="?open=sp-order-history&oi_id=' . $row['jng_sp_orders_items_id'] . '&hidemenu=true" class="view_webpage">SP-' . $row['jng_sp_orders_items_id'] . '</a>'; $order_id_info = $link_item; $order_no = $row['order_id']; if ($order_no == '') { $order_no = 'J&G ID: ' . $row['jng_sp_orders_id']; } $order_no = '<a href="?open=customer-care-order-detail&source=SP&id=' . $row['jng_sp_orders_id'] . '&hidemenu=true" class="view_webpage">' . $order_no . '</a>'; if ($row['order_item_total'] > 1) { $order_id_info .= ' <sup>' . $row['order_item_count'] . '/' . $row['order_item_total'] . '</sup>'; } $o['c'] = $cust . '<br /><small>order no:</small> ' . $order_no; $o['o'] = $order_id_info; $article = $row['article_number']; $pimg = webImageSource($row['products_image'], '500'); $article = '<div><a href="?open=product-detail&products_id=' . $row['products_id'] . '" target="_blank" title="View Product Detail">' . $article . '</a></div>'; if ($pimg != '') { $thumb = '<div class="thumb"><a href="' . $pimg . '" class="view_image" title="Click to view larger image">' . webImage($row['products_image'], '80', '80', '', 'img-border img-padding') . '</a></div>'; $article = $thumb . $article; } //$diamond_icon = ($obj_product->brand_id == 14) ? drawDiamondIcon('Diamond Product', ' ') : ''; $diamond_icon = $obj_product->isUsingDiamond() ? drawDiamondIcon('Diamond Product', ' ') : ''; $gold_icon = drawGoldIcon($obj_product->metal_stamp_code, $obj_product->metal_stamp_info, '', ' '); $icons = $gold_icon . $diamond_icon; $o['a'] = drawTableArticleInfoWithIcons($article, $icons); $o['p'] = $row['price']; $o['q'] = intval($row['order_quantity']); $action = ''; if ($row['status'] == '6') { $action .= '<input type="button" class="actbtn" name="5" value="Remove" title="Remove from package" />'; } if ($row['status'] == '7' || $row['status'] == '8') { $action .= '<input type="button" class="actbtn" name="10" value="DOA" title="Received DOA, cancel this product" />'; } if ($row['status'] == '16') { $action .= '<input type="button" class="actbtn" name="15" value="Keep" title="Remove from package and Set to Keep" />'; } if ($row['status'] == '18') { $action .= '<input type="button" class="actbtn" name="20" value="Stock" title="Add product to Stock" />'; $action .= '<input type="button" class="actbtn" name="21" value="Disass" title="Disassemble and add elements to Stock" />'; } if ($row['status'] == '17' || $row['status'] == '18') { $action .= '<input type="button" class="actbtn" name="19" value="Lost" title="Product is lost" />'; } //Default Row Action Value (id, status, stock status) $action .= '<input type="hidden" id="oiid-' . $row['jng_sp_orders_items_id'] . '" name="oi_id" value="' . $row['jng_sp_orders_items_id'] . '" >'; $action .= '<input type="hidden" name="oi_status" value="' . $row['status'] . '" >'; $o['t'] = $action; $orders[$package_id][$row['jng_sp_orders_items_id']] = $o; if (!isset($package_sp_id[$package_id])) { $package_sp_id[$package_id] = $row['jng_sp_id']; } } } $result = '<div id="packages">'; /* if($status=='7' && count($orders)>1 && $all_package_receivable) $result .= '<div style="margin-bottom:20px;"><input type="button" class="pkgbtn button" name="receiveallpackage" value="Receive All Packages" title="Receive all packages listed in HH" /></div>'; if($status=='8') { //$result .= ; if($this->easylogImportDataExist()) { $import_stats = ''; $import_class = ' red '; $import_value = 'Import file found. Click here to set status to Sent.'; $import_title = 'Import shipping data exported from EASYLOG'; } else { $import_class = ' '; $import_stats = 'disabled="disabled"'; $import_value = 'There is no import file to proccess'; $import_title = $import_value; } $result .= '<div style="margin-bottom:20px;">'; $result .= '<input type="button" class="pkgbtn'.$import_class.'button" name="importeasylog" value="'.$import_value.'" title="'.$import_title.'" '.$import_stats.' />'; $result .= '</div>'; } */ foreach ($orders as $pid => $package) { $result .= '<div id="package-' . $pid . '" style="margin-bottom:20px;">'; $button = ''; if ($status == '6') { //$button .= ' <input type="button" class="pkgbtn" name="printpackagelabel" value="Print Labels" title="Print Labels for products in this package" />'; $button .= ' <input type="button" class="pkgbtn" name="printpackagechecklist" value="Print Checklist" title="Print Package Checklist" />'; $button .= ' <input type="button" class="pkgbtn" name="sendpackage" value="Send" title="Send this Package to HH" />'; } if ($status == '7' || $status == '8' || $status == '17' || $status == '18') { use_class('jng_sp_packages'); if ($status < 14) { $class_jp = new jng_sp_packages(); $awb_code = $class_jp->awbCodeLink($package_awb[$pid]); } else { $awb_code = $package_awb[$pid]; } if ($awb_code == '') { $awb = $awb_code; $awb_button_tips = 'Add AWB no to this Package'; } else { $awb = '(AWB: ' . $awb_code . ')'; $awb_button_tips = 'Change AWB'; } $button .= ' <span id="awb-' . $pid . '" style="font-weight:normal;">' . $awb . '</span>'; $button .= ' <input type="button" class="pkgbtn" name="updateawb" value="AWB" title="' . $awb_button_tips . '" />'; //$button .= ' <input type="button" class="pkgbtn" name="printpackagepicklist" value="Print Picklist" title="Print Package Picklist" />'; } //if($status=='7') $button .= ' <input type="button" class="pkgbtn" name="receivepackage" value="Receive" title="Receive this Package in HH" />'; if ($status == '7') { //if($status=='8') { if (in_array($package_sp_id[$pid], $SP_DOESNT_NEED_EASYLOG)) { //for SP that use manual button instead of Easylog $button .= ' <input type="button" class="pkgbtn" name="printdeliverydocsingle" value="Invoice / Delivery Document" title="Print Invoice / Delivery Documents of this package" />'; $button .= ' <input type="button" class="pkgbtn" name="setsent2cust" value="Set as Sent to Customer" title="Set all orders in this package as Sent to Customer" disabled="disabled" />'; } } if ($status == '16') { $button .= ' <input type="button" class="pkgbtn" name="printpackagechecklist" value="Print Checklist" title="Print Package Checklist" />'; $button .= ' <input type="button" class="pkgbtn" name="printpackagefakeinvoice" value="Print Invoice" title="Print Fake Invoice for Bali Customs" />'; $button .= ' <input type="button" class="pkgbtn" name="sendpackage" value="Send" title="Send this Package to Bali" />'; } if ($status == '17') { $button .= ' <input type="button" class="pkgbtn" name="receivepackage" value="Receive" title="Receive this Package in Bali" />'; } $result .= '<h3>Package ' . $package_code[$pid] . ' ' . $button . ' <input type="hidden" name="package_id" value="' . $pid . '" /></h3>'; //$result .= tep_draw_table('spo', $package); //DRAW MANUALLY $result .= '<div class="draw-table"><table class="spo" border="0" cellpadding="0" cellspacing="0">'; $result .= '<tr>'; foreach ($header as $c => $h) { $result .= '<th class="' . $c . '">' . $h . '</th>'; } $result .= '</tr>'; $prev_oid = null; $order_counter = 0; $rowclass = 'e'; foreach ($package as $oiid => $order) { $order_counter++; $oi = $orders_items[$oiid]; $oid = $oi['jng_sp_orders_id']; if ($oid != $prev_oid) { $item_counter = 0; } $item_counter++; if ($item_counter == 1) { $rowclass = $rowclass == 'e' ? 'o' : 'e'; } $result .= '<tr class="' . $rowclass . '">'; $hidecol = 5; $use_hide = $item_counter > 1; //$use_hide = ($status=='3' && $item_counter>1); // Logic for lead time /* $date_used = strtotime($oi['prod_target_in']); if (($oi['status'] < 2) OR ($oi['status'] > 7)) { $value_date = ""; } else { $value_date = displayLeadTime($oi['prod_target_in'], $date_used); } if (!(($oi['status'] < 2) OR ($oi['status'] > 7))) { $started_date = date('d-M-y', $date_used); } */ $started_date = date('d-M-y', strtotime($oi['leadtime_start_date'])); $value_date = displayLeadTime($oi['leadtime_start_date'], strtotime($oi['leadtime_start_date'])); if ($use_hide) { $result .= '<td class="d">' . $value_date . '</td>'; if (!($status < 6 || $status > 7)) { $result .= '<td class="d3">' . displayCycleTime($oi['status_date']) . '</td>'; $result .= '<td class="d2">' . $started_date . '</td>'; } $result .= '<td> </td>'; } $col_counter = 0; foreach ($order as $c => $o) { $col_counter++; if ($use_hide) { /* if($col_counter==$hidecol) { $o_pos = strpos($o, '<sup'); $o = ($o_pos===false) ? '' : substr($o, $o_pos); } */ if ($col_counter >= $hidecol) { $result .= '<td class="' . $c . '">' . $o . '</td>'; } } else { $result .= '<td class="' . $c . '">' . $o . '</td>'; } } $result .= '</tr>'; $prev_oid = $oid; } $result .= '</table></div>'; $result .= '</div>'; //close package-pid } $result .= '</div>'; //close packages } else { $result = '<h3>No Orders in this status </h3>'; } $result = $filters . $result; return $result; }