function event(CExchangeDataFormat $data_format) { $msg = $data_format->_message; /** @var CHPREvent $evt */ $evt = $data_format->_family_message; $evt->_data_format = $data_format; // Récupération des informations du message $dom_evt = $evt->handle($msg); try { // Création de l'échange $exchange_hpr = new CEchangeHprim21(); $exchange_hpr->load($data_format->_exchange_id); // Récupération des données du segment H $data = $dom_evt->getHEvenementXML(); // Gestion de l'acquittement $ack = new CHPrim21Acknowledgment($evt); $evt_class = CHPREvent::getEventClass($evt); if (!in_array($evt_class, $data_format->_messages_supported_class)) { $data_format->_ref_sender->_delete_file = false; // Pas de création d'échange dans le cas : // * où l'on ne souhaite pas traiter le message // * où le sender n'enregistre pas les messages non pris en charge if (!$data_format->_to_treatment || !$data_format->_ref_sender->save_unsupported_message) { return null; } $exchange_hpr->populateExchange($data_format, $evt); $exchange_hpr->loadRefsInteropActor(); $exchange_hpr->populateErrorExchange(null, $evt); $ack->_ref_exchange_hpr = $exchange_hpr; $msgAck = $ack->generateAcknowledgment("AR", "E001", "201"); $exchange_hpr->populateErrorExchange($ack); return $msgAck; } // Acquittement d'erreur d'un document XML recu non valide $exchange_hpr->populateExchange($data_format, $evt); $exchange_hpr->message_valide = 1; // Gestion des notifications ? if (!$exchange_hpr->_id) { $exchange_hpr->date_production = $data['dateHeureProduction']; $exchange_hpr->nom_fichier = $data['filename']; } $exchange_hpr->store(); // Pas de traitement du message if (!$data_format->_to_treatment) { return null; } $exchange_hpr->loadRefsInteropActor(); // Chargement des configs de l'expéditeur $sender = $exchange_hpr->_ref_sender; $sender->getConfigs($data_format); $dom_evt->_ref_exchange_hpr = $exchange_hpr; $ack->_ref_exchange_hpr = $exchange_hpr; // Message ADM / REG $msgAck = self::handleEvent($data, $exchange_hpr, $dom_evt, $ack); } catch (Exception $e) { } return $msgAck; }
CAppUI::stepAjax($e->getMessage(), UI_MSG_WARNING); } if (empty($list)) { CAppUI::stepAjax("Le répertoire ne contient aucun fichier", UI_MSG_ERROR); } $sender_ftp = new CSenderFTP(); $sender_ftp->user_id = CUser::get()->_id; $sender_ftp->loadMatchingObject(); $count = CAppUI::conf("eai max_files_to_process"); $list = array_slice($list, 0, $count); foreach ($list as $filepath) { if (substr($filepath, -strlen($extension)) == $extension) { $filename = basename($filepath); $hprimFile = $ftp->getFile($filepath, "tmp/hprim21/{$filename}"); // Création de l'échange $echg_hprim21 = new CEchangeHprim21(); $echg_hprim21->group_id = CGroups::loadCurrent()->_id; $echg_hprim21->sender_class = $sender_ftp->_class; $echg_hprim21->sender_id = $sender_ftp->_id; $echg_hprim21->date_production = CMbDT::dateTime(); $echg_hprim21->store(); $hprimReader = new CHPrim21Reader(); $hprimReader->_echange_hprim21 = $echg_hprim21; $hprimReader->readFile($hprimFile); // Mapping de l'échange $echg_hprim21 = $hprimReader->bindEchange($hprimFile); if (!count($hprimReader->error_log)) { $echg_hprim21->message_valide = true; $ftp->delFile($filepath); } else { $echg_hprim21->message_valide = false;
<?php /** * Reprocessing des messages Hprim21 * * @category Hprim21 * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License; see http://www.gnu.org/licenses/gpl.html * @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkRead(); $echg_hprim21_id = CValue::get("echange_hprim21_id"); // Chargement de l'objet $echg_hprim21 = new CEchangeHprim21(); $echg_hprim21->load($echg_hprim21_id); $hprimFile = tmpfile(); fwrite($hprimFile, $echg_hprim21->message); fseek($hprimFile, 0); $hprimReader = new CHPrim21Reader(); $hprimReader->_echange_hprim21 = $echg_hprim21; $hprimReader->readFile(null, $hprimFile); // Mapping de l'échange $echg_hprim21 = $hprimReader->bindEchange(); if (!count($hprimReader->error_log)) { $echg_hprim21->message_valide = true; } else { $echg_hprim21->message_valide = false; CAppUI::setMsg("Erreur(s) pour le fichier '{$echg_hprim21->nom_fichier}' : {$hprimReader->error_log}", UI_MSG_WARNING); }
<?php /** * Rafraichissement d'un échange Hprim21 * * @category Hprim21 * @package Mediboard * @author SARL OpenXtrem <*****@*****.**> * @license GNU General Public License; see http://www.gnu.org/licenses/gpl.html * @version SVN: $Id:$ * @link http://www.mediboard.org */ CCanDo::checkRead(); $echg_hprim21_id = CValue::get("echange_hprim21_id"); // Chargement de l'objet $echg_hprim21 = new CEchangeHprim21(); $echg_hprim21->load($echg_hprim21_id); // Création du template $smarty = new CSmartyDP(); $smarty->assign("object", $echg_hprim21); $smarty->display("inc_echange_hprim21.tpl");
$_date_min = CValue::getOrSession('_date_min', CMbDT::dateTime("-7 day")); $_date_max = CValue::getOrSession('_date_max', CMbDT::dateTime("+1 day")); // Types filtres qu'on peut prendre en compte $filtre_types = array('no_date_echange', 'message_invalide'); $types = array(); foreach ($filtre_types as $type) { $types[$type] = !isset($t) || in_array($type, $t); } // Chargement de l'échange HPRIM 2.1 demandé $echg_hprim21 = new CEchangeHprim21(); $echg_hprim21->_date_min = $_date_min; $echg_hprim21->_date_max = $_date_max; $echg_hprim21->load($echange_hprim21_id); $echg_hprim21->loadRefsInteropActor(); // Récupération de la liste des echanges HPRIM 2.1 $itemEchangeHprim21 = new CEchangeHprim21(); $where = array(); if ($_date_min && $_date_max) { $where['date_production'] = " BETWEEN '" . $_date_min . "' AND '" . $_date_max . "' "; } if ($type_message) { $where["type_message"] = " = '{$type_message}'"; } if (isset($t["message_invalide"])) { $where["message_valide"] = " = '0'"; } if (isset($t["no_date_echange"])) { $where["date_echange"] = "IS NULL"; } $where["group_id"] = "= '" . CGroups::loadCurrent()->_id . "'"; $total_echange_hprim21 = $itemEchangeHprim21->countList($where);