$patients = array();
if (count($deliveries)) {
    foreach ($deliveries as $_delivery) {
        $_delivery->loadRefsFwd();
        $_delivery->loadRefsBack();
        $_delivery->_ref_stock->loadRefsFwd();
        $_delivery->loadRefPatient();
        $_delivery->loadRefSejour();
        $_delivery->loadRefService();
        $_delivery->getInitialQuantity();
        $_delivery->loadRefPreparateur();
        /*if($_delivery->patient_id){
            $_delivery->loadRefPatient();
            $deliveries_nominatif[$_delivery->_id] = $_delivery;
          } else {
            $_delivery->loadRefService();
            $deliveries_global[$_delivery->_id] = $_delivery;
          }*/
        $stocks_service[$_delivery->_id] = CProductStockService::getFromCode($_delivery->_ref_stock->_ref_product->code, $service_id);
    }
}
$smarty = new CSmartyDP();
$smarty->assign('deliveries', $deliveries);
$smarty->assign('deliveries_count', $deliveries_count);
$smarty->assign('service_id', $service_id);
$smarty->assign('start', $start);
if (!$mode) {
    $smarty->display('inc_stock_reception.tpl');
} else {
    $smarty->display('print_stock_reception.tpl');
}
Пример #2
0
<?php

/**
 * $Id$
 *
 * @package    Mediboard
 * @subpackage Stock
 * @author     SARL OpenXtrem <*****@*****.**>
 * @license    GNU General Public License, see http://www.gnu.org/licenses/gpl.html
 * @version    $Revision$
 */
// If it is a return to the group stock
if (isset($_POST['_return']) && isset($_POST['_code'])) {
    $stock_service = CProductStockService::getFromCode($_POST['_code']);
    $stock_group = CProductStockGroup::getFromCode($_POST['_code']);
    $_POST['quantity'] = -abs($_POST['quantity']);
    $_POST['_code'] = null;
    $_POST['_return'] = null;
    if ($stock_service && $stock_group) {
        $delivery = new CProductDelivery();
        $where = array('stock_id' => "= '{$stock_group->_id}'", 'stock_class' => "= 'CProductStockGroup'", 'service_id' => "= '{$stock_service->service_id}'", 'quantity' => "< 0");
        if (!$delivery->loadObject($where)) {
            $delivery->stock_id = $stock_group->_id;
            $delivery->stock_class = $stock_group->_class;
            $delivery->service_id = $stock_service->service_id;
        }
        $delivery->quantity += $_POST['quantity'];
        $delivery->date_dispensation = CMbDT::dateTime();
        if ($msg = $delivery->store()) {
            CAppUI::setMsg($msg, UI_MSG_ERROR);
        }
        $medicaments[$code_cip] =& $line->_ref_produit;
    }
}
// Calcul du nombre de boites correspondant aux administrations
foreach ($destockages as $code_cip => $_destockage) {
    $medicament = $medicaments[$code_cip];
    //$presentation = $destockages[$code_cip]["quantite"]/$medicament->nb_unite_presentation/$medicament->nb_presentation;
    $presentation = $destockages[$code_cip]["quantite"];
    if (!isset($destockages[$code_cip]["nb_produit"])) {
        $destockages[$code_cip]["nb_produit"] = 0;
    }
    $destockages[$code_cip]["nb_produit"] = $presentation;
    if (strstr($destockages[$code_cip]["nb_produit"], '.')) {
        $destockages[$code_cip]["nb_produit"] = ceil($destockages[$code_cip]["nb_produit"]);
    }
    $destockages[$code_cip]["stock"] = CProductStockService::getFromCode($code_cip, $service_id);
    if ($destockages[$code_cip]["stock"]) {
        $destockages[$code_cip]["stock"]->quantity -= $destockages[$code_cip]["nb_produit"];
        $stock = $destockages[$code_cip]["stock"];
        $log = new CUserLog();
        $where = array();
        $order = "date DESC";
        $where["object_id"] = " = '{$stock->_id}'";
        $where["object_class"] = " = '{$stock->_class}'";
        $where["date"] = " BETWEEN '{$date_min}' AND '{$date_max}'";
        $where["fields"] = " LIKE '%quantity%'";
        $destockages[$code_cip]["stock"]->_ref_logs = $log->loadList($where, $order);
        foreach ($destockages[$code_cip]["stock"]->_ref_logs as $log) {
            $log->loadRefsFwd();
        }
    } else {