CApp::setMemoryLimit('512M'); CApp::setTimeLimit(120); $sql = new CRequest(); $sql->addTable("product_order_item"); $sql->addSelect("\r\n product_order_item.order_item_id,\r\n product_order_item.reference_id, \r\n product_reference.price AS RP, \r\n product_order_item.unit_price AS OP, \r\n product_order_item.quantity AS OQ, \r\n product_order.order_id, \r\n product_order.order_number, \r\n product_order.date_ordered"); $sql->addLJoin(array("product_reference" => "product_reference.reference_id = product_order_item.reference_id", "product_order" => "product_order.order_id = product_order_item.order_id")); $sql->addWhere("\r\n product_order.cancelled = '0' \r\n AND (product_reference.cancelled = '0' OR product_reference.cancelled IS NULL)\r\n AND product_reference.price != product_order_item.unit_price\r\n AND (\r\n product_order_item.unit_price > product_reference.price*{$ratio} OR \r\n product_reference.price > product_order_item.unit_price*{$ratio}\r\n )"); $sql->addOrder("product_reference.code"); $changes = $this->_spec->ds->loadList($sql->makeSelect()); $changes_struct = array(); $references = array(); $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; }
$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 { if ($societe_id) { $reference->societe_id = $societe_id; } } }