Пример #1
0
 /**
  * @see parent::check()
  */
 function check()
 {
     if ($this->_forwardRefMerging) {
         return null;
     }
     // Vérouillage d'un événement traité
     $this->completeField("realise", "annule", "nb_patient_seance", "nb_intervenant_seance");
     $this->_traite = $this->realise || $this->annule;
     if ($this->_traite && !$this->_traitement) {
         return "Evénément déjà traité (réalisé ou annulé)";
     }
     // Evénement dans les bornes du séjour
     $this->completeField("sejour_id", "debut");
     $sejour = $this->loadRefSejour();
     // Vérifier seulement les jours car les sorties peuvent être imprécises pour les hospit de jours
     if ($sejour->_id && $this->debut) {
         $date_debut = CMbDT::date($this->debut);
         $date_entree = CMbDT::date(CMbDT::date($sejour->entree));
         $date_sortie = CMbDT::date(CMbDT::date($sejour->sortie));
         if (!CMbRange::in($date_debut, $date_entree, $date_sortie)) {
             return "Evenement SSR en dehors des dates du séjour";
         }
     }
     // Cas de la réalisation des événements SSR
     $this->loadRefTherapeute();
     // Si le therapeute n'est pas defini, c'est
     if ($this->therapeute_id) {
         $therapeute = $this->_ref_therapeute;
     } else {
         // Chargement du therapeute de la seance
         $evt_seance = new CEvenementSSR();
         $evt_seance->load($this->seance_collective_id);
         $evt_seance->loadRefTherapeute();
         $therapeute = $evt_seance->_ref_therapeute;
     }
     if ($this->fieldModified("realise")) {
         // Si le thérapeute n'a pas d'identifiant CdARR
         if (!$therapeute->code_intervenant_cdarr) {
             return CAppUI::tr("CMediusers-code_intervenant_cdarr-none");
         }
         $therapeute->loadRefIntervenantCdARR();
         $code_intervenant_cdarr = $therapeute->_ref_intervenant_cdarr->code;
         // Création du RHS au besoins
         $rhs = $this->getRHS();
         if (!$rhs->_id) {
             $rhs->store();
         }
         if ($rhs->facture == 1) {
             CAppUI::stepAjax(CAppUI::tr("CRHS.charged"), UI_MSG_WARNING);
         }
         $this->loadView();
         // Complétion de la ligne RHS
         foreach ($this->loadRefsActesCdARR() as $_acte_cdarr) {
             $ligne = new CLigneActivitesRHS();
             $ligne->rhs_id = $rhs->_id;
             $ligne->executant_id = $therapeute->_id;
             $ligne->code_activite_cdarr = $_acte_cdarr->code;
             $ligne->code_intervenant_cdarr = $code_intervenant_cdarr;
             $ligne->loadMatchingObject();
             $ligne->crementDay($this->debut, $this->realise ? "inc" : "dec");
             $ligne->auto = "1";
             $ligne->store();
         }
         foreach ($this->loadRefsActesCsARR() as $_acte_csarr) {
             $ligne = new CLigneActivitesRHS();
             $ligne->rhs_id = $rhs->_id;
             $ligne->executant_id = $therapeute->_id;
             $ligne->code_activite_csarr = $_acte_csarr->code;
             $ligne->code_intervenant_cdarr = $code_intervenant_cdarr;
             $ligne->modulateurs = $_acte_csarr->modulateurs;
             $ligne->phases = $_acte_csarr->phases;
             $ligne->nb_patient_seance = $this->nb_patient_seance;
             $ligne->nb_intervenant_seance = $this->nb_intervenant_seance;
             $ligne->loadMatchingObject();
             $ligne->crementDay($this->debut, $this->realise ? "inc" : "dec");
             $ligne->auto = "1";
             $ligne->store();
         }
     }
     return parent::check();
 }
 $evenement->loadRefsActesCdARR();
 $evenement->loadRefsActesCsARR();
 // Duplication de l'événement
 $evenement->_id = "";
 $evenement->realise = 0;
 $evenement->annule = 0;
 $evenement->debut = $day ? "{$day} " . CMbDT::time($evenement->debut) : CMbDT::dateTime($period, $evenement->debut);
 // Cas des séances collectives
 if ($evenement->seance_collective_id) {
     CAppUI::displayMsg("Impossible de dupliquer des événements qui sont dans des seances collectives", "CEvenementSSR-msg-create");
     continue;
 }
 // Autres rééducateurs
 global $can;
 $user = CAppUI::$user;
 $therapeute = $evenement->loadRefTherapeute();
 if ($therapeute->function_id != $user->function_id && !$can->admin) {
     CAppUI::displayMsg("Impossible de dupliquer les événements d'un rééducateur d'une autre spécialié", "CEvenementSSR-msg-create");
     continue;
 }
 // Chargements préparatoire au transferts automatiques de rééducateurs
 $sejour = new CSejour();
 $sejour->load($evenement->sejour_id);
 $bilan = $sejour->loadRefBilanSSR();
 $referant = $bilan->loadRefKineReferent();
 $_day = CMbDT::date($evenement->debut);
 $therapeute_id = $evenement->therapeute_id;
 // Transfert kiné référent => kiné remplaçant si disponible
 if ($therapeute_id == $referant->_id) {
     $conge = new CPlageConge();
     $conge->loadFor($therapeute_id, $_day);