/**
  * @see parent::store()
  */
 function store()
 {
     if ($this->_id && $this->_duplicate_to_service_id) {
         $this->completeField("name");
         $dup = new self();
         $dup->service_id = $this->_duplicate_to_service_id;
         $dup->name = $this->name;
         if ($msg = $dup->store()) {
             return $msg;
         }
         $items = $this->loadRefsEndowmentItems();
         foreach ($items as $_item) {
             if ($_item->cancelled) {
                 continue;
             }
             $_dup_item = new CProductEndowmentItem();
             $_dup_item->product_id = $_item->product_id;
             $_dup_item->quantity = $_item->quantity;
             $_dup_item->endowment_id = $dup->_id;
             $_dup_item->store();
         }
         $this->_duplicate_to_service_id = null;
         return null;
     }
     return parent::store();
 }
/**
 * $Id$
 *
 * @package    Mediboard
 * @subpackage Stock
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
CCanDo::checkEdit();
$product_id = CValue::getOrSession('product_id');
// Loads the required Product and its References
$product = new CProduct();
if ($product->load($product_id)) {
    $product->loadRefsBack();
    $endowment_item = new CProductEndowmentItem();
    $ljoin = array('product_endowment' => "product_endowment.endowment_id = product_endowment_item.endowment_id");
    foreach ($product->_ref_stocks_service as $_stock) {
        $where = array("product_endowment.service_id" => "= '{$_stock->object_id}'", "product_endowment_item.product_id" => "= '{$product->_id}'");
        $_stock->_ref_endowment_items = $endowment_item->loadList($where, null, null, null, $ljoin);
    }
    foreach ($product->_ref_references as $_reference) {
        $_reference->loadRefProduct();
        $_reference->loadRefSociete();
    }
    $product->loadRefStock();
    $where = array("stock_class" => " = 'CProductStockGroup'", "stock_id" => " = '{$product->_ref_stock_group->stock_id}'");
    $delivery = new CProductDelivery();
    $product->_ref_deliveries = $delivery->loadList($where, "date_dispensation DESC, date_delivery DESC", 50);
    foreach ($product->_ref_deliveries as $_delivery) {
        $_delivery->loadRefsBack();
if ($endowment_id) {
    /** @var CProductEndowmentItem[] $endowment_items */
    // Toute la liste
    if (!$endowment_item_id) {
        $endowment_item = new CProductEndowmentItem();
        $where["product_endowment_item.endowment_id"] = "= '{$endowment_id}'";
        $where["product_endowment_item.cancelled"] = "= '0'";
        $ljoin = array('product' => 'product.product_id = product_endowment_item.product_id');
        if ($keywords) {
            $where['product.name'] = $endowment_item->_spec->ds->prepareLike("%{$keywords}%");
        }
        $endowment_items = $endowment_item->seek($keywords, $where, $limit, true, $ljoin, 'product.name');
        $count_stocks = $endowment_item->_totalSeek;
    } else {
        $single_line = true;
        $endowment_item = new CProductEndowmentItem();
        $endowment_item->load($endowment_item_id);
        $endowment_items = array($endowment_item->_id => $endowment_item);
        $count_stocks = 1;
    }
    $stocks = array();
    foreach ($endowment_items as $_item) {
        $_item->loadRefsFwd();
        $stock_service = CProductStockService::getFromProduct($_item->_ref_product, $service);
        $stock = new CProductStockGroup();
        $stock->product_id = $_item->_ref_product->_id;
        $stock->group_id = $group_id;
        $stock->loadMatchingObject();
        $stock->updateFormFields();
        $stock->_ref_stock_service = $stock_service;
        $stock->quantity = $_item->quantity;