production/Controleur/ControleurAjaximportertarifmedicament.php
2025-12-02 11:29:44 +00:00

177 lines
4.9 KiB
PHP
Executable File

<?php
require_once 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
require_once 'Framework/Controleurrequete.php'; // OK
require_once 'Modele/Detailtarifmedicament.php';
class ControleurAjaximportertarifmedicament extends Controleurrequete
{
private $tarif;
public function __construct() {
$this->tarif = new Detailtarifmedicament();
}
public function index()
{
}
public function exportermodele()
{
$codeTarifMedicament = $_SESSION['codeTarifMedicament'];
$modeles = $this->tarif->getModeleTarif($codeTarifMedicament);
// Excel
$headerXLS = array(
"codeTarifMedicament",
"codeMedicament",
"libelle",
"prix");
$dataXLS = array();
foreach ($modeles as $modele)
{
$dataXLS[]=$modele;
}
$classeur = new Spreadsheet();
$classeur->getProperties()->setCreator("INTER-SANTE");
$classeur->setActiveSheetIndex(0);
$feuille=$classeur->getActiveSheet();
$feuille->setTitle(_('MODELE TARIF MEDICAMENT'));
$feuille->fromArray($headerXLS, NULL, 'A1', true);
$feuille->fromArray($dataXLS, NULL, 'A2', true);
$fichier = 'Temp/TEMPLATE_MEDICAMENTS'."_".uniqid().".xlsx";
$writer = new Xlsx($classeur);
$writer->save($fichier);
$t_html =' <div class="alert alert-success"> ';
$t_html .=' <a style="font-size:15pt;" href="'.$fichier.'" target="_blank" > '._("TELECHARGER").' </a> ';
$t_html .=' </div ';
echo $t_html;
exit();
}
public function importermodele()
{
$idTarif = $this->requete->getParametreFormulaire("idTarif");
$codeTarifMedicament = $this->requete->getParametreFormulaire("codeTarifMedicament");
$cheminFichier = $this->requete->getParametreFormulaire("cheminFichier");
$erreurImport="0";
$this->tarif->initIinsererLigneModeleTarif($codeTarifMedicament);
$dataXLS = array();
$fichier = "Temp/import/".$cheminFichier;
if (!file_exists($fichier))
{
$erreurImport="1";
$this->genererVueAjax(array('message_erreur_excel' => "Fichier introubable sur le serveur !", 'succes_impot_execl' => "0"));
exit();
}
$docXLS = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$Excel = $docXLS->load($fichier);
$feuille = $Excel->getSheet($Excel->getFirstSheetIndex());
$derniereLigne = $feuille->getHighestRow();
$derniereColonne = $feuille->getHighestColumn();
$tableauExcel = $feuille->toArray(null, true, true, true);
for ($i = 2; $i <= $derniereLigne; $i++)
{
$codeMedicament = trim($tableauExcel[$i]['B']);
$prix = trim($tableauExcel[$i]['D']);
if ($prix<="0")
{
continue;
}
if ($codeMedicament<=" ")
{
$erreurImport="1";
$this->genererVueAjax(array('message_erreur_excel' => "Ligne " . $i ." => codeMedicament ne peut être vide !", 'succes_impot_execl' => "0"));
break;
exit();
}
// codeMedicament inexistant dans p_medicamentmodel et donc p_medicament
$codeMedicamentManquant = $this->tarif->getcodemedicamentmanquant($codeMedicament);
if ($codeMedicamentManquant=="0")
{
$erreurImport="1";
$this->genererVueAjax(array('message_erreur_excel' => "$codeMedicament inconnu! => ligne $i", 'succes_impot_execl' => "0"));
break;
exit();
}
$nbDoublon = $this->tarif->getdoubloncodemedicament($codeTarifMedicament, $codeMedicament);
if ($nbDoublon>"0")
{
$erreurImport="1";
$this->genererVueAjax(array('message_erreur_excel' => "$codeMedicament en doublon! => ligne $i", 'succes_impot_execl' => "0"));
break;
exit();
}
$this->tarif->insererLigneModeleTarif($codeTarifMedicament, $codeMedicament, $prix);
}
// s'il y a une quelquonque => Pas la peine de continuer
if ($erreurImport=="1")
{
$this->genererVueAjax(array('message_erreur_excel' => "Veuillez revoir votre fichier!", 'succes_impot_execl' => "0"));
exit();
}
else
{
// Si le nombre total de médicaments importé = 0 => Pas la peine de continuer
$nbMedocImportes = $this->tarif->nombremedocsimportes();
if ($nbMedocImportes==0)
{
$erreurImport="1";
$this->genererVueAjax(array('message_erreur_excel' => "Liste vide. Veuillez revoir votre fichier!", 'succes_impot_execl' => "0"));
exit();
}
else
{
$this->genererVueAjax(array('message_erreur_excel' => "Fichier temporaire extrait du serveur avec succes!", 'succes_impot_execl' => "1"));
exit();
}
}
}
//
public function incorporermedicamentsimportes()
{
$this->tarif->incorporermedicamentsimportes();
// $this->genererVueAjax();
}
public function majetape()
{
$codeTarifMedicament = $this->requete->getParametreFormulaire("codeTarifMedicament");
$this->tarif->majetape($codeTarifMedicament);
}
}