/** * Function called when a Dolibarrr business event is done. * All functions "run_trigger" are triggered if file is inside directory htdocs/core/triggers * * @param string $action Event action code * @param Object $object Object * @param User $user Object user * @param Translate $langs Object langs * @param conf $conf Object conf * @return int <0 if KO, 0 if no triggered ran, >0 if OK */ function run_trigger($action, $object, $user, $langs, $conf) { global $conf, $db; if (!defined('INC_FROM_DOLIBARR')) { define('INC_FROM_DOLIBARR', true); } if ($action == 'SHIPPING_VALIDATE') { dol_include_once('/dispatch/config.php'); dol_include_once('/dispatch/class/dispatchdetail.class.php'); $PDOdb = new TPDOdb(); // Pour chaque ligne de l'expédition foreach ($object->lines as $line) { // Chargement de l'objet detail dispatch relié à la ligne d'expédition $dd = new TDispatchDetail(); $TIdExpeditionDet = TRequeteCore::get_id_from_what_you_want($PDOdb, MAIN_DB_PREFIX . 'expeditiondet', array('fk_expedition' => $object->id, 'fk_origin_line' => $line->fk_origin_line)); $idExpeditionDet = $TIdExpeditionDet[0]; //if(!empty($idExpeditionDet) && $dd->loadBy($PDOdb, $idExpeditionDet, 'fk_expeditiondet')) { if (!empty($idExpeditionDet)) { $dd->loadLines($PDOdb, $idExpeditionDet); if ($conf->asset->enabled) { // Création des mouvements de stock de flacon foreach ($dd->lines as $detail) { // Création du mouvement de stock standard $poids_destocke = $this->create_flacon_stock_mouvement($PDOdb, $detail, $object->ref, empty($object->fk_soc) ? $object->socid : $object->fk_soc); //$this->create_standard_stock_mouvement($line, $poids_destocke, $object->ref); if ($conf->clinomadic->enabled) { $asset = new TAsset(); $asset->load($PDOdb, $detail->fk_asset); $prod = new Product($db); $prod->fetch($asset->fk_product); //Affectation du type d'équipement pour avoir accès aux extrafields équipement $asset->fk_asset_type = $asset->get_asset_type($PDOdb, $prod->id); $asset->load_asset_type($PDOdb); //Localisation client $asset->fk_societe_localisation = $object->socid; if (!empty($object->linkedObjects['commande'][0]->array_options['options_duree_pret'])) { $asset->etat = 2; //Prêté $asset->set_date('date_deb_pret', $object->date_valid); $asset->set_date('date_fin_pret', strtotime('+' . $object->commande[0]->array_options['options_duree_pret'] . 'year', $object->date_valid)); } else { $asset->etat = 1; //Vendu } foreach ($object->linkedObjects['commande'][0]->lines as $line) { if ($line->fk_product == $asset->fk_product) { $extension_garantie = $line->array_options['options_extension_garantie']; } } $nb_year_garantie += $prod->array_options['options_duree_garantie_client']; $asset->date_fin_garantie_cli = strtotime('+' . $nb_year_garantie . 'year', $object->date_valid); $asset->date_fin_garantie_cli = strtotime('+' . $extension_garantie . 'year', $asset->date_fin_garantie_cli); $asset->save($PDOdb); } } } //exit; } /* else { // Pas de détail, on déstocke la quantité comme Dolibarr standard $this->create_standard_stock_mouvement($line, $line->qty, $object->ref); }*/ } dol_syslog("Trigger '" . $this->name . "' for action '{$action}' launched by " . __FILE__ . ". id=" . $object->id); } return 0; }
$prod->fetch($line['fk_product']); //Affectation du type d'équipement pour avoir accès aux extrafields équipement $asset->fk_asset_type = $asset->get_asset_type($PDOdb, $prod->id); $asset->load_asset_type($PDOdb); //echo $asset->getNextValue($PDOdb); $asset->fk_product = $line['fk_product']; $asset->serial_number = $line['numserie'] ? $line['numserie'] : $asset->getNextValue($PDOdb); $asset->lot_number = $line['lot_number']; $asset->contenance_value = $line['quantity'] ? $line['quantity'] : 1; $asset->contenancereel_value = $line['quantity'] ? $line['quantity'] : 1; $asset->contenancereel_units = $line['quantity_unit'] ? $line['quantity_unit'] : 0; $asset->contenance_units = $line['quantity_unit'] ? $line['quantity_unit'] : 0; $asset->lot_number = $line['lot_number']; $asset->firmware = $line['firmware']; $asset->imei = $line['imei']; $asset->set_date('dluo', $line['dluo']); $asset->entity = $conf->entity; //$asset->contenancereel_value = 1; $nb_year_garantie = 0; //Renseignement des extrafields $asset->set_date('date_reception', $_REQUEST['date_recep']); foreach ($commandefourn->lines as $l) { if ($l->fk_product == $asset->fk_product) { $asset->prix_achat = number_format($l->subprice, 2); $extension_garantie = 0; $PDOdb->Execute('SELECT extension_garantie FROM ' . MAIN_DB_PREFIX . 'commande_fournisseurdet WHERE rowid = ' . $l->id); if ($PDOdb->Get_line()) { $extension_garantie = $PDOdb->Get_field('extension_garantie'); } } }