$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;
        }
    }
}
$reference->loadRefsFwd();