$rack = $class_bin->retrieveRackDetail($rack_id);
 $rack_no = $class_bin->formatRackNumber($rack['no']);
 if ($_POST['me_action'] == 'UPDATESTATUS') {
     $status = tep_db_prepare_input($_POST['status']);
     if ($rack_id != '') {
         $class_bin->updateRackStatus($rack_id, $status);
     }
     $img_status = $status == '1' ? '<img src="/images/icon-tick.png" title="Active" />' : '<img src="/images/icon-tick-dis.png" title="Inactive" />';
     $result = array();
     $result['rack_id'] = $rack_id;
     $result['new_status'] = $status;
     $result['img_status'] = $img_status;
     $result['segment_id'] = $rack['segment_id'];
     ajaxReturn($result);
 } elseif ($_POST['me_action'] == 'CLEARRACK') {
     $segment = $class_bin->retrieveSegmentDetail($rack['segment_id']);
     $jng_warehouses_id = $segment['warehouses_id'];
     $rack_bins = $class_bin->retrieveBins($rack['segment_id'], $rack_id);
     foreach ($rack_bins as $bin) {
         $products_id = $bin['products_id'];
         $articles_id = $bin['articles_id'];
         if ($products_id > 0) {
             $booked = $class_pm->productsBookedCount($jng_warehouses_id, $products_id, $articles_id);
             if ($booked === 0) {
                 $class_bin->removeProductFromBox($bin['bins_id']);
                 if ($bin['products_stock'] > 0) {
                     $class_pm->stockReduce($jng_warehouses_id, $products_id, $articles_id, $bin['products_stock'], "CLEAR RACK by {$session_userinfo['username']}");
                 }
             }
         }
     }
$history_options[1] = '4 Weeks';
$history_options[2] = '1 Month';
$history_options[3] = '2 Months';
$history_options[4] = '3 Months';
$history_options[5] = '6 Months';
$history_options[6] = '1 Year';
$history_options[7] = 'Hide History';
$history_options_2 = array();
$history_options_2[0] = 'in Details';
$history_options_2[1] = 'Daily Summary';
//POST ACTION
if (isset($_POST['me_action']) && $_POST['me_action'] != '') {
    if ($_POST['me_action'] == 'CLEARBIN') {
        $bins_id = tep_db_prepare_input($_POST['bins_id']);
        $bin = $class_bin->retrieveBinDetail($bins_id);
        $segment = $class_bin->retrieveSegmentDetail($bin['bin_segments_id']);
        $jng_warehouses_id = $segment['warehouses_id'];
        $products_id = $bin['products_id'];
        $articles_id = $bin['articles_id'];
        $booked = $class_pm->productsBookedCount($jng_warehouses_id, $products_id, $articles_id);
        if ($booked > 0) {
            $messagebox->add("<strong>Clear Bin Failed</strong><br />Clear Bin is not allowed if On Stock and Booked by Real Order &gt; 0");
        } else {
            $class_bin->removeProductFromBox($bins_id);
            if ($bin['p_stock'] > 0) {
                $class_pm->stockReduce($jng_warehouses_id, $products_id, $articles_id, $bin['p_stock'], "REDUCE by {$session_userinfo['username']}");
            }
            header("Location: ?open=products-stock-detail&binid={$bin['bins_id']}" . ($hidemenuscript != '' ? '&hidemenu=true' : ''));
            exit;
        }
    } elseif ($_POST['me_action'] == 'SETBIN') {
<?php

use_class('depot_orders');
use_class('bins');
$class_do = new depot_orders();
$class_bin = new bins();
$id = tep_db_prepare_input($_GET['id']);
$package = $class_do->packageDetail($id);
if (is_null($package)) {
    $package_code = '';
    $content .= '<h3 class="red">Package Not Found</h3>';
} else {
    $package_code = $package['package_code'];
    $sent_date = is_null($package['sent_date']) ? '<span class="notice">UNSET</span>' : date('d F Y', strtotime($package['sent_date']));
    $received_date = is_null($package['received_date']) ? '<span class="notice">UNSET</span>' : date('d F Y', strtotime($package['received_date']));
    $segment = $class_bin->retrieveSegmentDetail($package['segments_id']);
    $contents = $class_do->packageGetContents($id);
    $contents_table = array();
    $ct = array();
    $ct['d'] = 'Date';
    $ct['o'] = 'Order ID';
    $ct['e'] = 'Order Source';
    $ct['a'] = 'Article No';
    $ct['a2'] = 'EAN';
    $ct['q'] = 'Quantity';
    $ct['d2'] = 'Time Added';
    $contents_table[] = $ct;
    $counter_orders = 0;
    $counter_products = 0;
    foreach ($contents as $do) {
        $counter_orders++;
use_class('depot_orders');
use_class('logger');
use_class('Product');
use_class('bins');
$logger = new logger('cron', 'depot-refill-local-xml-generator');
$class_do = new depot_orders();
$class_bins = new bins();
$today_datetime = date('Y-m-d H:i:s');
$today = date('Y-m-d', strtotime($today_datetime));
$country_name = getCountryName($server_local_code);
$logger->write("PREPARE XML DEPOT REFILL - START");
//GET TODAYS DEPOT REFILL CREATED
$q = "SELECT * FROM depot_orders" . " WHERE segments_id = {$segment_id_default} " . " AND trans_type = 'AR' AND trans_id = " . depot_orders::AUTO_REFILL_ID_DAILYCRON . " AND order_date >= '{$today} 00:00:00' AND order_date <= '{$today} 23:59:59'";
$r = tep_db_query($q);
if (tep_db_num_rows($r) > 0) {
    $segment = $class_bins->retrieveSegmentDetail($segment_id_default);
    //PREPARE FOR CREATE XML DEPOT REFILL LOCAL
    $xmlt = new xml_tools('1.0', 'UTF-8');
    //DEPOT_REFILL_LOCAL
    $depot_refill_local = $xmlt->drawTag($xmlt, 'DEPOT_REFILL_LOCAL');
    //LOCAL_INFO
    $local_info = $xmlt->drawTag($depot_refill_local, 'LOCAL_INFO');
    $xmlt->drawTag($local_info, 'SEGMENT_ID', $segment_id_default);
    $xmlt->drawTag($local_info, 'CREATED_DATE', date('Y-m-d H:i:s'));
    $group_name = "Manobo Local Orders ({$country_name})";
    $xmlt->drawTag($local_info, 'GROUP_NAME', $group_name);
    //REFILL_ORDERS
    $refill_orders = $xmlt->drawTag($depot_refill_local, 'REFILL_ORDERS');
    $counter = 0;
    while ($row = tep_db_fetch_array($r)) {
        $products_id = $row['products_id'];
require_once '../confy.php';
require_once '../functions.php';
require_once '../functions-2.php';
tep_db_connect();
use_class('bins');
use_class('products_minierp');
$class_bins = new bins();
$class_pm = new products_minierp();
$segment_id = isset($_GET['segments_id']) && $_GET['segments_id'] != '' ? tep_db_prepare_input($_GET['segments_id']) : '';
$rack_id = isset($_GET['rack_id']) && $_GET['rack_id'] != '' ? tep_db_prepare_input($_GET['rack_id']) : '';
if ($rack_id != '') {
    $rack = $class_bins->retrieveRackDetail($rack_id);
    $rack_no = $class_bins->formatRackNumber($rack['no']);
    $segment_id = $rack['segment_id'];
}
$segment = $class_bins->retrieveSegmentDetail($segment_id);
if (!isset($segment['name'])) {
    echo 'UNKNOWN SEGMENT!';
    exit;
} else {
    $whid = $segment['warehouses_id'];
}
$q = "SELECT ps.products_id, ps.articles_id, ps.stock, ps.booking_active";
$q .= ", IFNULL(pa.products_ean, p.products_ean) AS products_ean, IFNULL(pa.length,  pnc.products_length) AS length, pa.text";
$q .= ", p.products_image, p.material_expenses, b.code AS bin_code";
$q .= ", cd.categories_name";
//$q .= ", SUM(op.products_quantity) AS booked_jng, SUM(joi.order_quantity) AS booked_sp";
$q .= " FROM products_stock ps";
$q .= " LEFT JOIN bins b ON b.products_stock_id=ps.products_stock_id";
$q .= " LEFT JOIN products p ON p.products_id=ps.products_id";
$q .= " LEFT JOIN products_to_categories ptc ON ptc.products_id=p.products_id";
             } elseif ($item['status'] == $new_status) {
                 $result .= printPackageTip('P', '', '', $sp_name, $sp_class);
             } else {
                 //If product is already in package / sent
                 $errinfo = sprintf($template_error_status, $item_status[$item['status']]);
                 $result .= printPackageTip('E', $box_date, $errinfo, $sp_name, $sp_class);
             }
         }
     }
 } else {
     //FOR DEPOT PROCESS
     $sp_name = 'Depot';
     $sp_class = 'orange';
     $info = '';
     $item = $class_do->retrieveDetail($id);
     $segment = $class_bins->retrieveSegmentDetail($item['segments_id']);
     if (count($item) == 0) {
         //If no product found
         $errinfo = $template_error_not_found;
         $result .= printPackageTip('E', $box_date, $errinfo, $sp_name, $sp_class);
     } else {
         //If product is found
         $is_outsourced = $class_do->isOutsourceOrder($item['trans_type'], $item['trans_id']);
         if (strtoupper($ean_scan) != 'SKIP' && $ean_scan != $item['products_ean']) {
             $result .= printPackageTip(EAN_MISMATCH_ERROR, $item['products_ean'], $ean_scan);
         } else {
             if ($item['status'] < intval($old_status)) {
                 //If product status is not yet finish
                 $errinfo = $template_error_not_finish;
                 $result .= printPackageTip('E', $box_date, $errinfo, $sp_name, $sp_class);
             } elseif ($item['status'] == $old_status || $item['status'] == $new_status || $is_transferred_from_real_order) {
function processReturn($bin_type, $sp_type, $order_product_id, $updater, $reason = '0', $return_date = '')
{
    global $class_jo, $class_o;
    use_class('payone');
    use_class('products_minierp');
    use_class('products_ean');
    use_class("bins");
    use_class("sendback");
    $class_payone = new payone();
    $class_pm = new products_minierp();
    $class_pean = new products_ean();
    $class_bins = new bins();
    $class_sendback = new sendback();
    $return_allowed_status = array('9', '11', '16', '20');
    $is_best_product = '';
    $product_barcode = '';
    $returnable = 0;
    $status = $bin_type == 'bin_bali' ? 'MCSHOWBINBALI' : 'MCSHOWBININ';
    if ($bin_type == 'missing_product') {
        $status = 'MCSHOWMISSINGPRODUCT';
    }
    $return_created = false;
    if (strtolower($sp_type) == 's') {
        //if($reason=='') {
        //    $order_product_id = $items_id;
        //    $status = 'MCSCANREASON';
        //    $reasons = $class_jo->returnReasonList();
        //    $reasons_list = array();
        //    foreach($reasons as $reason_id=>$val){
        //        $reasons_list[] = $reason_id."-".$val;
        //    }
        //    $result['reasons'] = $reasons_list;
        //}else{
        $item = $class_jo->retrieveItemDetail($order_product_id);
        $order_id = $item['jng_sp_orders_id'];
        $products_id = $item['products_id'];
        $products_articles_id = $item['products_articles_id'];
        $returnable = $item['order_quantity'];
        $return_data = $class_jo->retrieveReturnItem($order_product_id);
        //echo "<pre>";var_dump($return_data);
        if (!is_null($return_data)) {
            foreach ($return_data as $rd) {
                $returnable -= $rd['return_quantity'];
            }
        }
        if ($returnable > 0) {
            $product_barcode = "SP-{$order_product_id}";
            //CREATE RETURN
            if ($return_date == '') {
                $return_date = date('Y-m-d H:i:s');
            }
            $return_qty = 1;
            $comment_customer = 'Returned via MC';
            $comment_jng = '';
            $shipping_paid = tep_db_prepare_input($_POST['shipping_paid']);
            $return_id = $class_jo->returnItem($order_product_id, $return_date, $return_qty, $reason, $comment_customer, $comment_jng, $shipping_paid);
            //CREATE PAYONE RETURN
            //$return_id = '123';
            if ($return_id != '') {
                $return_created = true;
                $class_payone->createReturnContainerSP($return_id, $return_qty, $order_product_id);
                $new_status = putToBin($order_product_id, $sp_type, $bin_type, $updater);
                //PREPARE SENDBACK DATA ONLY FOR status = '16'
                if ($new_status == '16') {
                    $sendback = array();
                    //-------TODO: WE MUST CHANGE THIS HARDCODE segment_id VALUE TO DYNAMIC REQUESTED FROM MC-----
                    $segment_id = 1;
                    $sendback['bin_segments_id'] = $segment_id;
                    $bin_segment = $class_bins->retrieveSegmentDetail($segment_id);
                    //---------------------------------------------------------------------------------
                    $sendback['type'] = 'R';
                    $sendback['products_id'] = $products_id;
                    $sendback['products_articles_id'] = $products_articles_id;
                    $sendback['products_ean'] = $class_pean->getEAN($products_id, $products_articles_id);
                    $sendback['quantity_stock'] = $return_qty;
                    $sendback['quantity_actual'] = 0;
                    $class_sendback->create($sendback);
                }
                $items_q = tep_db_query("SELECT SUM(order_quantity) AS total FROM jng_sp_orders_items WHERE jng_sp_orders_id={$order_id} AND status NOT IN (10, 12)");
                $items = tep_db_fetch_array($items_q);
                $items_total = $items['total'];
                $returns_total = getTotalReturnOrderSP($order_id);
                $returnable = $items_total - $returns_total;
            }
        }
        //} //BLOCK reason status
    } elseif (strtolower($sp_type) == 'j') {
        $item = $class_o->retrieveProductDetail($order_product_id);
        $order_id = $item['orders_id'];
        $products_id = $item['products_id'];
        $products_articles_id = $item['products_articles_id'];
        $existing_return = $class_o->productReturnTotalQty($order_product_id);
        if ($existing_return < $item['products_quantity']) {
            $product_barcode = "JG-{$order_product_id}";
            //CREATE RETURN
            $return_date = date('Y-m-d H:i:s');
            $return_qty = 1;
            $return_type = 'C';
            $return_status = '0';
            $return_comment = 'Returned via MC';
            $product_received = 1;
            $return_id = $class_o->addReturnProduct($order_product_id, $return_date, $return_qty, $return_type, $return_status, $return_comment, $product_received, $reason);
            //CREATE PAYONE RETURN
            //$return_id = '123';
            if ($return_id != '') {
                $return_created = true;
                $class_payone->createReturnContainer($return_id, $return_qty, $order_product_id);
                $new_status = putToBin($order_product_id, $sp_type, $bin_type, $updater);
                //PREPARE SENDBACK DATA ONLY FOR status = '16'
                if ($new_status == '16') {
                    $sendback = array();
                    //-------TODO: WE MUST CHANGE THIS HARDCODE segment_id VALUE TO DYNAMIC REQUESTED FROM MC-----
                    $segment_id = 1;
                    $sendback['bin_segments_id'] = $segment_id;
                    $bin_segment = $class_bins->retrieveSegmentDetail($segment_id);
                    //---------------------------------------------------------------------------------
                    $sendback['type'] = 'R';
                    $sendback['products_id'] = $products_id;
                    $sendback['products_articles_id'] = $products_articles_id;
                    $sendback['products_ean'] = $class_pean->getEAN($products_id, $products_articles_id);
                    $sendback['quantity_stock'] = $return_qty;
                    $sendback['quantity_actual'] = 0;
                    $class_sendback->create($sendback);
                }
                $items_q = tep_db_query("SELECT SUM(products_quantity) AS total FROM orders_products WHERE orders_id={$order_id}  AND status NOT IN (10, 12)");
                $items = tep_db_fetch_array($items_q);
                $items_total = $items['total'];
                $returns_total = getTotalReturnOrderJG($order_id);
                $returnable = $items_total - $returns_total;
            }
        }
    }
    $result['product_barcode'] = $product_barcode;
    $result['order_product_id'] = $order_product_id;
    $result['returnable'] = $returnable;
    $result['status'] = $return_created ? $status : 'CREATERETURNFAIL';
    return $result;
}
 function packageCreate($segments_id, $package_code = '')
 {
     use_class('bins');
     $class_bins = new bins();
     $segment = $class_bins->retrieveSegmentDetail($segments_id);
     if ($package_code == '') {
         $package_code = 'DP.' . $segment['code'] . '-' . date('ymd');
     }
     $package_code_notfree = true;
     while ($package_code_notfree) {
         $c = tep_db_query("SELECT depot_packages_id FROM depot_packages WHERE depot_packages_id='{$package_code}'");
         if (tep_db_num_rows($c) > 0) {
             if (!isset($counter)) {
                 $counter = 2;
                 $package_code_raw = $package_code;
             } else {
                 $counter++;
             }
             $package_code = $package_code_raw . '-' . $counter;
         } else {
             $package_code_notfree = false;
         }
     }
     $sda = array();
     $sda['package_code'] = $package_code;
     $sda['segments_id'] = $segments_id;
     tep_db_perform('depot_packages', $sda);
     $new_id = tep_db_insert_id();
     return $new_id;
 }
                        $rack['no'] = $class_bin->getNextRackNo($segment_id);
                        $rack['status'] = '1';
                        $class_bin->createRack($rack);
                    }
                }
                $class_bin->updateSegment($segment_id, $segment_data);
                $segment_update = true;
            }
        }
    }
}
if ($segment_id == 'new') {
    $action = 'SAVE';
    $attr_buttons .= '<input type="submit" class="blue" name="submit" value="Add Segment" />';
} else {
    $segment_data = $class_bin->retrieveSegmentDetail($segment_id);
    $action = 'UPDATE';
    $attr_buttons .= '<input type="submit" class="blue" name="submit" value="Update Segment" />';
}
$fromtorows = $segment_data['rows'] != '' ? '' : 'A, B';
for ($c = 1; $c <= $segment_data['rows']; $c++) {
    $fromtorows .= $class_bin->numtochar[$c];
    if ($c < $segment_data['rows']) {
        $fromtorows .= ", ";
    }
}
$fromtoppb = '';
//$fromtoppb = ($segment_data['pieces_per_box']<>'') ? '' : 'X';
//for($c=1;$c<=$segment_data['pieces_per_box'];$c++){
//    $fromtoppb .= $class_bin->numtochar[$c+$class_bin->ppb_starts_from];
//    if($c<$segment_data['pieces_per_box']) $fromtoppb .= ", ";