$content .= '<input type="submit" value="Go" />';
$content .= '<input id="search-form-cancel" type="button" value="Cancel" style="display:none;" />';
$content .= '</form>';
$content .= '</div>';
//#search-form
if (isset($_GET['psid'])) {
    $psid = tep_db_prepare_input($_GET['psid']);
    $stock = $class_pm->stockRetrieveDetailByPSID($psid);
    $pid = $stock['products_id'];
    $aid = $stock['articles_id'];
    if ($stock['jng_warehouses_id'] != $fg_whid) {
        $ps = $class_pm->stockRetrieveDetail($fg_whid, $pid, $aid);
        openStockDetail($ps['products_stock_id']);
    }
    $bin = $class_bin->getBinProductStock($psid);
    $bookmanual = stock_booking::getBookedQuantity($psid);
    $stock_database = $stock['stock'];
    $stock_on_and_bookedbyrealorder = $class_pm->productsBookedCount($fg_whid, $pid, $aid);
    $stock_on_and_bookedmanually = $bookmanual > $stock_database ? $stock_database : $bookmanual;
    $stock_available = $stock_database - $stock_on_and_bookedmanually;
    $stock_on_total = $stock_database + $stock_on_and_bookedbyrealorder;
    $stock_off_and_bookedmanually = $bookmanual > $stock_database ? $bookmanual - $stock_database : 0;
    $content .= '<div id="stock-detail">';
    $content .= '<div style="float:left;width:350px;">';
    $content .= '<div>' . drawProductInfo($pid, $aid) . '</div>';
    $content .= '<div style="clear:both;padding-top:30px;">' . drawBinAction($bin) . '</div>';
    $content .= '<div style="margin-top:30px;">';
    $content .= '<h2>Stock Information</h2>';
    $content .= '<table border="0" cellpadding="0" cellspacing="0">';
    $content .= '<tr class="notice"><td style="width:250px;">On Stock in Database<br />(Available + Booked Manually)</td><td class="tar" style="width:50px;">' . $stock_database . '</td></tr>';
    $content .= '<tr><td colspan="2"><hr /></td></tr>';
Example #2
0
/**
 * Refresh Stock Booking for unpaid prepayment orders of selected SP
 * @return Array
 */
function zadeRefreshPrepaymentBooking()
{
    use_class('stock_booking');
    use_class('products_minierp');
    $booking = new stock_booking(ZALANDO_PREPAYMENT_BOOKING_ID);
    $class_pm = new products_minierp();
    //CLEAR BOOKING ITEMS
    $booking->removeItem('*');
    $spid_list = '8, 10';
    //GET ZADE PREPAYMENT ORDERS THAT STILL NOT YET PAID
    $q = "SELECT joi.products_id, joi.products_articles_id, joi.order_quantity" . " FROM jng_sp_orders jo" . " INNER JOIN jng_sp_orders_items joi" . " ON joi.jng_sp_orders_id = jo.jng_sp_orders_id AND joi.status = 1" . " WHERE jo.jng_sp_id IN ({$spid_list})" . " AND jo.payment_method = '" . PAYMENT_METHOD_PREPAYMENT . "'" . " AND jo.payment_status = 0";
    $dbq = tep_db_query($q);
    $items_added = array();
    while ($r = tep_db_fetch_array($dbq)) {
        $pid = $r['products_id'];
        $aid = $r['products_articles_id'];
        $quantity = $r['order_quantity'];
        $ps = $class_pm->stockRetrieveDetail(WAREHOUSE_ID_PRODUCTS_HAMBURG, $pid, $aid);
        $products_stock_id = $ps['products_stock_id'];
        if ($products_stock_id > 0) {
            $booking->addItem($products_stock_id, $quantity);
            $items_added[$products_stock_id] = $quantity;
        } else {
            //WHAT SHOULD WE DO WHEN ARTICLES NOT EXIST ON DEPOT :
            // - CREATE MDO ?
            // - SEND EMAIL TO KEY ACCOUNT ?
        }
    }
    return $items_added;
}
<?php

/**
 * This module is used to display all current active booking
 *
 * @author IT TEAM BONOFACTUM
 * @created Jun 18, 2013 3:45:28 PM
 */
use_class('stock_booking');
use_class('products_minierp');
use_class('products_articles');
$class_pm = new products_minierp();
$class_pa = new products_articles();
$articles_booked = stock_booking::getBookedQuantityAll(WAREHOUSE_ID_PRODUCTS_HAMBURG);
$articles_stock = $class_pm->stockRetrieveDetailAll(WAREHOUSE_ID_PRODUCTS_HAMBURG, 'booking_active>0');
$ttl_products = 0;
$ttl_articles = 0;
$ttl_qty_booked = 0;
$ttl_cache_error = 0;
$articles_result = array();
foreach ($articles_booked as $id => $book_qty) {
    $id_temp = explode('-', $id);
    $pid = $id_temp[0];
    $aid = $id_temp[1];
    if (!isset($articles_result[$pid])) {
        $articles_result[$pid] = array();
        $ttl_products++;
    }
    if (!isset($articles_result[$pid][$aid])) {
        $articles_result[$pid][$aid] = array();
        $ttl_articles++;
             echo "\n";
             $first = false;
         }
         echo implode("\t", $oi);
         echo "\n";
     }
 }
 echo '</pre>';
 exit;
 */
 $whid_depot = WAREHOUSE_ID_FOR_HANDLING_ORDERS;
 $whid_prod = WAREHOUSE_ID_PRODUCTS_BALI;
 $whid_elements = WAREHOUSE_ID_ELEMENTS;
 //LOAD PRODUCTS STOCK FROM DEPOT FROM DEFAULT WAREHOUSE
 $products_stock = $class_pm->stockRetrieveAll($whid_depot);
 $products_stock_booked = stock_booking::getBookedQuantityAll($whid_depot);
 //$products_stock_booked_instock:
 //this variable contains total products actually in stock (including the booked ones)
 //it is used for special orders allowed to override the booking status
 $products_stock_booked_instock = array();
 //Remove booked quantity from stock
 foreach ($products_stock as $k => $v) {
     if (isset($products_stock_booked[$k])) {
         $products_stock_booked_instock[$k] = $products_stock[$k];
         $products_stock[$k] = $products_stock_booked[$k] >= $products_stock[$k] ? 0 : $products_stock[$k] - $products_stock_booked[$k];
     }
 }
 //WE STOP CHECKING FOR BALI STOCK UNTIL FURTHER DISCUSSION
 //WE ARE NOW USING IT FOR KEEPING STOCK FOR LAZADA
 //16.10.2014 updated by Sahat
 //$products_stock_bali = $class_pm->stockRetrieveAll($whid_prod);
use_class('products_articles');
$class_pm = new products_minierp();
$class_pa = new products_articles();
$hn_product = 'Product';
$hn_article = 'Articles';
$hn_custock = 'Current<br />Stock';
$hn_cbooked = 'Total Booked<br />in Active Orders';
$hn_cbohere = 'Booked in<br />This Order';
$product_table_header = array();
$product_table_header['0 long_id'] = $hn_product;
$product_table_header['1 source'] = $hn_article;
$product_table_header['2 source'] = $hn_custock;
$product_table_header['3 source'] = $hn_cbooked;
$product_table_header['4 source'] = $hn_cbohere;
$id = tep_db_prepare_input($_GET['id']);
$booking = new stock_booking($id);
if (isset($_POST['me_action'])) {
    if ($_POST['me_action'] == 'UPDATENAME') {
        $new_name = tep_db_prepare_input($_POST['name']);
        $booking->update(null, $new_name);
        echo utf8_encode($booking->name);
        exit;
    } elseif ($_POST['me_action'] == 'UPDATESTATUS') {
        $old_status = $booking->status;
        $new_status = tep_db_prepare_input($_POST['status']);
        $booking->updateStatus($old_status, $new_status, $session_userinfo['username']);
        echo utf8_encode($booking->status);
        exit;
    }
}
$content .= '<div style="width:710px;">';
 public function setAsClosed()
 {
     global $session_userinfo;
     use_class('stock_booking');
     $booking = new stock_booking($this->booking_id);
     $booking->updateStatus($booking->status, '2', $session_userinfo['username']);
     $this->updateStatus($this->status, '3', $session_userinfo['username']);
 }
function prepareArticle($pid, $product, $amazon_ek, $amazon_ek_old, $article = null)
{
    global $class_pm, $header, $hn, $report_cogs_lastyear, $report_cogs_thisyear;
    if (is_null($article)) {
        $aid = '0';
        $ean = $product['p']['products_ean'];
        $length = $product['pnc']['products_length'];
    } else {
        $aid = $article['products_articles_id'];
        $ean = $article['products_ean'];
        $length = $article['length'];
    }
    $stock = $class_pm->stockRetrieveDetail(WAREHOUSE_ID_PRODUCTS_HAMBURG, $pid, $aid);
    $td = array();
    foreach ($header as $k => $v) {
        $value = '';
        switch ($v) {
            case $hn['image']:
                $value = webImage($product['p']['products_image'], '80', '80', 'Products ' . $pid);
                break;
            case $hn['ean']:
                $value = $ean;
                break;
            case $hn['pid']:
                $value = $pid;
                break;
            case $hn['aid']:
                $value = $aid;
                break;
            case $hn['length']:
                $value = $length > 0 ? textLength($length) : '-';
                break;
            case $hn['price_old']:
                $value = displayCurrency('EUR', $product['p']['products_price_old'], false);
                break;
            case $hn['price']:
                $value = displayCurrency('EUR', $product['p']['products_price'], false);
                break;
            case $hn['price_amazon_ek']:
                $value = displayCurrency('EUR', $amazon_ek, false);
                break;
            case $hn['price_amazon_ek_old']:
                $value = displayCurrency('EUR', $amazon_ek_old, false);
                break;
            case $hn['stock']:
                $value = strval(intval($stock['stock']));
                break;
            case $hn['booked']:
                $value = strval(intval(stock_booking::getBookedQuantity($stock['products_stock_id'])));
                break;
            case $hn['matexp']:
                $value = displayCurrency('EUR', $product['p']['material_expenses'], false);
                break;
            case $hn['lastyear_qty']:
                $value = strval(intval($report_cogs_lastyear[$ean]['total_quantity']));
                break;
            case $hn['lastyear_netsales']:
                $value = displayCurrency('EUR', $report_cogs_lastyear[$ean]['total_net_sales'], false);
                break;
            case $hn['lastyear_cogs']:
                $value = displayCurrency('EUR', $report_cogs_lastyear[$ean]['total_cogs'], false);
                break;
            case $hn['lastyear_grossprofit']:
                $value = displayCurrency('EUR', $report_cogs_lastyear[$ean]['total_gross_profit'], false);
                break;
            case $hn['thisyear_qty']:
                $value = strval(intval($report_cogs_thisyear[$ean]['total_quantity']));
                break;
            case $hn['thisyear_cogs']:
                $value = displayCurrency('EUR', $report_cogs_thisyear[$ean]['total_cogs'], false);
                break;
        }
        $td[$k] = '<div style="padding:2px;">' . $value . '</div>';
    }
    return $td;
}
                    }
                    $value = implode('<br />', $tempvalue);
                    break;
                default:
                    $value = '&nbsp;';
            }
            $result .= $value . '</td>';
        }
        $result .= '</tr>';
        echo utf8_encode($result);
        exit;
    } elseif ($_POST['me_action'] == 'ADDBOOKITEM') {
        $booking_id = tep_db_prepare_input($_POST['booking_id']);
        $psid = tep_db_prepare_input($_POST['psid']);
        $bqty = tep_db_prepare_input($_POST['bqty']);
        $booking = new stock_booking($booking_id);
        $booking->addItem($psid, $bqty);
        $ajaxResult = array();
        $ajaxResult['psid'] = $psid;
        $ajaxResult['bqty'] = $bqty;
        ajaxReturn($ajaxResult);
        exit;
    }
}
$available_status = stock_booking::getBookingStatus();
unset($available_status[1]);
//$sop_header = 'Create New Stock Booking';
//$sop_contents = array();
//$sop_contents[] = 'Use this module to create a new stock booking order. When set as active, the booked quantity will be reduce from available stock and not used for any orders until it is released (set back as inactive).';
//$sop_contents[] = 'To create a booking order:';
//$sop_contents[] = '1) Choose wheter you want to create a new order or you want to add new products to exsting booking order';
                            default:
                                $value = '&nbsp;';
                        }
                        $td[$k] = $value;
                    }
                    $table_data[] = $td;
                }
            }
            $result .= tep_draw_table('sticky-tablehead', $table_data);
        }
        echo utf8_encode($result);
        exit;
    } elseif ($_POST['me_action'] == 'UPDATESTATUS') {
        $booking_id = tep_db_prepare_input($_POST['booking_id']);
        $new_status = tep_db_prepare_input($_POST['status']);
        $booking = new stock_booking($booking_id);
        $old_status = $booking->status;
        $booking->updateStatus($old_status, $new_status, $session_userinfo['username']);
        echo utf8_encode($booking->id . '-' . $booking->status);
        exit;
    }
}
$content .= '<div id="booking-list"></div>';
$javascript .= '
            function listLoaded(htmlResult, txtResult) {
                if(txtResult=="success") {
                    $("#booking-list").html(htmlResult);
                    $("#booking-list").find("th,td").addClass("ui-corner-all");
                    applyFancyBox("#booking-list", "view_webpage");
                    Manobo.attachBehaviors($("#booking-list"));
                    $("#booking-list .bookstat").click(function() {