예제 #1
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;
}
 } elseif ($_POST['me_action'] == 'SETBIN') {
     $bins_id = tep_db_prepare_input($_POST['bins_id']);
     $bin = $class_bin->retrieveBinDetail($bins_id);
     $ean = tep_db_prepare_input($_POST['ean']);
     $qty = tep_db_prepare_input($_POST['qty']);
     use_class('products_ean');
     $class_ean = new products_ean();
     $article = $class_ean->getProductArticle($ean);
     if ($article['products_id'] == '0') {
         $messagebox->add("<strong>Manual Bin In Failed: UNKNOWN EAN</strong><br />Please check if correct EAN Label is used");
     } else {
         $segment = $class_bin->retrieveSegmentDetail($bin['bin_segments_id']);
         $jng_warehouses_id = $segment['warehouses_id'];
         $products_id = $article['products_id'];
         $articles_id = $article['products_articles_id'];
         $stock = $class_pm->stockRetrieveDetail($jng_warehouses_id, $products_id, $articles_id);
         $bin_current = $class_bin->getBinProductStock($stock['products_stock_id']);
         if (is_null($bin_current)) {
             $class_pm->stockAdd($jng_warehouses_id, $products_id, $articles_id, $qty, "MANUAL BIN-IN by {$session_userinfo['username']}");
             $class_bin->bookBinForProduct($bins_id, $stock['products_stock_id']);
             header("Location: ?open=products-stock-detail&id={$stock['products_stock_id']}" . ($hidemenuscript != '' ? '&hidemenu=true' : ''));
             exit;
         } else {
             $messagebox->add("<strong>Manual Bin In Failed: EXISTING ARTICLE</strong><br />This article has booked another bin: " . $bin_current['code_clean']);
         }
     }
 } elseif ($_POST['me_action'] == 'GETPRODUCTSTOCKHISTORY') {
     $psid = tep_db_prepare_input($_POST['psid']);
     $period = tep_db_prepare_input($_POST['period']);
     $daily_summary = tep_db_prepare_input($_POST['daily_summary']);
     $ps = $class_pm->stockRetrieveDetailByPSID($psid);
예제 #3
0
 public function setAsConfirmed()
 {
     //WE DISABLE THE ELEMENTS SOURCING INTEGRATION HERE AND WILL BE IMPLEMENT IN A NEW MODULE TO DIRECTLY CREATE A PO
     global $session_userinfo;
     use_class('stock_booking');
     use_class('depot_orders');
     use_class('products_minierp');
     use_class('elements_preorder');
     $class_pm = new products_minierp();
     $class_do = new depot_orders();
     $depot_orders_id = array();
     $booking = new stock_booking();
     $booking->create('Preorder: ' . $this->name);
     foreach ($this->items as $i) {
         $stock = $class_pm->stockRetrieveDetail(WAREHOUSE_ID_PRODUCTS_HAMBURG, $i['products_id'], $i['articles_id']);
         $booking->addItem($stock['products_stock_id'], $i['qty_booked']);
         for ($q = 1; $q <= $i['qty_preproduce']; $q++) {
             $depot_orders_id[] = $class_do->newOrder(SEGMENT_ID_HAMBURG, $i['products_id'], $i['articles_id'], $i['products_ean'], 1);
         }
     }
     $elements_sourcing = $this->getElementsNeededForOnDemand();
     //        foreach($elements_sourcing as $eid=>$qty) {
     //            $epo = new elements_preorder($eid);
     //            $epo->addOrder($qty, null, 'Preorder '.$this->id);
     //        }
     $this->updateConnection($booking->id, $depot_orders_id, $elements_sourcing);
     $this->updateStatus($this->status, 2, $session_userinfo['username']);
 }
예제 #4
0
 function getBinByProduct($segment_id, $products_id, $articles_id)
 {
     use_class('products_minierp');
     $class_pm = new products_minierp();
     $segment = $this->retrieveSegmentDetail($segment_id);
     $ps = $class_pm->stockRetrieveDetail($segment['warehouses_id'], $products_id, $articles_id);
     $bin = $this->getBinProductStock($ps['products_stock_id']);
     return $bin;
 }
 $pos = tep_db_prepare_input($_POST['pos']);
 use_class('products_minierp');
 use_class('products_articles');
 $class_pm = new products_minierp();
 $class_pa = new products_articles();
 $booking = new stock_booking($booking_id);
 $product = $class_pm->retrieveDetail($pid, 'p,pnc');
 $articles = $class_pa->retrieveList($pid, "active_status='1'");
 $alist = array();
 $alist[0] = $product['p']['products_ean'] . ($product['pnc']['products_length'] > 0 ? ' &sdot; ' . textLength($product['pnc']['products_length']) : '');
 foreach ($articles as $a) {
     $alist[$a['products_articles_id']] = $a['products_ean'] . ' &sdot; ' . textLength($a['length']);
 }
 $stocks = array();
 foreach ($alist as $aid => $length) {
     $stocks[$aid] = $class_pm->stockRetrieveDetail(WAREHOUSE_ID_PRODUCTS_HAMBURG, $pid, $aid);
 }
 $result = '<tr id="temp-' . $pid . '">';
 foreach ($product_table_header as $k => $v) {
     $result .= '<td class="' . $k . '">';
     switch ($v) {
         case $hn_product:
             //$value  = webImage($product['p']['products_image'], IMAGE_SIZE_THUMBNAIL_1, IMAGE_SIZE_THUMBNAIL_1, 'Product '.$pid);
             $value = webImageWithDetailLinkStars($product['p']['products_image'], IMAGE_SIZE_THUMBNAIL_1, IMAGE_SIZE_THUMBNAIL_1, 'Product ' . $pid, '', 'View larger image', IMAGE_SIZE_BIG_1, IMAGE_SIZE_BIG_1, $product['p']['stars']);
             $value .= '<div>' . $pid . '</div>';
             break;
         case $hn_article:
             $value = implode('<br />', $alist);
             break;
         case $hn_custock:
             $tempvalue = array();
        $is_outsourced = $class_do->isOutsourceOrder($item['trans_type'], $item['trans_id']);
        //invalidation confirmation, check if NOT Outsourcing orders and if status is not "in HH"
        if (!$is_outsourced || $item['status'] != '8') {
            //invalid confirmed, cancel process
            unset($item);
        } else {
            //invalid unconfirmed, allow process using this order
            $ean = $item['products_ean'];
            $products_id = $item['products_id'];
            $articles_id = $item['articles_id'];
            $quantity = $item['quantity'];
        }
    }
} else {
    $p = $class_ean->getProductArticle($ean);
    $products_id = $p['products_id'];
    $articles_id = $p['products_articles_id'];
}
if ($products_id != 0) {
    $segment = $class_bin->retrieveSegmentDetail($segments_id);
    $jng_warehouses_id = $segment['warehouses_id'];
    $stock = $class_pm->stockRetrieveDetail($jng_warehouses_id, $products_id, $articles_id);
    if (!is_null($stock)) {
        $bin = $class_bin->getBinProductStock($stock['products_stock_id']);
        if (!is_null($bin)) {
            $result['status'] = 'FOUND';
            $result['result_ean'] = $ean;
            $result['bin'] = $bin['code_clean'];
        }
    }
}