<?php

/**
 * $Id$
 *
 * @package    Mediboard
 * @subpackage Stock
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkRead();
$item_id = CValue::get('order_item_id');
// Loads the expected Order Item
$item = new CProductOrderItem();
if ($item->load($item_id)) {
    $item->loadRefs();
    $item->_ref_reference->loadRefsFwd();
}
$item->_quantity_received = $item->quantity_received;
// Smarty template
$smarty = new CSmartyDP();
$smarty->assign('curr_item', $item);
$smarty->assign('order', $item->_ref_order);
$smarty->display('inc_order_item.tpl');
示例#2
0
 /**
  * Load order items
  *
  * @param object $reception reception
  *
  * @return CProductOrderItem[]
  */
 function loadRefsaddItems()
 {
     $_reception = new CProductReception();
     $where = array();
     $where["reference"] = "LIKE '{$this->order_number}-%'";
     $receptions = $_reception->loadIds($where);
     $where = array();
     $where[] = "product_order_item_reception.reception_id " . CSQLDataSource::prepareIn(array_values($receptions)) . " OR product_order_item.order_id = '{$this->_id}'";
     $ljoin = array();
     $ljoin["product_order_item_reception"] = "product_order_item_reception.order_item_id = product_order_item.order_item_id";
     $order_item = new CProductOrderItem();
     /* @var CProductOrderItem[] $order_items*/
     $order_items = $order_item->loadList($where, "order_item_id", null, null, $ljoin);
     foreach ($order_items as $_order) {
         if (!$_order->order_id) {
             $_order->quantity = 0;
         }
         $_order->updatePriceTVA();
     }
     return $this->_ref_order_items_add = $order_items;
 }
 /**
  * Get or count items in pending orders
  *
  * @param bool $count Count instead of load
  *
  * @return CProductOrderItem[]|int[]
  */
 function getPendingOrderItems($count = true)
 {
     $leftjoin = array();
     $leftjoin['product_order'] = 'product_order.order_id = product_order_item.order_id';
     $leftjoin['product_reference'] = 'product_reference.reference_id = product_order_item.reference_id';
     $leftjoin['product'] = 'product.product_id = product_reference.product_id';
     $where = array("product.product_id" => "= '{$this->_id}'", "product_order.cancelled" => '= 0', "product_order.deleted" => '= 0', "product_order.date_ordered" => 'IS NOT NULL', "product_order.received" => "= '0'", "product_order_item.renewal" => "= '1'");
     /** @var CProductOrderItem[] $list */
     $item = new CProductOrderItem();
     if ($count) {
         $list = $item->countList($where, null, $leftjoin);
     } else {
         $list = $item->loadList($where, "date_ordered ASC", null, "product_order_item.order_item_id", $leftjoin);
     }
     foreach ($list as $_id => $_item) {
         if ($_item->isReceived()) {
             unset($list[$_id]);
         }
     }
     $this->_in_order = $list;
     if ($list) {
         foreach ($this->_in_order as $_item) {
             $_item->loadOrder();
         }
     }
     return $this->_in_order;
 }
$references_cahpp = array();
foreach ($changes as $_change) {
    if (!isset($references[$_change["reference_id"]])) {
        $_reference = new CProductReference();
        $_reference->load($_change["reference_id"]);
        $references[$_reference->_id] = $_reference;
        $article = new CCAHPPArticle();
        $where = array("reference_fournisseur" => $article->_spec->ds->prepare("=%", $_reference->supplier_code));
        if (!$article->loadObject($where)) {
            $where = array("cip" => $article->_spec->ds->prepare("=%", $_reference->loadRefProduct()->code));
            $article->loadObject($where);
        }
        $references_cahpp[$_reference->_id] = $article;
    }
    $_order_item = new CProductOrderItem();
    $_order_item->load($_change["order_item_id"]);
    $_order_item->loadOrder();
    $_change["order_item"] = $_order_item;
    $changes_struct[$_change["reference_id"]][] = $_change;
}
$order_item = new CProductOrderItem();
$total_order_items = $order_item->countList();
// Smarty template
$smarty = new CSmartyDP();
$smarty->assign('changes', $changes);
$smarty->assign('changes_struct', $changes_struct);
$smarty->assign('references', $references);
$smarty->assign('references_cahpp', $references_cahpp);
$smarty->assign('total_order_items', $total_order_items);
$smarty->assign('ratio', $ratio);
$smarty->display('vw_reference_price_changes.tpl');
<?php

/**
 * $Id$
 *
 * @package    Mediboard
 * @subpackage Stock
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkRead();
$order_item_id = CValue::get('order_item_id');
$order_item = new CProductOrderItem();
$order_item->load($order_item_id);
// Smarty template
$smarty = new CSmartyDP();
$smarty->assign('order_item', $order_item);
$smarty->display('inc_edit_order_item_unit_price.tpl');
 /**
  * @see parent::store()
  */
 function store()
 {
     $this->completeField("reception_id");
     $is_new = !$this->_id;
     if ($is_new && $this->cancelled === null) {
         $this->cancelled = 0;
     }
     if ($is_new) {
         $this->loadRefOrderItem();
         $this->_ref_order_item->loadOrder();
     }
     if ($is_new && !$this->reception_id) {
         $order = $this->_ref_order_item->_ref_order;
         $reception = new CProductReception();
         $reception->date = CMbDT::dateTime();
         $reception->societe_id = $order->societe_id;
         $reception->group_id = CProductStockGroup::getHostGroup();
         // Recherche de receptions ayant un numero de reception similaire pour gerer l'increment
         if ($order->order_number) {
             $where = array("reference" => "LIKE '{$order->order_number}%'");
             $number = $reception->countList($where) + 1;
             $reception->reference = "{$order->order_number}-{$number}";
         }
         if ($msg = $reception->store()) {
             return $msg;
         }
         $this->reception_id = $reception->_id;
     }
     if ($is_new) {
         $this->_ref_order_item->loadRefsFwd();
         $this->_ref_order_item->_ref_reference->loadRefsFwd();
         $this->_ref_order_item->_ref_reference->_ref_product->loadRefStock();
         $product =& $this->_ref_order_item->_ref_reference->_ref_product;
         $product->updateFormFields();
         if ($product->loadRefStock()) {
             $stock = $product->_ref_stock_group;
             $stock->quantity += $this->quantity;
         } else {
             $qty = $this->quantity;
             $stock = new CProductStockGroup();
             $stock->product_id = $product->_id;
             $stock->group_id = CProductStockGroup::getHostGroup();
             $stock->quantity = $qty;
             $stock->order_threshold_min = $qty;
             CAppUI::setMsg("Un nouveau stock a été créé", UI_MSG_OK);
             //CAppUI::setMsg("Un nouveau stock pour [%s] a été créé", UI_MSG_OK, $product->_view);
         }
         if ($msg = $stock->store()) {
             return $msg;
         }
     }
     if ($msg = parent::store()) {
         return $msg;
     }
     // If the order is received, we set the flag
     if ($is_new) {
         $order = $this->_ref_order_item->_ref_order;
         if (!$order->received) {
             $count_renewed = $order->countRenewedItems();
             $count_received = $order->countReceivedItems() - (count($order->_ref_order_items) - $count_renewed);
             if ($count_renewed && $count_received >= $count_renewed) {
                 $order->received = 1;
                 $order->store();
             }
         }
     }
     return null;
 }
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkEdit();
$reference_id = CValue::getOrSession('reference_id');
$societe_id = CValue::getOrSession('societe_id');
$category_id = CValue::getOrSession('category_id');
$product_id = CValue::getOrSession('product_id');
$keywords = CValue::getOrSession('keywords');
$letter = CValue::getOrSession('letter', "%");
$show_all = CValue::getOrSession('show_all');
$filter = new CProduct();
$filter->societe_id = $societe_id;
$filter->category_id = $category_id;
CProductOrderItem::$_load_lite = true;
// Loads the expected Reference
$reference = new CProductReference();
// If a reference ID has been provided,
// we load it and its associated product
if ($reference->load($reference_id)) {
    $reference->loadRefsFwd();
    $reference->_ref_product->loadRefsFwd();
    $reference->loadRefsNotes();
} else {
    if ($product_id) {
        $reference->product_id = $product_id;
        $product = new CProduct();
        $product->load($product_id);
        $reference->_ref_product = $product;
    } else {
 /**
  * @see parent::store()
  */
 function store()
 {
     $this->completeField("order_id", "reference_id", "renewal", "septic");
     if (!$this->_id) {
         if ($this->renewal === null) {
             $this->renewal = "1";
         }
         if ($this->septic === null) {
             $this->septic = "0";
         }
     }
     if ($this->order_id && $this->reference_id && !$this->_id) {
         $this->loadRefsFwd();
         $where = array('order_id' => "= '{$this->order_id}'", 'reference_id' => "= '{$this->reference_id}'", 'renewal' => "= '{$this->renewal}'", 'septic' => "= '{$this->septic}'");
         if ($this->lot_id) {
             $where['lot_id'] = "= '{$this->lot_id}'";
         }
         $duplicateKey = new CProductOrderItem();
         if ($duplicateKey->loadObject($where)) {
             $duplicateKey->loadRefsFwd();
             $this->_id = $duplicateKey->_id;
             $this->quantity += $duplicateKey->quantity;
             $this->unit_price = $duplicateKey->unit_price;
             $this->tva = $duplicateKey->tva;
         } else {
             $this->unit_price = $this->_ref_reference->price;
             $this->tva = $this->_ref_reference->tva;
         }
     }
     if ($this->_id && $this->_update_reference) {
         $ref = $this->loadReference();
         $ref->price = $this->unit_price;
         if ($msg = $ref->store()) {
             CAppUI::setMsg($msg, UI_MSG_WARNING);
         } else {
             CAppUI::setMsg('Prix de la référence mis à jour', UI_MSG_OK);
         }
         $this->_update_reference = null;
     }
     /*if (!$this->_id && ($stock = $this->getStock())) {
         $stock->loadRefOrders();
         if ($stock->_zone_future > 2) {
           CAppUI::setMsg("Attention : le stock optimum risque d'être dépassé", UI_MSG_WARNING);
         }
       }*/
     return parent::store();
 }
    // If it is a societe id
    if (!is_numeric($reference_id)) {
        list($societe_id, $product_id) = explode("-", $reference_id);
        $societe = new CSociete();
        $societe->load($societe_id);
        $product = new CProduct();
        $product->load($product_id);
        $reference = new CProductReference();
        $reference->product_id = $product->_id;
        $reference->societe_id = $societe->_id;
        $reference->quantity = 1;
        $reference->price = 0;
        $reference->store();
    } else {
        // If it is a reference id
        $reference = new CProductReference();
        $reference->load($reference_id);
    }
    if (!$reference->_id) {
        CAppUI::setMsg("Impossible de créer l'article, la réference n'existe pas", UI_MSG_ERROR);
    }
    $order_item = new CProductOrderItem();
    $order_item->reference_id = $reference->_id;
    $order_item->quantity = $quantity;
    $order_item->unit_price = $reference->price;
    if ($msg = $order_item->store()) {
        CAppUI::setMsg($msg);
    }
    $_POST["order_item_id"] = $order_item->_id;
}
$do->doIt();
CApp::setTimeLimit(1200);
function append_user_logs(&$all_logs, $logs)
{
    foreach ($logs as $_log) {
        $all_logs[$_log->date][$_log->_id] = $_log;
    }
}
//CSQLDataSource::$trace = true;
// ---------------------
CProductOrderItemReception::$_load_lite = true;
$oir = new CProductOrderItemReception();
$oir_where = array("product_order_item_reception.units_fixed" => "= '0'");
$oir_ljoin = array("product_order_item" => "product_order_item_reception.order_item_id = product_order_item.order_item_id", "product_reference" => "product_order_item.reference_id = product_reference.reference_id", "product" => "product_reference.product_id = product.product_id");
// ---------------------
CProductOrderItem::$_load_lite = true;
$oi = new CProductOrderItem();
$oi_where = array("product_order_item.units_fixed" => "= '0'");
$oi_ljoin = array("product_reference" => "product_order_item.reference_id = product_reference.reference_id", "product" => "product_reference.product_id = product.product_id", "user_log" => "product_order_item.order_item_id = user_log.object_id AND user_log.object_class = 'CProductOrderItem'");
// ---------------------
CProductReference::$_load_lite = true;
$ref = new CProductReference();
$ref_where = array("product_reference.units_fixed = '0'");
// ---------------------
$references = $ref->loadList($ref_where, null, 50);
CAppUI::stepAjax("Correction de " . count($references) . " références");
// Chargement des CProductReference
foreach ($references as $_reference) {
    $_product = $_reference->loadRefProduct();
    //mbTrace($_product->_view, " ######################## ");
    $old_date = CMbDT::dateTime();
    $quantity_product = $_product->quantity;