3001 lines
149 KiB
PHP
3001 lines
149 KiB
PHP
<?php
|
|
namespace OCA\Gestion\Db;
|
|
|
|
use OCA\Gestion\Helpers\DateHelpers;
|
|
use OCP\IDBConnection;
|
|
use OCP\IL10N;
|
|
use \Datetime;
|
|
use OCA\Gestion\Constants\ProductConstant;
|
|
use OCA\Gestion\Helpers\FileExportHelpers;
|
|
use Psr\Log\LoggerInterface;
|
|
use OCA\Gestion\Helpers\VCalendarHelpers;
|
|
|
|
class Bdd {
|
|
private String $charset = 'utf8mb4';
|
|
|
|
public const DEFAULT_CALENDAR_UUID_FOR_DEVIS = "not-related";
|
|
public const CALENDAR_TABLE_PREFIX = "*PREFIX*";
|
|
public const DEFAULT_CLIENT_GROUP_NAME = "Nom du groupe";
|
|
private IDbConnection $pdo;
|
|
private array $whiteColumn;
|
|
private array $whiteTable;
|
|
private String $tableprefix;
|
|
private $l;
|
|
|
|
/** @var LoggerInterface */
|
|
private $logger;
|
|
|
|
public function __construct(IDbConnection $db, IL10N $l, LoggerInterface $logger) {
|
|
$this->whiteColumn = array("date", "num", "id_client", "id_thanato", "entreprise", "nom", "prenom", "legal_one", "telephone", "mail", "adresse", "produit_id",
|
|
"quantite", "date_paiement", "type_paiement", "id_devis", "reference", "description", "prix_unitaire", "legal_two", "path", "tva_default", "coefficient_ik",
|
|
"mentions_default", "version", "mentions", "comment", "status_paiement", "devise", "auto_invoice_number", "changelog", "format", "comment", "user_id",
|
|
"facture_prefixe", "arrivee", "depart", "latitude", "longitude", "id_lieu", "rang", "mois", "annee", "id_trajet", "commentaire","source",
|
|
"date_habilitation", "sexe", "observations_generales", "ref_pacemaker", "id_defunt", "article_id", "corpulence",
|
|
"date_naissance", "heure_debut", "heure_fin", "rigidite", "lividite", "observations_corps", "acces", "acces_recherche", "acces_etat",
|
|
"injection", "injection_diffusion", "injection_qte", "preinjection", "preinjection_qte", "coinjection", "coinjection_qte",
|
|
"drainage", "drainage_qte", "drainage_etat", "ponction", "ponction_qte", "cavite", "cavite_qte", "desinfection", "lavage",
|
|
"rasage", "presentation_cosmetique", "presentation_sur", "hypodermiques", "hypodermiques_sur", "local", "local_sur", "contenu",
|
|
"commentaire", "designation", "hypodermiques_text1", "hypodermiques_text2", "qte", "endroit",
|
|
"fk_client_group_id","fk_produit_id","ht_amount","client_group_name");
|
|
$this->whiteTable = array(
|
|
"client", "lieu", "trajet", "devis", "produit_devis", "facture", "produit", "configuration", "ligne_trajet", "thanato", "article", "defunt", "article_devis", "bibliotheque", "bijou_defunt", "obs_defunt", "hypo_defunt",
|
|
"client_group_discount","client_group");
|
|
$this->tableprefix = '*PREFIX*' ."gestion_";
|
|
$this->pdo = $db;
|
|
$this->l = $l;
|
|
$this->logger = $logger;
|
|
}
|
|
|
|
public function getConfiguration($idNextcloud){
|
|
$sql = "SELECT * FROM `".$this->tableprefix."configuration` WHERE id_nextcloud = ?";
|
|
return $this->execSQL($sql, array($idNextcloud));
|
|
}
|
|
|
|
public function getTotalDevis($iddevis, $idNextcloud) {
|
|
$articles = json_decode($this->getListArticle($iddevis, $idNextcloud));
|
|
$produits = json_decode($this->getListProduit($iddevis, $idNextcloud));
|
|
$total=0;
|
|
foreach($articles as $key => $article) {
|
|
$total += $article->prix_unitaire*$article->quantite;
|
|
}
|
|
foreach($produits as $key => $produit) {
|
|
$total += $produit->prix_unitaire*$produit->quantite;
|
|
}
|
|
return $total;
|
|
}
|
|
|
|
public function getClients($idNextcloud){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."client;";
|
|
|
|
$clients = $this->execSQLNoJsonReturn($sql,[]);
|
|
foreach($clients as &$client){
|
|
if($client['fk_client_group_id'] == null){
|
|
$client['client_group_name'] = '';
|
|
}
|
|
else{
|
|
$clientGroup = $this->getClientGroupById($client['fk_client_group_id']);
|
|
$client['client_group_name'] = $clientGroup != null ? $clientGroup['client_group_name'] : '';
|
|
}
|
|
}
|
|
return json_encode($clients);
|
|
}
|
|
|
|
private function getClientGroupById($clientGroupId){
|
|
$sql = "SELECT *
|
|
FROM ".$this->tableprefix."client_group as client_group
|
|
WHERE client_group.id = ? ;";
|
|
|
|
$clientGroup = $this->execSQLNoJsonReturn($sql, array($clientGroupId));
|
|
if(!empty($clientGroup)){
|
|
return $clientGroup[0];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getClientsName(){
|
|
$sql = "SELECT client.nom, client.prenom, client.id
|
|
FROM ".$this->tableprefix."client as client
|
|
ORDER BY client.id DESC";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getClient($id,$idNextcloud){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."client WHERE id = ?";
|
|
return $this->execSQL($sql, array($id));
|
|
}
|
|
|
|
public function getClientbyiddevis($id, $idNextcloud){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."devis as d, ".$this->tableprefix."client as c WHERE d.id_client = c.id AND d.id = ?";
|
|
return $this->execSQL($sql, array($id));
|
|
}
|
|
|
|
public function getThanatopracteurs($idNextcloud){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."thanato;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getThanatoByIds(array $thanatoIds){
|
|
if(empty($thanatoIds)){
|
|
return [];
|
|
}
|
|
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count($thanatoIds), '?'));
|
|
|
|
$sql = "SELECT
|
|
thanato.id,
|
|
thanato.nom as thanato_nom,
|
|
thanato.prenom as thanato_prenom
|
|
FROM ".$this->tableprefix."thanato as thanato
|
|
WHERE thanato.id IN ($sqlConditionsPlaceholder)";
|
|
$thanatoList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
$thanatoIds);
|
|
|
|
return $thanatoList;
|
|
}
|
|
|
|
public function getBibliotheques($idNextcloud) {
|
|
$sql = "SELECT * FROM ".$this->tableprefix."bibliotheque;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getTrajets($idNextcloud) {
|
|
// $sql_delete = "DELETE FROM ".$this->tableprefix."ligne_trajet";
|
|
// $this->execSQL($sql_delete, array());
|
|
// $sql_delete = "DELETE FROM ".$this->tableprefix."trajet";
|
|
// $this->execSQL($sql_delete, array());
|
|
$sql = "SELECT trajet.id, trajet.mois, trajet.annee, trajet.distance, trajet.id_nextcloud, trajet.user_id,
|
|
thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato
|
|
FROM ".$this->tableprefix."trajet as trajet
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on trajet.id_thanato = thanato.id
|
|
ORDER BY trajet.annee DESC, trajet.mois DESC;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getTrajetById($numtrajet, $idNextcloud) {
|
|
$sql = "SELECT trajet.id, trajet.mois, trajet.annee, trajet.distance, trajet.id_nextcloud, trajet.user_id,
|
|
thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato
|
|
FROM ".$this->tableprefix."trajet as trajet
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on trajet.id_thanato = thanato.id
|
|
WHERE trajet.id = ?";
|
|
return $this->execSQL($sql, array($numtrajet));
|
|
}
|
|
|
|
public function getTrajetsdetails($numtrajet, $idNextcloud) {
|
|
$sql = "SELECT ligne_trajet.id, ligne_trajet.rang, ligne_trajet.id_nextcloud, ligne_trajet.date, ligne_trajet.user_id, ligne_trajet.commentaire, ligne_trajet.source,
|
|
lieu.id as lid, lieu.nom as lieu, lieu.latitude as latitude, lieu.longitude as longitude,
|
|
devis.id as did, devis.num as dnum, client_devis.nom as dnom, client_devis.prenom as dprenoms, devis.id_nextcloud as didnextcloud,
|
|
defunt.nom as nom_defunt,
|
|
client.nom as cnom, client.id as cid, client.prenom as cprenoms
|
|
FROM (".$this->tableprefix."ligne_trajet as ligne_trajet
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on ligne_trajet.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."devis as devis on ligne_trajet.id_devis = devis.id
|
|
LEFT JOIN ".$this->tableprefix."client as client_devis on devis.id_client = client_devis.id
|
|
LEFT JOIN ".$this->tableprefix."client as client on ligne_trajet.id_client = client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
|
) WHERE ligne_trajet.id_trajet = ? ORDER BY ligne_trajet.rang ASC;";
|
|
return $this->execSQL($sql, array($numtrajet));
|
|
}
|
|
|
|
public function getTrajetsdetails_orderByDate($numtrajet, $idNextcloud) {
|
|
$sql = "SELECT ligne_trajet.id, ligne_trajet.rang, ligne_trajet.id_nextcloud, ligne_trajet.date, ligne_trajet.user_id, ligne_trajet.commentaire, ligne_trajet.source,
|
|
lieu.id as lid, lieu.nom as lieu, lieu.latitude as latitude, lieu.longitude as longitude,
|
|
client.nom as cnom, client.id as cid, client.prenom as cprenoms
|
|
FROM (".$this->tableprefix."ligne_trajet as ligne_trajet
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on ligne_trajet.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."client as client on ligne_trajet.id_client = client.id)
|
|
WHERE ligne_trajet.id_trajet = ?
|
|
ORDER BY ligne_trajet.date ASC, ligne_trajet.rang ASC;";
|
|
return $this->execSQL($sql, array($numtrajet));
|
|
}
|
|
|
|
public function getOneTrajetdetails($id, $idNextcloud) {
|
|
$sql = "SELECT * FROM ".$this->tableprefix."ligne_trajet WHERE ".$this->tableprefix."ligne_trajet.id = ?;";
|
|
return $this->execSQL($sql, array($id));
|
|
}
|
|
|
|
public function getOneTrajetdetails_byIdDevis($id_devis, $idNextcloud) {
|
|
$sql = "SELECT * FROM ".$this->tableprefix."ligne_trajet WHERE ".$this->tableprefix."ligne_trajet.id_devis = ? AND ".$this->tableprefix."ligne_trajet.source LIKE 'devis';";
|
|
return $this->execSQL($sql, array($id_devis));
|
|
}
|
|
|
|
public function getOneTrajetdetails_byRang($id_trajet, $rang, $idNextcloud) {
|
|
$sql = "SELECT * FROM ".$this->tableprefix."ligne_trajet WHERE ".$this->tableprefix."ligne_trajet.id_trajet = ? AND ".$this->tableprefix."ligne_trajet.rang = ?;";
|
|
return $this->execSQL($sql, array($id_trajet, $rang));
|
|
}
|
|
|
|
public function getOneTrajet($id, $idNextcloud) {
|
|
$sql = "SELECT trajet.id, trajet.mois, trajet.annee, trajet.distance, trajet.id_nextcloud, trajet.user_id,
|
|
thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato
|
|
FROM ".$this->tableprefix."trajet as trajet
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on trajet.id_thanato = thanato.id
|
|
WHERE trajet.id = ".$id." ORDER BY trajet.id DESC;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getLieux($idNextcloud){
|
|
$sql = "SELECT lieu.nom, lieu.adresse, lieu.latitude,lieu.longitude, lieu.user_id, lieu.id
|
|
FROM ".$this->tableprefix."lieu as lieu
|
|
ORDER BY lieu.id DESC";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getLieu($id,$idNextcloud){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."lieu WHERE id = ?";
|
|
return $this->execSQL($sql, array($id));
|
|
}
|
|
|
|
public function getDevis($idNextcloud){
|
|
$sql = "SELECT ".$this->tableprefix."devis.id, ".$this->tableprefix."devis.id as devisid, ".$this->tableprefix."devis.user_id,".$this->tableprefix."devis.id_nextcloud ,".$this->tableprefix."devis.comment ,"
|
|
.$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as cid, ".$this->tableprefix."client.id as id_client, "
|
|
.$this->tableprefix."client.adresse as adresse_cli,".$this->tableprefix."client.mail as mail_cli,".$this->tableprefix."client.telephone as telephone_cli,".$this->tableprefix."client.legal_one as legalone_cli,"
|
|
.$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, ".$this->tableprefix."thanato.id as tid, "
|
|
.$this->tableprefix."devis.num, ".$this->tableprefix."devis.date, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.mentions, "
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,".$this->tableprefix."devis.id_lieu, "
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt, "
|
|
.$this->tableprefix."devis.devis_full_number as devis_full_number
|
|
FROM (".$this->tableprefix."devis
|
|
LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id
|
|
LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."thanato on id_thanato = ".$this->tableprefix."thanato.id
|
|
LEFT JOIN ".$this->tableprefix."lieu on id_lieu = ".$this->tableprefix."lieu.id
|
|
) ORDER BY ".$this->tableprefix."devis.id DESC, ".$this->tableprefix."devis.date DESC;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getDevisWithProduits($idNextcloud){
|
|
$devis = $this->getDevis($idNextcloud);
|
|
$devisList = json_decode($devis);
|
|
foreach($devisList as $currentDevis){
|
|
$produits = $this->getProduitsDevisByDevisId($currentDevis->devisid);
|
|
$currentDevis->produits = $produits;
|
|
}
|
|
return json_encode($devisList);
|
|
}
|
|
|
|
public function getDevisEmmanuelle($idNextcloud){
|
|
$sql = "SELECT ".$this->tableprefix."devis.id, ".$this->tableprefix."devis.id as devisid, ".$this->tableprefix."devis.user_id,".$this->tableprefix."devis.id_nextcloud ,".$this->tableprefix."devis.comment ,"
|
|
.$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as cid, ".$this->tableprefix."client.id as id_client, "
|
|
.$this->tableprefix."client.adresse as adresse_cli,".$this->tableprefix."client.mail as mail_cli,".$this->tableprefix."client.telephone as telephone_cli,".$this->tableprefix."client.legal_one as legalone_cli,"
|
|
.$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, ".$this->tableprefix."thanato.id as tid, "
|
|
.$this->tableprefix."devis.num, ".$this->tableprefix."devis.date, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.mentions, "
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,".$this->tableprefix."devis.id_lieu, "
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt
|
|
FROM (".$this->tableprefix."devis
|
|
LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."thanato on id_thanato = ".$this->tableprefix."thanato.id
|
|
LEFT JOIN ".$this->tableprefix."lieu on id_lieu = ".$this->tableprefix."lieu.id
|
|
LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id
|
|
) WHERE LOWER(".$this->tableprefix."devis.id_nextcloud) LIKE 'emmanuelle' ORDER BY ".$this->tableprefix."devis.id DESC, ".$this->tableprefix."devis.date DESC;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getDevisDelphine($idtrajetdetails, $idNextcloud) {
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails($idtrajetdetails, $idNextcloud))[0];
|
|
$sql = "SELECT ".$this->tableprefix."devis.id, ".$this->tableprefix."devis.user_id,".$this->tableprefix."devis.id_nextcloud ,"
|
|
.$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as cid, "
|
|
.$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, ".$this->tableprefix."thanato.id as tid, "
|
|
.$this->tableprefix."devis.num, ".$this->tableprefix."devis.date, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.mentions, "
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."devis.id_lieu
|
|
FROM (".$this->tableprefix."devis
|
|
LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."thanato on id_thanato = ".$this->tableprefix."thanato.id
|
|
LEFT JOIN ".$this->tableprefix."lieu on id_lieu = ".$this->tableprefix."lieu.id
|
|
) WHERE LOWER(".$this->tableprefix."devis.id_nextcloud) LIKE 'delphine'
|
|
AND ".$this->tableprefix."devis.date LIKE '".$ligne_trajet->date."'";
|
|
|
|
if($ligne_trajet->id_client != NULL) $sql = $sql." AND ".$this->tableprefix."devis.id_client = ".$ligne_trajet->id_client;
|
|
if($ligne_trajet->id_lieu != NULL) $sql = $sql." AND ".$this->tableprefix."devis.id_lieu = ".$ligne_trajet->id_lieu;
|
|
|
|
$sql = $sql." ORDER BY ".$this->tableprefix."devis.id DESC, ".$this->tableprefix."devis.date DESC;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getFactures($idNextcloud){
|
|
$sql = "SELECT ".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, "
|
|
.$this->tableprefix."devis.num as dnum, ".$this->tableprefix."devis.comment as dcomment, date_paiement, type_paiement, id_devis, entreprise, "
|
|
.$this->tableprefix."facture.version, status_paiement,"
|
|
.$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, ".$this->tableprefix."client.id as id_cli, "
|
|
.$this->tableprefix."client.adresse as adresse_cli,".$this->tableprefix."client.mail as mail_cli,".$this->tableprefix."client.telephone as telephone_cli,".$this->tableprefix."client.legal_one as legalone_cli,"
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt,"
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,".$this->tableprefix."devis.id_lieu
|
|
FROM (".$this->tableprefix."facture
|
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id)
|
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id
|
|
ORDER BY ".$this->tableprefix."facture.id DESC, ".$this->tableprefix."facture.date_paiement DESC";
|
|
$result = $this->execSQL($sql, array());
|
|
return $result;
|
|
}
|
|
|
|
public function getFacturesWithProduits($idNextCloud){
|
|
$factures = $this->getFactures($idNextCloud);
|
|
$facturesList = json_decode($factures);
|
|
foreach($facturesList as $currentFacture){
|
|
$produits = $this->getProduitsDevisByDevisId($currentFacture->id_devis);
|
|
$currentFacture->produits = $produits;
|
|
}
|
|
return json_encode($facturesList);
|
|
}
|
|
|
|
public function getCurrentMonthFactures_byClient($idNextcloud, $date, $idclient) {
|
|
$sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,"
|
|
.$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, "
|
|
.$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, "
|
|
.$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, "
|
|
.$this->tableprefix."client.mail as mail_client, "
|
|
.$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, "
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,"
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt,"
|
|
.$this->tableprefix."facture.version, status_paiement
|
|
FROM (".$this->tableprefix."facture
|
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id)
|
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
|
WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]."
|
|
AND ".$this->tableprefix."client.id = ".$idclient." ORDER BY year DESC, month DESC;";
|
|
// $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
// WHERE YEAR(".$this->tableprefix."facture.date_paiement) = YEAR(CURRENT_DATE) AND MONTH(".$this->tableprefix."facture.date_paiement) = MONTH(CURRENT_DATE)
|
|
// ORDER BY year DESC, month DESC;";
|
|
// $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
// ORDER BY year DESC, month DESC;";
|
|
$result = $this->execSQL($sql, array());
|
|
return $result;
|
|
}
|
|
|
|
public function getCurrentMonthFactures($idNextcloud, $date) {
|
|
$sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,"
|
|
.$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, "
|
|
.$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, "
|
|
.$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, "
|
|
.$this->tableprefix."client.mail as mail_client, "
|
|
.$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, "
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,"
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt,"
|
|
.$this->tableprefix."facture.version, status_paiement
|
|
FROM (".$this->tableprefix."facture
|
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id)
|
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
|
WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]."
|
|
ORDER BY year DESC, month DESC;";
|
|
// $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
// WHERE YEAR(".$this->tableprefix."facture.date_paiement) = YEAR(CURRENT_DATE) AND MONTH(".$this->tableprefix."facture.date_paiement) = MONTH(CURRENT_DATE)
|
|
// ORDER BY year DESC, month DESC;";
|
|
// $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
// ORDER BY year DESC, month DESC;";
|
|
$result = $this->execSQL($sql, array());
|
|
return $result;
|
|
}
|
|
|
|
public function getCurrentMonthFactures_COGF($idNextcloud, $date) {
|
|
$sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,"
|
|
.$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, "
|
|
.$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, "
|
|
.$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, "
|
|
.$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, "
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin,"
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt,"
|
|
.$this->tableprefix."facture.version, status_paiement
|
|
FROM (".$this->tableprefix."facture
|
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id)
|
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
|
WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]." AND LOWER(".$this->tableprefix."client.entreprise) LIKE LOWER('COGF')
|
|
ORDER BY year DESC, month DESC;";
|
|
|
|
// $sql = "SELECT YEAR(".$this->tableprefix."facture.date_paiement) AS year, MONTH(".$this->tableprefix."facture.date_paiement) AS month,".$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, ".$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, nom, prenom, entreprise, ".$this->tableprefix."facture.version, status_paiement FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
// WHERE LOWER(".$this->tableprefix."client.entreprise) LIKE LOWER('COGF')
|
|
// ORDER BY year DESC, month DESC;";
|
|
|
|
$result = $this->execSQL($sql, array());
|
|
return $result;
|
|
}
|
|
|
|
public function getCurrentMonthTrajet($idNextcloud, $date) {
|
|
$sql = "SELECT t.id_nextcloud, t.date, t.distance, depart.nom as lieu_depart, arrivee.nom as lieu_arrivee,
|
|
depart_c.nom as depart_cnom, depart_c.prenom as depart_cprenoms, arrivee_c.nom as arrivee_cnom, arrivee_c.prenom as arrivee_cprenoms,
|
|
thanato.id as id_thanato, thanato.nom as nom_thanato, thanato.prenom as prenom_thanato
|
|
FROM ".$this->tableprefix."trajet t
|
|
INNER JOIN ".$this->tableprefix."lieu depart ON t.id_lieu_depart = depart.id
|
|
INNER JOIN ".$this->tableprefix."lieu arrivee ON t.id_lieu_arrivee = arrivee.id
|
|
INNER JOIN ".$this->tableprefix."client depart_c ON depart.id_client = depart_c.id
|
|
INNER JOIN ".$this->tableprefix."client arrivee_c ON arrivee.id_client = arrivee_c.id
|
|
WHERE MONTH(t.date) = ".explode('-', $date)[1].";";
|
|
|
|
$result = $this->execSQL($sql, array());
|
|
return $result;
|
|
}
|
|
|
|
public function getOneFacture($numfacture, $idNextcloud){
|
|
// $sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, ".$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, nom, prenom, entreprise FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id AND ".$this->tableprefix."facture.id_nextcloud = ".$this->tableprefix."devis.id_nextcloud) LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id AND ".$this->tableprefix."devis.id_nextcloud = ".$this->tableprefix."client.id_nextcloud WHERE ".$this->tableprefix."facture.id = ? AND ".$this->tableprefix."facture.id_nextcloud = ?";
|
|
$sql = "SELECT ".$this->tableprefix."facture.id," . $this->tableprefix . "facture.version," . $this->tableprefix . "facture.num, "
|
|
.$this->tableprefix."facture.date, ".$this->tableprefix."devis.num as dnum, comment, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom, prenom, entreprise,"
|
|
.$this->tableprefix."devis.comment as dcomment,".$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin,"
|
|
.$this->tableprefix."defunt.nom as nom_defunt
|
|
FROM (".$this->tableprefix."facture
|
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id
|
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id)
|
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
|
WHERE ".$this->tableprefix."facture.id = ?";
|
|
// return $this->execSQL($sql, array($numfacture, $idNextcloud));
|
|
return $this->execSQL($sql, array($numfacture));
|
|
}
|
|
|
|
public function getProduits($idNextcloud){
|
|
$sql = "SELECT *
|
|
FROM ".$this->tableprefix."produit ORDER BY id DESC;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
private function getThanatoByIdNextcloud($idNextcloud){
|
|
$sql = "SELECT *
|
|
FROM ".$this->tableprefix."thanato as thanato
|
|
WHERE LOWER(thanato.nom) = LOWER(?)
|
|
ORDER BY thanato.id ASC;";
|
|
|
|
$thanato = $this->execSQLNoJsonReturn($sql, array($idNextcloud));
|
|
if(!empty($thanato)){
|
|
return $thanato[0];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private function getDefuntIdsRelatedToThanato($thanatoId){
|
|
$devis = $this->getDevisMadeByAThanato($thanatoId);
|
|
$defuntIds = $this->getDefuntIdsFromDevisList($devis);
|
|
return $defuntIds;
|
|
}
|
|
|
|
private function getDefuntIdsFromDevisList($devisList){
|
|
$defuntIds = [];
|
|
foreach($devisList as $devis){
|
|
$defuntIds[] = $devis["id_defunt"];
|
|
}
|
|
return $defuntIds;
|
|
}
|
|
|
|
private function getDevisMadeByAThanato($thanatoId){
|
|
$sql = "SELECT
|
|
devis.id,
|
|
devis.id_thanato,
|
|
devis.id_defunt
|
|
FROM ".$this->tableprefix."devis as devis
|
|
WHERE devis.id_thanato = ? ;";
|
|
|
|
$devisList = $this->execSQLNoJsonReturn($sql, array($thanatoId));
|
|
return $devisList;
|
|
}
|
|
|
|
public function getDefunts($idNextcloud, $isUserThanatoOnly = false)
|
|
{
|
|
$sql = "SELECT ".$this->tableprefix."defunt.id, ".$this->tableprefix."defunt.nom, ".$this->tableprefix."defunt.date_naissance, ".$this->tableprefix."defunt.ref_pacemaker, ".$this->tableprefix."defunt.sexe, "
|
|
.$this->tableprefix."client.nom as nom_client, ".$this->tableprefix."client.id as id_client, "
|
|
.$this->tableprefix."devis.num as numero_devis, ".$this->tableprefix."devis.id as id_devis, ".$this->tableprefix."devis.user_id as user_id, "
|
|
.$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu
|
|
FROM ".$this->tableprefix."defunt
|
|
LEFT JOIN ".$this->tableprefix."devis ON ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
|
LEFT JOIN ".$this->tableprefix."client ON ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."lieu ON ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id";
|
|
|
|
$conditions = [];
|
|
if($isUserThanatoOnly){
|
|
$thanato = $this->getThanatoByIdNextcloud($idNextcloud);
|
|
if($thanato == null){
|
|
return json_encode([]);
|
|
}
|
|
$thanatoId = $thanato["id"];
|
|
$defuntsIdRelatedToThanato = $this->getDefuntIdsRelatedToThanato($thanatoId);
|
|
if(empty($defuntsIdRelatedToThanato)){
|
|
return json_encode([]);
|
|
}
|
|
$defuntListConditionPlaceholder = implode(',', array_fill(0, count($defuntsIdRelatedToThanato), '?'));
|
|
$conditions = $defuntsIdRelatedToThanato;
|
|
$sql .= " WHERE ".$this->tableprefix."defunt.id IN ($defuntListConditionPlaceholder)";
|
|
}
|
|
$sql .= " ORDER BY ".$this->tableprefix."defunt.id DESC;";
|
|
|
|
$defuntsList = $this->execSQLNoJsonReturn($sql,$conditions);
|
|
foreach($defuntsList as &$defunt){
|
|
$defunt["product_cover_description"] = null;
|
|
$defuntHasDevis = $defunt["id_devis"] != null;
|
|
if($defuntHasDevis){
|
|
$productCover = $this->getProductCoverByDevisId($defunt["id_devis"]);
|
|
if($productCover != null){
|
|
$defunt["product_cover_description"] = $productCover["description"];
|
|
}
|
|
}
|
|
}
|
|
return json_encode($defuntsList);
|
|
}
|
|
|
|
public function getUnusedDefunts($idNextcloud) {
|
|
$sql = "SELECT ".$this->tableprefix."defunt.id, ".$this->tableprefix."defunt.nom, ".$this->tableprefix."defunt.date_naissance, ".$this->tableprefix."defunt.ref_pacemaker, ".$this->tableprefix."defunt.sexe,"
|
|
.$this->tableprefix."devis.user_id as user_id
|
|
FROM ".$this->tableprefix."defunt
|
|
LEFT JOIN ".$this->tableprefix."devis ON ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
|
WHERE ".$this->tableprefix."devis.id_defunt IS NULL
|
|
ORDER BY ".$this->tableprefix."defunt.id DESC;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getOneDevis($numdevis,$idNextcloud){
|
|
$sql = "SELECT ".$this->tableprefix."devis.id as devisid, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.comment, ".$this->tableprefix."devis.date, num,"
|
|
.$this->tableprefix."devis.id_nextcloud as didnextcloud,".$this->tableprefix."devis.id_client, id_lieu, id_thanato,"
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt,"
|
|
.$this->tableprefix."client.id as clientid, ".$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, legal_one, entreprise, telephone, mail, ".$this->tableprefix."client.adresse,"
|
|
.$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin ,"
|
|
.$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato
|
|
FROM ".$this->tableprefix."devis
|
|
LEFT JOIN ".$this->tableprefix."client on id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt on id_defunt = ".$this->tableprefix."defunt.id
|
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
|
LEFT JOIN ".$this->tableprefix."thanato on ".$this->tableprefix."devis.id_thanato = ".$this->tableprefix."thanato.id
|
|
WHERE ".$this->tableprefix."devis.id = ?";
|
|
return $this->execSQL($sql, array($numdevis));
|
|
}
|
|
|
|
public function getOneDefunt($numdefunt,$idNextcloud,$includeDefuntProductCover = false){
|
|
$sql = "SELECT ".$this->tableprefix."defunt.id, ".$this->tableprefix."devis.version, ".$this->tableprefix."devis.comment, ".$this->tableprefix."devis.date, num,"
|
|
.$this->tableprefix."devis.id as id_devis,".$this->tableprefix."devis.id_client, id_lieu, id_thanato,".$this->tableprefix."devis.user_id as user_id, "
|
|
.$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt,".$this->tableprefix."defunt.date_naissance,".$this->tableprefix."defunt.sexe,".$this->tableprefix."defunt.ref_pacemaker,"
|
|
.$this->tableprefix."defunt.date as date_defunt,"
|
|
.$this->tableprefix."defunt.heure_debut,"
|
|
.$this->tableprefix."defunt.heure_fin,"
|
|
.$this->tableprefix."defunt.corpulence,"
|
|
.$this->tableprefix."defunt.rigidite,"
|
|
.$this->tableprefix."defunt.lividite,"
|
|
.$this->tableprefix."defunt.observations_corps,"
|
|
.$this->tableprefix."defunt.acces,"
|
|
.$this->tableprefix."defunt.acces_recherche,"
|
|
.$this->tableprefix."defunt.acces_etat,"
|
|
.$this->tableprefix."defunt.injection,"
|
|
.$this->tableprefix."defunt.injection_diffusion,"
|
|
.$this->tableprefix."defunt.injection_qte,"
|
|
.$this->tableprefix."defunt.preinjection,"
|
|
.$this->tableprefix."defunt.preinjection_qte,"
|
|
.$this->tableprefix."defunt.coinjection,"
|
|
.$this->tableprefix."defunt.coinjection_qte,"
|
|
.$this->tableprefix."defunt.drainage,"
|
|
.$this->tableprefix."defunt.drainage_qte,"
|
|
.$this->tableprefix."defunt.drainage_etat,"
|
|
.$this->tableprefix."defunt.ponction,"
|
|
.$this->tableprefix."defunt.ponction_qte,"
|
|
.$this->tableprefix."defunt.cavite,"
|
|
.$this->tableprefix."defunt.cavite_qte,"
|
|
.$this->tableprefix."defunt.desinfection,"
|
|
.$this->tableprefix."defunt.lavage,"
|
|
.$this->tableprefix."defunt.rasage,"
|
|
.$this->tableprefix."defunt.presentation_cosmetique,"
|
|
.$this->tableprefix."defunt.presentation_sur,"
|
|
.$this->tableprefix."defunt.observations_generales,"
|
|
.$this->tableprefix."client.id as clientid, ".$this->tableprefix."client.nom, ".$this->tableprefix."client.prenom, legal_one, entreprise, telephone, mail, ".$this->tableprefix."client.adresse,"
|
|
.$this->tableprefix."lieu.nom as lieu, ".$this->tableprefix."lieu.adresse as adresse_soin ,"
|
|
.$this->tableprefix."thanato.nom as nom_thanato, ".$this->tableprefix."thanato.prenom as prenom_thanato, "
|
|
.$this->tableprefix."thanato.date_habilitation, "
|
|
.$this->tableprefix."thanato.reference as reference_habilitation, "
|
|
.$this->tableprefix."lieu.adresse as adresse_lieu, "
|
|
.$this->tableprefix."lieu.nom as nom_lieu
|
|
FROM ".$this->tableprefix."defunt
|
|
LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
|
LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id
|
|
LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id
|
|
LEFT JOIN ".$this->tableprefix."thanato on ".$this->tableprefix."devis.id_thanato = ".$this->tableprefix."thanato.id
|
|
WHERE ".$this->tableprefix."defunt.id = ?";
|
|
|
|
$defunts = $this->execSQLNoJsonReturn($sql,[$numdefunt]);
|
|
if($includeDefuntProductCover){
|
|
foreach($defunts as &$defunt){
|
|
$defunt["product_cover_id"] = null;
|
|
$defuntHasDevis = $defunt["id_devis"] != null;
|
|
if($defuntHasDevis){
|
|
$productCover = $this->getProductCoverByDevisId($defunt["id_devis"]);
|
|
if($productCover != null){
|
|
$defunt["product_cover_id"] = $productCover["produit_id"];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return json_encode($defunts);
|
|
}
|
|
|
|
public function getListProduit($numdevis, $idNextcloud){
|
|
$sql = "SELECT ".
|
|
$this->tableprefix."produit.id as pid,"
|
|
.$this->tableprefix."produit_devis.id as pdid, reference, description,"
|
|
.$this->tableprefix."produit_devis.comment, quantite, prix_unitaire, "
|
|
.$this->tableprefix."devis.id_client
|
|
FROM ".$this->tableprefix."produit, ".$this->tableprefix."devis, ".$this->tableprefix."produit_devis
|
|
WHERE ".$this->tableprefix."produit.id = produit_id AND ".$this->tableprefix."devis.id = devis_id AND ".$this->tableprefix."devis.id = ?";
|
|
|
|
$produits = $this->execSQLNoJsonReturn($sql,[$numdevis]);
|
|
|
|
if(!empty($produits)){
|
|
$clientId = $produits[0]["id_client"];
|
|
$client = $this->getClientById($clientId);
|
|
foreach($produits as &$produit){
|
|
$productPrice = $this->getProductPriceByClientGroupId($client['fk_client_group_id'],$produit['pid']);
|
|
$produit['prix_unitaire'] = $productPrice ?? $produit['prix_unitaire'];
|
|
}
|
|
}
|
|
return json_encode($produits);
|
|
}
|
|
|
|
public function getListArticle($numdevis, $idNextcloud) {
|
|
$sql = "SELECT ".$this->tableprefix."article.id as aid,".$this->tableprefix."article_devis.id as adid, reference, description,".$this->tableprefix."article_devis.comment, quantite, prix_unitaire FROM ".$this->tableprefix."article, ".$this->tableprefix."devis, ".$this->tableprefix."article_devis WHERE ".$this->tableprefix."article.id = article_id AND ".$this->tableprefix."devis.id = devis_id AND ".$this->tableprefix."devis.id = ?";
|
|
return $this->execSQL($sql, array($numdevis));
|
|
}
|
|
|
|
public function getArticles($idNextcloud){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."article";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
private function getFunctionCall(){
|
|
$trace = debug_backtrace();
|
|
return $trace[2]['function'];
|
|
}
|
|
|
|
public function getListObservations($numdefunt, $idNextcloud) {
|
|
$sql = "SELECT ".$this->tableprefix."obs_defunt.id as odid, designation, commentaire FROM "
|
|
.$this->tableprefix."obs_defunt, ".$this->tableprefix."defunt
|
|
WHERE ".$this->tableprefix."defunt.id = defunt_id AND ".$this->tableprefix."defunt.id = ?";
|
|
return $this->execSQL($sql, array($numdefunt));
|
|
}
|
|
|
|
public function getListBijoux($numdefunt, $idNextcloud) {
|
|
$sql = "SELECT ".$this->tableprefix."bijou_defunt.id as bdid, designation, commentaire FROM "
|
|
.$this->tableprefix."bijou_defunt, ".$this->tableprefix."defunt
|
|
WHERE ".$this->tableprefix."defunt.id = defunt_id AND ".$this->tableprefix."defunt.id = ?";
|
|
return $this->execSQL($sql, array($numdefunt));
|
|
}
|
|
|
|
public function getListHypodermiques($numdefunt, $idNextcloud) {
|
|
$sql = "SELECT ".$this->tableprefix."hypo_defunt.id as hdid, designation, qte, endroit FROM "
|
|
.$this->tableprefix."hypo_defunt, ".$this->tableprefix."defunt
|
|
WHERE ".$this->tableprefix."defunt.id = defunt_id AND ".$this->tableprefix."defunt.id = ?";
|
|
return $this->execSQL($sql, array($numdefunt));
|
|
}
|
|
|
|
/**
|
|
* INSERT client
|
|
* @$idnextcloud
|
|
*/
|
|
public function insertClient($idNextcloud){
|
|
$sql = "INSERT INTO `".$this->tableprefix."client` (`id_nextcloud`,`nom`,`prenom`,`legal_one`,`entreprise`,`telephone`,`mail`,`adresse`) VALUES (?,?,?,?,?,?,?,?)";
|
|
$this->execSQLNoData($sql,array($idNextcloud,
|
|
$this->l->t('Last name'),
|
|
$this->l->t('First name'),
|
|
$this->l->t('Limited company'),
|
|
$this->l->t('Company'),
|
|
$this->l->t('Phone number'),
|
|
$this->l->t('Email'),
|
|
$this->l->t('Address')
|
|
)
|
|
);
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
public function insertThanatopracteur($idNextcloud) {
|
|
$sql = "INSERT INTO `".$this->tableprefix."thanato` (`id_nextcloud`,`nom`,`prenom`,`reference`,`date_habilitation`) VALUES (?,?,?,?,NOW())";
|
|
$this->execSQLNoData($sql,array($idNextcloud,
|
|
$this->l->t('Last name'),
|
|
$this->l->t('First name'),
|
|
'reference',
|
|
)
|
|
);
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Insert lieu
|
|
*/
|
|
public function insertTrajet($id_thanato, $mois, $annee, $idNextcloud){
|
|
$last=0;
|
|
$last = $this->lastinsertid("trajet", $idNextcloud) + 1;
|
|
|
|
// $sql = "INSERT INTO `".$this->tableprefix."trajet` ( `id_nextcloud`,
|
|
// `date`,
|
|
// `annee`,
|
|
// `mois`,
|
|
// `id_client`,
|
|
// `id_lieu_depart`,
|
|
// `id_lieu_arrivee`,
|
|
// `distance`,
|
|
// `user_id`
|
|
// )
|
|
// VALUES (?,NOW(),?,?,0,0,0,0,?);";
|
|
$sql = "INSERT INTO `".$this->tableprefix."trajet` ( `id_nextcloud`,
|
|
`date`,
|
|
`annee`,
|
|
`mois`,
|
|
`distance`,
|
|
`id_thanato`,
|
|
`user_id`
|
|
)
|
|
VALUES (?,NOW(),?,?,0,?,?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,$annee, $mois, $id_thanato, $last));
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Insert lieu
|
|
*/
|
|
public function insertTrajetdetails($numtrajet, $idNextcloud){
|
|
$last=0;
|
|
$last = $this->lastinsertid("ligne_trajet", $idNextcloud) + 1;
|
|
|
|
$rang = $this->get_last_rang_trajetdetails($numtrajet, $idNextcloud);
|
|
|
|
$current_trajet = json_decode($this->getOneTrajet($numtrajet, $idNextcloud))[0];
|
|
|
|
$trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud));
|
|
|
|
$sql = "INSERT INTO `".$this->tableprefix."ligne_trajet` ( `id_nextcloud`,
|
|
`date`,
|
|
`id_devis`,
|
|
`id_lieu`,
|
|
`id_trajet`,
|
|
`rang`,
|
|
`commentaire`,
|
|
`source`,
|
|
`user_id`
|
|
)
|
|
VALUES (?,?,0,0,?,?,'','lieu',?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,$trajetdetails[sizeof($trajetdetails)-1]->date,$numtrajet,$rang+1,$last));
|
|
return true;
|
|
}
|
|
|
|
public function insertTrajetdetails_h2f($numtrajet, $date, $idNextcloud,$lieuSiege = "siege",$devisId = 0){
|
|
$lieuSiege = strtolower($lieuSiege);
|
|
$last=0;
|
|
$last = $this->lastinsertid("ligne_trajet", $idNextcloud) + 1;
|
|
|
|
$rang = $this->get_last_rang_trajetdetails($numtrajet, $idNextcloud);
|
|
|
|
$current_trajet = json_decode($this->getOneTrajet($numtrajet, $idNextcloud))[0];
|
|
|
|
$trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud));
|
|
|
|
$sql_h2f = "SELECT * FROM ".$this->tableprefix."lieu WHERE LOWER(".$this->tableprefix."lieu.nom) = ?";
|
|
$response_h2f = $this->execSQL($sql_h2f, array($lieuSiege));
|
|
$h2f = json_decode($response_h2f)[0];
|
|
|
|
$id_h2f = ($h2f!=NULL)?$h2f->id:0;
|
|
|
|
$sql = "INSERT INTO `".$this->tableprefix."ligne_trajet` ( `id_nextcloud`,
|
|
`date`,
|
|
`id_devis`,
|
|
`id_lieu`,
|
|
`id_trajet`,
|
|
`rang`,
|
|
`commentaire`,
|
|
`source`,
|
|
`user_id`
|
|
)
|
|
VALUES (?,?,?,?,?,?,'','siege',?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,$date,$devisId,$id_h2f,$numtrajet,$rang+1,$last));
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Insert lieu
|
|
*/
|
|
public function insertTrajetdetails_byDevis($numtrajet, $devis, $idNextcloud){
|
|
$last=0;
|
|
$last = $this->lastinsertid("ligne_trajet", $idNextcloud) + 1;
|
|
|
|
$rang = $this->get_last_rang_trajetdetails($numtrajet, $idNextcloud);
|
|
|
|
$current_trajet = json_decode($this->getOneTrajet($numtrajet, $idNextcloud))[0];
|
|
|
|
$trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud));
|
|
|
|
$id_client = ($devis->id_client != NULL)?$devis->id_client:0;
|
|
$id_lieu = ($devis->id_lieu != NULL)?$devis->id_lieu:0;
|
|
|
|
$sql = "INSERT INTO `".$this->tableprefix."ligne_trajet` ( `id_nextcloud`,
|
|
`date`,
|
|
`id_devis`,
|
|
`id_client`,
|
|
`id_lieu`,
|
|
`id_trajet`,
|
|
`rang`,
|
|
`commentaire`,
|
|
`source`,
|
|
`user_id`
|
|
)
|
|
VALUES (?,?,?,?,?,?,?,'','devis',?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,$devis->date,$devis->devisid,$id_client,$id_lieu,$numtrajet,$rang+1,$last));
|
|
return true;
|
|
}
|
|
|
|
public function get_last_rang_trajetdetails($numtrajet, $idNextcloud) {
|
|
$trajetdetails = json_decode($this->getTrajetsdetails($numtrajet, $idNextcloud));
|
|
$rang_max = 0;
|
|
foreach ($trajetdetails as $key => $details) {
|
|
if($rang_max<=$details->rang) $rang_max = $details->rang;
|
|
}
|
|
return $rang_max;
|
|
}
|
|
|
|
/**
|
|
* Insert Defunt
|
|
*/
|
|
public function insertDefunt($idNextcloud) {
|
|
$sql = "INSERT INTO `".$this->tableprefix."defunt` (
|
|
`id_nextcloud`, `nom`, `sexe`, `date_naissance`, `ref_pacemaker`, `date`,
|
|
`corpulence`, `observations_corps`, `observations_generales`
|
|
) VALUES (?,?,?,?,?,NOW(),?,?,?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud, 'Nom du défunt', 'm', '1973-11-11', 'Référence pacemaker', '', '', ''));
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Insert Defunt
|
|
*/
|
|
public function insertDefuntByName($name) {
|
|
$sql = "INSERT INTO `".$this->tableprefix."defunt` (
|
|
`id_nextcloud`, `nom`, `sexe`, `date_naissance`, `ref_pacemaker`, `date`,
|
|
`corpulence`, `observations_corps`, `observations_generales`
|
|
) VALUES (?,?,?,?,?,NOW(),?,?,?);";
|
|
$this->execSQLNoData($sql, array('admin',$name, 'm', '1973-11-11', 'Référence pacemaker', '', '', ''));
|
|
return true;
|
|
}
|
|
|
|
public function insertDefuntByNameAndReturnId($name) {
|
|
$this->insertDefuntByName($name);
|
|
return $this->getLastDefuntIdByName($name);
|
|
}
|
|
|
|
public function getLastDefuntIdByName( $name ) {
|
|
$sql = "SELECT max(id) as LAST_INSERT_ID
|
|
FROM ".$this->tableprefix."defunt
|
|
WHERE nom = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql,array($name));
|
|
if($res){
|
|
return $res[0]['LAST_INSERT_ID'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getLastClientIdByName($name) {
|
|
$sql = "SELECT max(id) as LAST_INSERT_ID
|
|
FROM ".$this->tableprefix."client
|
|
WHERE nom = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql,array($name));
|
|
if($res){
|
|
return $res[0]['LAST_INSERT_ID'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getLastLocationIdByName($name) {
|
|
$sql = "SELECT max(id) as LAST_INSERT_ID
|
|
FROM ".$this->tableprefix."lieu
|
|
WHERE nom = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql,array($name));
|
|
if($res){
|
|
return $res[0]['LAST_INSERT_ID'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getOrCreateThanatoIdByLastName($name){
|
|
$thanatoId = $this->getLastThanatoIdByName($name);
|
|
if($thanatoId == null){
|
|
$this->createThanatoByLastName($name);
|
|
$thanatoId = $this->getLastThanatoIdByName($name);
|
|
}
|
|
return $thanatoId;
|
|
}
|
|
|
|
private function createThanatoByLastName($name){
|
|
$idNextcloud = "admin";
|
|
$sql = "INSERT INTO `".$this->tableprefix."thanato` (`id_nextcloud`,`nom`,`prenom`,`reference`,`date_habilitation`) VALUES (?,?,?,?,NOW())";
|
|
$this->execSQLNoData($sql,array($idNextcloud,
|
|
$name,
|
|
$this->l->t('First name'),
|
|
'reference',
|
|
)
|
|
);
|
|
return true;
|
|
}
|
|
|
|
public function getLastThanatoIdByName($name) {
|
|
$sql = "SELECT max(id) as LAST_INSERT_ID
|
|
FROM ".$this->tableprefix."thanato
|
|
WHERE nom = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql,array($name));
|
|
if($res){
|
|
return $res[0]['LAST_INSERT_ID'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getFirstThanatoIdByName($name) {
|
|
$sql = "SELECT min(id) as FIRST_INSERT_ID
|
|
FROM ".$this->tableprefix."thanato
|
|
WHERE nom = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql,array($name));
|
|
if($res){
|
|
return $res[0]['FIRST_INSERT_ID'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* Insert lieu
|
|
*/
|
|
public function insertLieu($idNextcloud){
|
|
$last=0;
|
|
$last = $this->lastinsertid("lieu", $idNextcloud) + 1;
|
|
|
|
// $sql = "INSERT INTO `".$this->tableprefix."lieu` ( `id_nextcloud`,
|
|
// `nom`,
|
|
// `date`,
|
|
// `id_client`,
|
|
// `adresse`,
|
|
// `latitude`,
|
|
// `longitude`,
|
|
// `distance`,
|
|
// `depart`,
|
|
// `arrivee`,
|
|
// `user_id`
|
|
// )
|
|
// VALUES (?,?,NOW(),0,'',?,?,0,'','',?);";
|
|
|
|
$sql = "INSERT INTO `".$this->tableprefix."lieu` ( `id_nextcloud`,
|
|
`nom`,
|
|
`adresse`,
|
|
`latitude`,
|
|
`longitude`
|
|
)
|
|
VALUES (?,?,'',?,?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,"Ajouter un lieu",'46.73','1.56'));
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Insert quote
|
|
*/
|
|
public function insertDevis($idNextcloud){
|
|
$last=0;
|
|
$last = $this->lastinsertid("devis", $idNextcloud) + 1;
|
|
|
|
$sql = "INSERT INTO `".$this->tableprefix."devis` ( `date`,
|
|
`id_nextcloud`,
|
|
`num`,
|
|
`id_defunt`,
|
|
`id_client`,
|
|
`id_thanato`,
|
|
`version`,
|
|
`id_lieu`,
|
|
`mentions`,
|
|
`comment`,
|
|
`user_id`
|
|
)
|
|
VALUES (NOW(),?,?,0,0,0,?,0,?,?,?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,"Nom du defunt",'Ajouter un lieu',$this->l->t('New'),$this->l->t('Comment'),$last));
|
|
return true;
|
|
}
|
|
|
|
private function getLastDevisNumberByMonthAndYear($month,$year){
|
|
$sql = "SELECT
|
|
max(devis.devis_number) as LAST_DEVIS_NUMBER, devis.date FROM "
|
|
. $this->tableprefix."devis as devis
|
|
WHERE YEAR(devis.date) = ? AND
|
|
MONTH(devis.date) = ?;";
|
|
$res = $this->execSQLNoJsonReturn($sql,array($year,$month));
|
|
$lastNumber = 0;
|
|
if(!empty($res)){
|
|
$lastNumber = $res[0]['LAST_DEVIS_NUMBER'];
|
|
}
|
|
return $lastNumber;
|
|
}
|
|
|
|
public function insertDevisFromVCalendarAndReturnId($thanatoId,$clientId,$locationId,$defuntId,$calendarUuid = self::DEFAULT_CALENDAR_UUID_FOR_DEVIS,$date = null){
|
|
|
|
if($date == null){
|
|
$dateTime = new Datetime();
|
|
$date = $dateTime->format('Y-m-d');
|
|
}
|
|
else{
|
|
$dateTime = new DateTime($date);
|
|
}
|
|
$idNextcloud = "admin";
|
|
$last=0;
|
|
$last = $this->lastinsertid("devis", "admin") + 1;
|
|
|
|
$dateMonth = $dateTime->format('m');
|
|
$dateYear = $dateTime->format('Y');
|
|
|
|
$devisLastNumber = $this->getLastDevisNumberByMonthAndYear($dateMonth,$dateYear);
|
|
$devisNumber = $devisLastNumber + 1;
|
|
$devisFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($dateTime,$devisNumber,'DEV');
|
|
|
|
$sql = "INSERT INTO `".$this->tableprefix."devis` ( `date`,
|
|
`id_nextcloud`,
|
|
`num`,
|
|
`id_defunt`,
|
|
`id_client`,
|
|
`id_thanato`,
|
|
`version`,
|
|
`id_lieu`,
|
|
`mentions`,
|
|
`comment`,
|
|
`user_id`,
|
|
`devis_number`,
|
|
`devis_full_number`
|
|
)
|
|
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?);";
|
|
$this->execSQLNoData($sql, array(
|
|
$date,
|
|
$idNextcloud,
|
|
$calendarUuid,
|
|
$defuntId,
|
|
$clientId,
|
|
$thanatoId,
|
|
$this->l->t('New'),
|
|
$locationId,
|
|
$this->l->t('Mention'),
|
|
$this->l->t('Comment'),
|
|
$last,
|
|
$devisNumber,
|
|
$devisFullNumber
|
|
)
|
|
);
|
|
|
|
return $this->getLastDevisIdFromVCalendarProperty($thanatoId,$clientId,$locationId,$defuntId,$calendarUuid);
|
|
}
|
|
|
|
public function getLastDevisIdFromVCalendarProperty($thanatoId,$clientId,$locationId,$defuntId,$calendarUuid=self::DEFAULT_CALENDAR_UUID_FOR_DEVIS){
|
|
$sql = "SELECT max(id) as LAST_INSERT_ID
|
|
FROM ".$this->tableprefix."devis
|
|
WHERE id_defunt = ? AND id_lieu = ? AND id_client = ? AND id_thanato = ? AND num = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql,array(
|
|
$defuntId,
|
|
$locationId,
|
|
$clientId,
|
|
$thanatoId,
|
|
$calendarUuid
|
|
));
|
|
if($res){
|
|
return $res[0]['LAST_INSERT_ID'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getArticlesIdFromArticlesNameArray(array $articles): array {
|
|
$articleIds = [];
|
|
foreach ($articles as $article) {
|
|
$sql = "SELECT id FROM ".$this->tableprefix."produit WHERE description = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql, array($article));
|
|
if ($res) {
|
|
$articleIds[] = $res[0]['id'];
|
|
}
|
|
}
|
|
return $articleIds;
|
|
}
|
|
|
|
public function insertDevisArticleFromDevisIdAndArticlesIdArray($devisId, $articleIds) {
|
|
if (!empty($articleIds)) {
|
|
$idNextcloud = "admin";
|
|
foreach ($articleIds as $articleId) {
|
|
$this->insertDevisArticle(devisId: $devisId, articleId: $articleId,idNextcloud: $idNextcloud);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private function insertDevisArticle($devisId,$articleId,$idNextcloud){
|
|
$sql = "INSERT INTO ".$this->tableprefix."produit_devis (devis_id, produit_id, quantite, discount, comment,id_nextcloud) VALUES (?, ?, 1, 0, '-',?)";
|
|
$this->execSQLNoData($sql, array($devisId, $articleId,$idNextcloud));
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Insert invoice
|
|
*/
|
|
public function insertFacture($idNextcloud){
|
|
$last = 0;
|
|
$last = $this->lastNumFacture($idNextcloud);
|
|
$pref = $this->execSQLNoJsonReturn("SELECT * FROM ".$this->tableprefix."configuration WHERE id_nextcloud LIKE ?",array($idNextcloud));
|
|
$sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`,`facture_number`) VALUES (?,?,?,NOW(),?,0,?,?,?);";
|
|
$date_temp = new DateTime();
|
|
$date = $date_temp->format('Y-m-d');
|
|
$dateMonth = $date_temp->format('m');
|
|
$dateYear = $date_temp->format('Y');
|
|
$factureLastNumber = $this->getLastFactureNumberByMonthAndYear($dateMonth,$dateYear);
|
|
$factureNumber = $factureLastNumber + 1;
|
|
$factureFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($date_temp,$factureNumber,'FAC');
|
|
|
|
$datesplit = explode('-', $date);
|
|
$this->execSQLNoData($sql, array($date , $idNextcloud, $factureFullNumber,"Comptant",$last+1,"Ajouter un lieu",$factureNumber));
|
|
|
|
return $last;
|
|
}
|
|
|
|
private function getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisListId){
|
|
if (empty($devisListId)) {
|
|
return [];
|
|
}
|
|
$placeholders = implode(',', array_fill(0, count($devisListId), '?'));
|
|
$this->logger->debug('Placeholders : ' . $placeholders);
|
|
$sql = "SELECT devis.id as id,devis.date as devis_date
|
|
FROM ".$this->tableprefix."devis as devis
|
|
WHERE devis.id IN ($placeholders) AND mentions != ?";
|
|
|
|
$this->logger->debug('SQL : ' . $sql);
|
|
$result = $this->execSQLNoJsonReturn($sql,array_merge($devisListId, [$mentionToNotInclude]));
|
|
return $result;
|
|
}
|
|
|
|
public function insertFactureForeEachDevisId($idNextCloud,$devisIdArray){
|
|
$devisIdarrayToString = implode(',', $devisIdArray);
|
|
$this->logger->debug($devisIdarrayToString);
|
|
$mentionToNotInclude = 'facturé';
|
|
$devisIdListFiltered = $this->getDevisIdListFilteredByMentionAndDevisListId($mentionToNotInclude,$devisIdArray);
|
|
$factureIdsGenerated = [];
|
|
foreach($devisIdListFiltered as $devis){
|
|
$factureId = $this->insertFactureByDevisId($idNextCloud,$devis['id'],$devis['devis_date']);
|
|
$factureIdsGenerated[] = $factureId;
|
|
}
|
|
return $factureIdsGenerated;
|
|
}
|
|
|
|
/**
|
|
* Insert invoice with a devis
|
|
*/
|
|
public function insertFactureByDevisId($idNextcloud,$devisId,$devisDate = null){
|
|
|
|
$devisDatetime = new Datetime();
|
|
if($devisDate != null){
|
|
$devisDatetime = new Datetime($devisDate);
|
|
}
|
|
|
|
$factureDate = $devisDatetime->format('Y-m-d');
|
|
$lastDay = DateHelpers::GetLastDayOfTheMonthOfADate($devisDatetime);
|
|
$lastDay = $lastDay->format('Y-m-d');
|
|
$factureNumber = $this->getFactureNumberByDate($devisDatetime);
|
|
$fullFactureNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($devisDatetime,$factureNumber,"FAC");
|
|
$last = 0;
|
|
$last = $this->lastNumFacture($idNextcloud);
|
|
$sql = "INSERT INTO `".$this->tableprefix."facture` (`date`,`id_nextcloud`,`num`,`date_paiement`,`type_paiement`,`id_devis`,`user_id`, `version`,`facture_number`) VALUES (?,?,?,?,?,?,?,?,?);";
|
|
$this->execSQLNoData($sql, array(
|
|
$factureDate ,
|
|
$idNextcloud,
|
|
$fullFactureNumber,
|
|
$lastDay,
|
|
"Comptant",
|
|
$devisId,
|
|
$last+1,
|
|
"Ajouter un lieu",
|
|
$factureNumber)
|
|
);
|
|
|
|
$factureId = $this->getFactureIdByDevisId($devisId);
|
|
//update devis status
|
|
$this->gestion_update('devis','mentions','facturé',$devisId,$idNextcloud);
|
|
return $factureId;
|
|
}
|
|
|
|
private function getFactureIdByDevisId($devisId){
|
|
$sql = "SELECT
|
|
facture.id
|
|
FROM ".$this->tableprefix."facture as facture
|
|
WHERE facture.id_devis = ?
|
|
ORDER BY facture.id DESC;";
|
|
$facture = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$devisId]);
|
|
if(!empty($facture)){
|
|
return $facture[0]['id'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
|
|
|
|
public function insertProduit($idNextcloud){
|
|
$sql = "INSERT INTO `".$this->tableprefix."produit` (`id_nextcloud`,`reference`,`description`,`prix_unitaire`) VALUES (?,?,?,0);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,$this->l->t('Reference'),$this->l->t('Designation')));
|
|
return true;
|
|
}
|
|
|
|
public function insertProduitDevis($id,$idNextcloud){
|
|
$res = $this->searchMaxIdProduit($idNextcloud);
|
|
$sql = "INSERT INTO `".$this->tableprefix."produit_devis` (`devis_id`, `id_nextcloud`,`produit_id`,`quantite`,`discount`) VALUES (?,?,?,1,0);";
|
|
$this->execSQLNoData($sql, array($id,$idNextcloud,($res[0]['id']==NULL)?0:$res[0]['id']));
|
|
return true;
|
|
}
|
|
|
|
public function insertArticle($idNextcloud){
|
|
$sql = "INSERT INTO `".$this->tableprefix."article` (`id_nextcloud`,`reference`,`description`,`prix_unitaire`) VALUES (?,?,?,0);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,$this->l->t('Reference'),$this->l->t('Designation')));
|
|
return true;
|
|
}
|
|
|
|
public function insertArticleDevis($id,$idNextcloud){
|
|
$res = $this->searchMaxIdArticle($idNextcloud);
|
|
$sql = "INSERT INTO `".$this->tableprefix."article_devis` (`devis_id`, `id_nextcloud`,`article_id`,`quantite`,`discount`, `comment`) VALUES (?,?,?,1,0,'-');";
|
|
$this->execSQLNoData($sql, array($id,$idNextcloud,($res[0]['id']==NULL)?0:$res[0]['id']));
|
|
return true;
|
|
}
|
|
|
|
public function insertObservationDefunt($id,$idNextcloud){
|
|
$sql = "INSERT INTO `".$this->tableprefix."obs_defunt` (`defunt_id`, `id_nextcloud`,`designation`,`commentaire`) VALUES (?,?,?,?);";
|
|
$this->execSQLNoData($sql, array($id,$idNextcloud,'inserer une observation', 'inserer un commentaire'));
|
|
return true;
|
|
}
|
|
|
|
public function insertBijouDefunt($id,$idNextcloud){
|
|
$sql = "INSERT INTO `".$this->tableprefix."bijou_defunt` (`defunt_id`, `id_nextcloud`,`designation`,`commentaire`) VALUES (?,?,?,?);";
|
|
$this->execSQLNoData($sql, array($id,$idNextcloud,'inserer un bijou', 'inserer un commentaire'));
|
|
return true;
|
|
}
|
|
|
|
public function insertHypoDefunt($id,$idNextcloud){
|
|
$sql = "INSERT INTO `".$this->tableprefix."hypo_defunt` (`defunt_id`, `id_nextcloud`,`designation`,`qte`, `endroit`) VALUES (?,?,?,?,?);";
|
|
$this->execSQLNoData($sql, array($id,$idNextcloud,'', 0, ''));
|
|
return true;
|
|
}
|
|
|
|
public function searchMaxIdProduit($idNextcloud){
|
|
// $sqlSearchMax = "SELECT MIN(id) as id FROM `".$this->tableprefix."produit` WHERE id_nextcloud = ?";
|
|
$sqlSearchMax = "SELECT MIN(id) as id FROM `".$this->tableprefix."produit`";
|
|
// return $this->execSQLNoJsonReturn($sqlSearchMax, array($idNextcloud));
|
|
return $this->execSQLNoJsonReturn($sqlSearchMax, array());
|
|
}
|
|
|
|
public function searchMaxIdArticle($idNextcloud){
|
|
$sqlSearchMax = "SELECT MIN(id) as id FROM `".$this->tableprefix."article`";
|
|
return $this->execSQLNoJsonReturn($sqlSearchMax, array());
|
|
}
|
|
|
|
public function insertBibliotheque($idNextcloud){
|
|
$sql = "INSERT INTO `".$this->tableprefix."bibliotheque` (`id_nextcloud`,`contenu`) VALUES (?,?);";
|
|
$this->execSQLNoData($sql, array($idNextcloud,'inserer un texte ici'));
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* UPDATE
|
|
*/
|
|
public function gestion_update($table, $column, $data, $id, $idNextcloud){
|
|
|
|
if(in_array($table, $this->whiteTable) && in_array($column, $this->whiteColumn)){
|
|
if(strcmp($table, "facture")==0 && strcmp($column, "date_paiement")==0) {
|
|
|
|
$facture = json_decode($this->getOneFacture($id, $idNextcloud))[0];
|
|
$numfacture = explode('/', $facture->num)[2];
|
|
$datesplit = explode('-', $data);
|
|
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ?, `num`= ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array(htmlentities(rtrim($data)), "ETS".$datesplit[0]."/".$datesplit[1]."/".$numfacture, $id));
|
|
|
|
} else if(strcmp($table, "facture")==0 && strcmp($column, "id_devis")==0) {
|
|
|
|
$facture = json_decode($this->getOneFacture($id, $idNextcloud))[0];
|
|
$devis = json_decode($this->getOneDevis(htmlentities(rtrim($data)), $idNextcloud))[0];
|
|
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ?, `date`= ?, `version`= ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array(htmlentities(rtrim($data)), $devis->date, html_entity_decode($devis->version),$id));
|
|
|
|
} else if(strcmp($table, "lieu")==0 && (strcmp($column, "latitude")==0 || strcmp($column, "longitude")==0)) {
|
|
|
|
$lieu = json_decode($this->getLieu($id, $idNextcloud))[0];
|
|
|
|
if(floatval($data)!=0) {
|
|
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array(htmlentities(rtrim(floatval($data))), $id));
|
|
|
|
$lieu = json_decode($this->getLieu($id, $idNextcloud))[0];
|
|
if(floatval($lieu->latitude)!=0 && floatval($lieu->longitude)!=0) {
|
|
$adresse = $this->recuperer_adresse(floatval($lieu->latitude), floatval($lieu->longitude));
|
|
$sql = "UPDATE ".$this->tableprefix.$table." SET adresse = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array(htmlentities($adresse), $id));
|
|
}
|
|
}
|
|
|
|
} else if(strcmp($table, "devis")==0 && (strcmp($column, "id_lieu")==0 || strcmp($column, "date")==0 || strcmp($column, "id_client")==0 || strcmp($column, "id_thanato")==0)) {
|
|
|
|
$devis = json_decode($this->getOneDevis($id, $idNextcloud))[0];
|
|
$this->update_lieu_date_devis($devis, $column, htmlentities(rtrim($data)), $idNextcloud);
|
|
|
|
} else if(strcmp($table, "ligne_trajet")==0 && (strcmp($column, "id_devis")==0 || strcmp($column, "date")==0 || strcmp($column, "id_lieu")==0 || strcmp($column, "rang")==0)) {
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails($id, $idNextcloud))[0];
|
|
$this->update_lieu_date_devis_rang_ligneTrajet($ligne_trajet, $column, htmlentities(rtrim($data)), $idNextcloud);
|
|
} else {
|
|
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array(htmlentities(rtrim($data)), $id));
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function init_trajets_data($idNextcloud) {
|
|
// supprimer d'abord les lignes de trajet ainsi que les trajets existants
|
|
$sqldeletelignetrajet = "DELETE FROM ".$this->tableprefix."ligne_trajet;";
|
|
$this->execSQLNoData($sqldeletelignetrajet, array());
|
|
$sqldeletetrajet = "DELETE FROM ".$this->tableprefix."trajet;";
|
|
$this->execSQLNoData($sqldeletetrajet, array());
|
|
|
|
//recuperer tous les trajets
|
|
// $all_devis = json_decode($this->getDevisEmmanuelle($idNextcloud));
|
|
$all_devis = json_decode($this->getDevis($idNextcloud));
|
|
foreach ($all_devis as $key => $devis) {
|
|
if($devis->id_lieu != NULL) {
|
|
$this->update_lieu_date_devis($devis, 'id_lieu', $devis->id_lieu, $idNextcloud);
|
|
}
|
|
}
|
|
}
|
|
|
|
public function createDevisTrajetFromVCalendar($devisId,$idNextcloud = "admin"){
|
|
$devis = json_decode($this->getOneDevis($devisId, $idNextcloud))[0];
|
|
$this->generate_ligneTrajet($devis, $idNextcloud);
|
|
$ligne_trajet = json_decode(json: $this->getOneTrajetdetails_byIdDevis($devis->devisid, $idNextcloud))[0];
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud,$devis->devisid);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
}
|
|
|
|
/**
|
|
* update lieu et date devis
|
|
*/
|
|
public function update_lieu_date_devis($devis, $column, $data, $idNextcloud) {
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($devis->devisid, $idNextcloud))[0];
|
|
switch ($column) {
|
|
case 'id_client':
|
|
$sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $devis->devisid));
|
|
$updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0];
|
|
|
|
if($ligne_trajet != NULL) { // si il existe déja une ligne trajet
|
|
$sql = "UPDATE ".$this->tableprefix."ligne_trajet SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $ligne_trajet->id));
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
} else {
|
|
if($updated_devis->id_lieu!=0) {
|
|
// ajouter le devis dans trajet s'il n'existe pas encore
|
|
$this->generate_ligneTrajet($updated_devis, $idNextcloud);
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0];
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'date':
|
|
$sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $devis->devisid));
|
|
$updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0];
|
|
|
|
if($devis->id_lieu!=NULL) {
|
|
if(strcmp(explode('-', $devis->date)[1], explode('-', $updated_devis->date)[1]) != 0) { // si le mois a changé
|
|
// deplacer la ligne de trajet
|
|
if($ligne_trajet != NULL) $this->gestion_delete('ligne_trajet', $ligne_trajet->id, $idNextcloud);
|
|
$this->generate_ligneTrajet($updated_devis, $idNextcloud);
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0];
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
} else {
|
|
// mettre a jour ligne_trajet
|
|
if($ligne_trajet != NULL) {
|
|
$sql = "UPDATE ".$this->tableprefix."ligne_trajet SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $ligne_trajet->id));
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'id_lieu':
|
|
// mettre a jour devis et ligne_trajet
|
|
$sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $devis->devisid));
|
|
$updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0];
|
|
|
|
if($ligne_trajet != NULL) {
|
|
$sql = "UPDATE ".$this->tableprefix."ligne_trajet SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $ligne_trajet->id));
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
} else {
|
|
if($updated_devis->id_lieu!=0 && $updated_devis->id_thanato!=0) {
|
|
// ajouter le devis dans trajet s'il n'existe pas encore
|
|
$this->generate_ligneTrajet($updated_devis, $idNextcloud);
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0];
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'id_thanato':
|
|
// mettre a jour devis et ligne_trajet
|
|
$sql = "UPDATE ".$this->tableprefix."devis SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $devis->devisid));
|
|
$updated_devis = json_decode($this->getOneDevis($devis->devisid, $idNextcloud))[0];
|
|
|
|
if($ligne_trajet != NULL) {
|
|
$this->gestion_delete('ligne_trajet', $ligne_trajet->id, $idNextcloud);
|
|
}
|
|
$this->generate_ligneTrajet($updated_devis, $idNextcloud);
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails_byIdDevis($updated_devis->devisid, $idNextcloud))[0];
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public function update_lieu_date_devis_rang_ligneTrajet($ligne_trajet, $column, $data, $idNextcloud) {
|
|
switch ($column) {
|
|
case 'id_devis':
|
|
$current_devis = json_decode($this->getOneDevis($data, $idNextcloud))[0];
|
|
|
|
$this->update_ligneTrajet('ligne_trajet', 'id_devis', $current_devis->devisid, $ligne_trajet->id, $idNextcloud);
|
|
$this->update_ligneTrajet('ligne_trajet', 'date', $current_devis->date, $ligne_trajet->id, $idNextcloud);
|
|
$this->update_ligneTrajet('ligne_trajet', 'id_client', $current_devis->id_client, $ligne_trajet->id, $idNextcloud);
|
|
$this->update_ligneTrajet('ligne_trajet', 'id_lieu', $current_devis->id_lieu, $ligne_trajet->id, $idNextcloud);
|
|
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
break;
|
|
case 'id_lieu':
|
|
$this->update_ligneTrajet('ligne_trajet', 'id_lieu', $data, $ligne_trajet->id, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
break;
|
|
case 'date':
|
|
$this->update_ligneTrajet('ligne_trajet', 'date', $data, $ligne_trajet->id, $idNextcloud);
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
break;
|
|
case 'rang':
|
|
$ligneTrajet_surLeRang = json_decode($this->getOneTrajetdetails_byRang($ligne_trajet->id_trajet, $data, $idNextcloud))[0];
|
|
if($ligneTrajet_surLeRang != NULL) {
|
|
$this->update_ligneTrajet('ligne_trajet', 'rang', intval($data), $ligne_trajet->id, $idNextcloud);
|
|
$this->update_ligneTrajet('ligne_trajet', 'rang', intval($data)+1, $ligneTrajet_surLeRang->id, $idNextcloud);
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
} else {
|
|
$this->update_ligneTrajet('ligne_trajet', 'rang', $data, $ligne_trajet->id, $idNextcloud);
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* generer une ligne de trajet par un devis
|
|
*/
|
|
public function generate_ligneTrajet($devis, $idNextcloud) {
|
|
$date_devis_split = explode('-', $devis->date);
|
|
|
|
// creer le trajet s'il n'existe pas
|
|
$trajet = json_decode($this->getOneTrajet_byThanatoMonthYear($devis->id_thanato, $date_devis_split[1], $date_devis_split[0]))[0];
|
|
if($trajet == NULL) {
|
|
$this->insertTrajet($devis->id_thanato, $date_devis_split[1], $date_devis_split[0], $idNextcloud);
|
|
$trajet = json_decode($this->getOneTrajet_byThanatoMonthYear($devis->id_thanato, $date_devis_split[1], $date_devis_split[0]))[0];
|
|
}
|
|
|
|
$this->insertTrajetdetails_byDevis($trajet->id, $devis, $idNextcloud);
|
|
}
|
|
|
|
/**
|
|
* ranger les lignes de trajet dans un trajet par date et par rang
|
|
* inserer ligne siege au debut et fin de chaque journee s'il n'existe pas
|
|
*/
|
|
public function range_ligneTrajet($id_trajet, $idNextcloud,$devisId = 0) {
|
|
$lignes = json_decode($this->getTrajetsdetails_orderByDate($id_trajet, $idNextcloud));
|
|
$nb_jour = 0;
|
|
if(sizeof($lignes)>0) {
|
|
$nb_jour = 1;
|
|
$dates = array(0=>$lignes[0]->date);
|
|
$date_temp = $lignes[0]->date;
|
|
foreach ($lignes as $key => $ligne) {
|
|
if(strcmp($date_temp, string2: $ligne->date)!=0) {
|
|
$date_temp = $ligne->date;
|
|
array_push($dates, $date_temp);
|
|
$nb_jour++;
|
|
}
|
|
}
|
|
|
|
// on verifie si le nombre de ligne ets correspond à 2*nb_jour (debut et fin de journee)
|
|
$reste = (2*$nb_jour) - (sizeof(array_filter($lignes, function($ligne) {return strcmp($ligne->source,'siege')==0;})));
|
|
while ($reste>0) {
|
|
$this->insertTrajetdetails_h2f($id_trajet, $lignes[0]->date, $idNextcloud,$idNextcloud,$devisId);
|
|
$reste--;
|
|
}
|
|
|
|
$current_lines = json_decode($this->getTrajetsdetails_orderByDate($id_trajet, $idNextcloud));
|
|
|
|
// ici le nombre de ligne h2f est egale au nb_jour*2
|
|
$array_siege = array();
|
|
foreach ($current_lines as $key => $ligne) {
|
|
if(strcmp($ligne->source,'siege')==0) array_push($array_siege, $ligne);
|
|
}
|
|
|
|
$j=0;
|
|
for ($i=0; $i < sizeof($dates); $i++) {
|
|
$this->update_ligneTrajet('ligne_trajet', 'rang', 0, $array_siege[$j]->id, $idNextcloud);
|
|
$this->update_ligneTrajet('ligne_trajet', 'date', $dates[$i], $array_siege[$j]->id, $idNextcloud);
|
|
$this->update_ligneTrajet('ligne_trajet', 'rang', sizeof($current_lines)+1, $array_siege[$j+1]->id, $idNextcloud);
|
|
$this->update_ligneTrajet('ligne_trajet', 'date', $dates[$i], $array_siege[$j+1]->id, $idNextcloud);
|
|
$j+=2;
|
|
}
|
|
|
|
$ordered_lines = json_decode($this->getTrajetsdetails_orderByDate($id_trajet, $idNextcloud));
|
|
foreach ($ordered_lines as $key => $line) {
|
|
$this->update_ligneTrajet('ligne_trajet', 'rang', $key+1, $line->id, $idNextcloud);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public function update_ligneTrajet($table, $column, $data, $id, $idNextcloud){
|
|
|
|
if(in_array($table, $this->whiteTable) && in_array($column, $this->whiteColumn)){
|
|
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($data, $id));
|
|
}
|
|
}
|
|
|
|
public function calculer_distance_trajet($numtrajet, $idNextcloud) {
|
|
$trajetdetails = json_decode($this->getTrajetsdetails_orderByDate($numtrajet, $idNextcloud));
|
|
$distance_temp = 0;
|
|
$distances = array();
|
|
$last_point = NULL;
|
|
for ($i=0; $i < sizeof($trajetdetails); $i++) {
|
|
if(strcmp(explode('-', $trajetdetails[$i]->date)[2], explode('-', $trajetdetails[$i+1]->date)[2])!=0) {
|
|
array_push($distances, $distance_temp);
|
|
$distance_temp = 0;
|
|
$last_point = NULL;
|
|
} else {
|
|
if($trajetdetails[$i]->lid != NULL) $last_point = $trajetdetails[$i];
|
|
if($last_point->lid != NULL && $trajetdetails[$i+1]->lid != NULL) $distance_temp += $this->calcul_distance(floatval($last_point->latitude), floatval($last_point->longitude), floatval($trajetdetails[$i+1]->latitude), floatval($trajetdetails[$i+1]->longitude));
|
|
}
|
|
}
|
|
if(sizeof($trajetdetails)>1 && sizeof($distances)==0) array_push($distances, $distance_temp);
|
|
$distance_final = 0;
|
|
foreach ($distances as $key => $valdistance) {
|
|
$distance_final += $valdistance;
|
|
}
|
|
$sql = "UPDATE ".$this->tableprefix."trajet SET `distance` = ? WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($distance_final, $numtrajet));
|
|
}
|
|
|
|
public function getOneTrajet_byThanatoMonthYear($id_thanato, $mois, $annee) {
|
|
$sql = "SELECT " . $this->tableprefix . "trajet.id, " . $this->tableprefix . "trajet.distance, " . $this->tableprefix . "trajet.date, " . $this->tableprefix . "trajet.mois, " . $this->tableprefix . "trajet.annee
|
|
FROM " . $this->tableprefix . "trajet
|
|
WHERE " . $this->tableprefix . "trajet.annee = " . $annee . " AND " . $this->tableprefix . "trajet.mois = " . $mois . " AND " . $this->tableprefix . "trajet.id_thanato = " . $id_thanato . ";";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function recuperer_adresse($latitude, $longitude) {
|
|
|
|
$curl = curl_init();
|
|
|
|
curl_setopt_array($curl, array(
|
|
CURLOPT_URL => 'https://api.geoapify.com/v1/geocode/reverse?lat='.$latitude.'&lon='.$longitude.'&format=json&apiKey=8dadbe28a8894e9ebb7d0d1053b743f4',
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_ENCODING => '',
|
|
CURLOPT_MAXREDIRS => 10,
|
|
CURLOPT_TIMEOUT => 0,
|
|
CURLOPT_FOLLOWLOCATION => true,
|
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
|
CURLOPT_CUSTOMREQUEST => 'GET',
|
|
));
|
|
|
|
$response = curl_exec($curl);
|
|
|
|
curl_close($curl);
|
|
|
|
// Vérifiez s'il y a eu une erreur lors de la requête cURL
|
|
if ($response === false) {
|
|
return '';
|
|
} else {
|
|
return (json_decode($response)->results)[0]->formatted;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Calcul la distance entre les deux points à vol d'oiseau
|
|
*/
|
|
public function calcul_distance($lat1, $lon1, $lat2, $lon2) {
|
|
$R = 6371; // Rayon moyen de la Terre en kilomètres
|
|
$dLat = deg2rad($lat2 - $lat1);
|
|
$dLon = deg2rad($lon2 - $lon1);
|
|
$a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin($dLon/2) * sin($dLon/2);
|
|
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
|
|
$d = $R * $c;
|
|
return round($d, 2);
|
|
}
|
|
|
|
/**
|
|
* Verification si la valeur d'un coordonnees est valide
|
|
*/
|
|
private function is_valid_gps($latitude, $longitude) {
|
|
// Vérifie si les valeurs sont des nombres décimaux valides entre -90 et 90 pour la latitude et -180 et 180 pour la longitude
|
|
if (is_numeric($latitude) && is_numeric($longitude) && $latitude >= -90 && $latitude <= 90 && $longitude >= -180 && $longitude <= 180) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* DELETE
|
|
*/
|
|
public function gestion_delete($table, $id, $idNextcloud){
|
|
if(in_array($table, $this->whiteTable)){
|
|
if(strcmp($table, "ligne_trajet")==0) {
|
|
|
|
$distance = 0;
|
|
$ligne_trajet = json_decode($this->getOneTrajetdetails($id, $idNextcloud))[0];
|
|
|
|
$sql = "DELETE FROM ".$this->tableprefix.$table." WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($id));
|
|
|
|
$this->range_ligneTrajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
$this->calculer_distance_trajet($ligne_trajet->id_trajet, $idNextcloud);
|
|
|
|
} else {
|
|
$sql = "DELETE FROM ".$this->tableprefix.$table." WHERE `id` = ?";
|
|
$this->execSQLNoData($sql, array($id));
|
|
}
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Check
|
|
* TODO Translation
|
|
*/
|
|
public function checkConfig($idNextcloud){
|
|
$sql = "SELECT count(*) as res FROM `".$this->tableprefix."configuration` WHERE `id_nextcloud` = ?";
|
|
$res = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->res;
|
|
if ( $res < 1 ){
|
|
$sql = "INSERT INTO `".$this->tableprefix."configuration` (`entreprise`, `nom`, `prenom`, `legal_one`, `legal_two`, `mail`, `telephone`, `adresse`, `path`, `id_nextcloud`,`mentions_default`,`tva_default`,`devise`,`facture_prefixe`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, '', ?, ?, '0',?,?);";
|
|
$this->execSQLNoData($sql, array($this->l->t('Your company name'),
|
|
$this->l->t('Your company contact last name'),
|
|
$this->l->t('Your company contact first name'),
|
|
$this->l->t('Company legal information line one'),
|
|
$this->l->t('Company legal information line two'),
|
|
$this->l->t('Your company email'),
|
|
$this->l->t('Your company phone'),
|
|
$this->l->t('Your company address'),
|
|
$idNextcloud,
|
|
$this->l->t('All Legal mentions, disclaimer or everything you want to place in the footer.'),
|
|
$this->l->t('EUR'),
|
|
$this->l->t('INVOICE')
|
|
)
|
|
);
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
public function isConfig($idNextcloud){
|
|
$changelog = 9; //+1 if you want changelog appear for everybody one time !
|
|
|
|
$sql = "SELECT count(*) as res FROM `".$this->tableprefix."configuration` WHERE `id_nextcloud` = ?";
|
|
$res = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->res;
|
|
|
|
// Utilisateur jamais utilisé l'application
|
|
if ( $res < 1 ){
|
|
return false;
|
|
}else{
|
|
$sql = "SELECT id as id, changelog as res FROM `".$this->tableprefix."configuration` WHERE `id_nextcloud` = ?";
|
|
$res = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->res;
|
|
$id = json_decode($this->execSQL($sql, array($idNextcloud)))[0]->id;
|
|
if($res < $changelog){
|
|
$this->gestion_update("configuration","changelog",$changelog,$id,$idNextcloud);
|
|
return false;
|
|
}else{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Number client
|
|
*/
|
|
public function numberClient($idNextcloud){
|
|
// $sql = "SELECT count(*) as c from ".$this->tableprefix."client WHERE `id_nextcloud` = ?;";
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."client;";
|
|
return $this->execSQL($sql, array());
|
|
// return $this->execSQL($sql, array($idNextcloud));
|
|
}
|
|
|
|
/**
|
|
* Number thanatopracteur
|
|
*/
|
|
public function numberThanato($idNextcloud){
|
|
// $sql = "SELECT count(*) as c from ".$this->tableprefix."thanato WHERE `id_nextcloud` = ?;";
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."thanato;";
|
|
return $this->execSQL($sql, array());
|
|
// return $this->execSQL($sql, array($idNextcloud));
|
|
}
|
|
|
|
/**
|
|
* Number devis
|
|
*/
|
|
public function numberDevis($idNextcloud){
|
|
// $sql = "SELECT count(*) as c from ".$this->tableprefix."devis WHERE `id_nextcloud` = ? AND `mentions` NOT LIKE 'facturé';";
|
|
// $sql = "SELECT count(*) as c from ".$this->tableprefix."devis WHERE `mentions` NOT LIKE 'facturé';";
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."devis;";
|
|
// $sql = "SELECT count(*) as c from ".$this->tableprefix."devis WHERE `id_nextcloud` = ?;";
|
|
// return $this->execSQL($sql, array($idNextcloud));
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Number facture
|
|
*/
|
|
public function numberFacture($idNextcloud){
|
|
// $sql = "SELECT count(*) as c from ".$this->tableprefix."facture WHERE `id_nextcloud` = ?;";
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."facture;";
|
|
// return $this->execSQL($sql, array($idNextcloud));
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Number lieu
|
|
*/
|
|
public function numberLieu($idNextcloud){
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."lieu;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Number trajet
|
|
*/
|
|
public function numberTrajet($idNextcloud){
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."trajet;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Number produit
|
|
*/
|
|
public function numberProduit($idNextcloud){
|
|
// $sql = "SELECT count(*) as c from ".$this->tableprefix."produit WHERE `id_nextcloud` = ?;";
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."produit;";
|
|
// return $this->execSQL($sql, array($idNextcloud));
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Number article
|
|
*/
|
|
public function numberArticle($idNextcloud){
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."article;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Number défunt
|
|
*/
|
|
public function numberDefunt($idNextcloud, $isUserThanatoOnly = false){
|
|
$defuntCount = 0;
|
|
if($isUserThanatoOnly == false){
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."defunt;";
|
|
$defuntCountBythanato = $this->execSQLNoJsonReturn($sql, array());
|
|
if(!empty($defuntCountBythanato)){
|
|
$defuntCount = $defuntCountBythanato[0]['c'];
|
|
}
|
|
}
|
|
else{
|
|
$thanato = $this->getThanatoByIdNextcloud($idNextcloud);
|
|
if($thanato != null){
|
|
$thanatoId = $thanato["id"];
|
|
$defuntsIdRelatedToThanato = $this->getDefuntIdsRelatedToThanato($thanatoId);
|
|
$defuntCount = count($defuntsIdRelatedToThanato);
|
|
}
|
|
}
|
|
return $defuntCount;
|
|
}
|
|
|
|
/**
|
|
* Number bibliotheque
|
|
*/
|
|
public function numberBibliotheque($idNextcloud){
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."bibliotheque;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Annual turnover per month without VAT
|
|
*/
|
|
public function getAnnualTurnoverPerMonthNoVat($idNextcloud){
|
|
$sql = "SELECT EXTRACT(YEAR FROM ".$this->tableprefix."facture.date_paiement) as y,
|
|
EXTRACT(MONTH FROM ".$this->tableprefix."facture.date_paiement) as m,
|
|
sum(".$this->tableprefix."produit.prix_unitaire * ".$this->tableprefix."produit_devis.quantite) as total
|
|
FROM `".$this->tableprefix."facture`, `".$this->tableprefix."produit_devis`, `".$this->tableprefix."produit`
|
|
WHERE ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."produit_devis.devis_id
|
|
AND ".$this->tableprefix."produit_devis.produit_id = ".$this->tableprefix."produit.id
|
|
GROUP BY EXTRACT(YEAR FROM ".$this->tableprefix."facture.date_paiement), EXTRACT(MONTH FROM ".$this->tableprefix."facture.date_paiement)
|
|
ORDER BY EXTRACT(YEAR FROM ".$this->tableprefix."facture.date_paiement) DESC, EXTRACT(MONTH FROM ".$this->tableprefix."facture.date_paiement);";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getStatArticleAnnuel($idNextcloud, $annee) {
|
|
$sql = "SELECT p.id, p.reference,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 1 THEN pd.quantite ELSE 0 END), 0) AS janvier,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 2 THEN pd.quantite ELSE 0 END), 0) AS fevrier,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 3 THEN pd.quantite ELSE 0 END), 0) AS mars,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 4 THEN pd.quantite ELSE 0 END), 0) AS avril,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 5 THEN pd.quantite ELSE 0 END), 0) AS mai,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 6 THEN pd.quantite ELSE 0 END), 0) AS juin,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 7 THEN pd.quantite ELSE 0 END), 0) AS juillet,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 8 THEN pd.quantite ELSE 0 END), 0) AS aout,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 9 THEN pd.quantite ELSE 0 END), 0) AS septembre,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 10 THEN pd.quantite ELSE 0 END), 0) AS octobre,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 11 THEN pd.quantite ELSE 0 END), 0) AS novembre,
|
|
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 12 THEN pd.quantite ELSE 0 END), 0) AS decembre
|
|
FROM ".$this->tableprefix."produit p
|
|
LEFT JOIN ".$this->tableprefix."produit_devis pd ON p.id = pd.produit_id
|
|
LEFT JOIN ".$this->tableprefix."devis d ON pd.devis_id = d.id
|
|
LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id
|
|
WHERE YEAR(f.date_paiement) = ".$annee." AND pd.devis_id IS NOT NULL
|
|
GROUP BY p.id, p.reference;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getStatSoinsThanatoAnnuel($idNextcloud, $annee) {
|
|
$sql = "SELECT
|
|
thanato.nom AS nom_thanato,
|
|
thanato.prenom AS prenom_thanato,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 1 THEN 1 ELSE 0 END), 0) AS janvier,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 2 THEN 1 ELSE 0 END), 0) AS fevrier,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 3 THEN 1 ELSE 0 END), 0) AS mars,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 4 THEN 1 ELSE 0 END), 0) AS avril,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 5 THEN 1 ELSE 0 END), 0) AS mai,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 6 THEN 1 ELSE 0 END), 0) AS juin,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 7 THEN 1 ELSE 0 END), 0) AS juillet,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 8 THEN 1 ELSE 0 END), 0) AS aout,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 9 THEN 1 ELSE 0 END), 0) AS septembre,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 10 THEN 1 ELSE 0 END), 0) AS octobre,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN 1 ELSE 0 END), 0) AS novembre,
|
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN 1 ELSE 0 END), 0) AS decembre
|
|
FROM ".$this->tableprefix."devis d
|
|
LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id
|
|
LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id
|
|
WHERE YEAR(d.date) = ".$annee." AND d.id_thanato IS NOT NULL
|
|
AND thanato.id IS NOT NULL
|
|
GROUP BY nom_thanato, prenom_thanato
|
|
ORDER BY nom_thanato;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getStatSoinsThanatoWeekend($idNextcloud, $annee, $mois) {
|
|
/**
|
|
* stat nombre de soins samedis et dimanches
|
|
* */
|
|
// $sql = "SELECT
|
|
// thanato.nom AS nom_thanato,
|
|
// thanato.prenom AS prenom_thanato,
|
|
// SUM(CASE WHEN DAYOFWEEK(DISTINCT d.date) = 1 THEN 1 ELSE 0 END) AS sunday,
|
|
// SUM(CASE WHEN DAYOFWEEK(DISTINCT d.date) = 7 THEN 1 ELSE 0 END) AS saturday,
|
|
// SUM(CASE WHEN DAYOFWEEK(DISTINCT d.date) IN (1, 7) THEN 1 ELSE 0 END) AS total_devis
|
|
// FROM ".$this->tableprefix."devis d
|
|
// LEFT JOIN ".$this->tableprefix."facture f ON f.id_devis = d.id
|
|
// LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id
|
|
// WHERE MONTH(d.date) = ".$mois." AND YEAR(d.date) = ".$annee."
|
|
// GROUP BY nom_thanato, prenom_thanato;";
|
|
|
|
/**
|
|
* stat nombre de jours travaillés les weekends d'un mois
|
|
* */
|
|
$sql = "SELECT
|
|
thanato.id,
|
|
thanato.nom as nom_thanato,
|
|
thanato.prenom AS prenom_thanato,
|
|
COUNT(DISTINCT DATE_FORMAT(devis.date, '%Y-%m-%d')) AS weekends_travailles
|
|
FROM
|
|
".$this->tableprefix."thanato as thanato
|
|
JOIN
|
|
".$this->tableprefix."devis as devis ON thanato.id = devis.id_thanato
|
|
WHERE
|
|
MONTH(devis.date) = ".$mois."
|
|
AND YEAR(devis.date) = ".$annee."
|
|
AND DAYOFWEEK(devis.date) IN (1, 7)
|
|
GROUP BY
|
|
thanato.id, nom_thanato, prenom_thanato;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
/**
|
|
* Get last insert id
|
|
*/
|
|
public function lastinsertid($table,$idNextcloud){
|
|
// $sql = "SELECT max(user_id) as LAST_INSERT_ID FROM `" . $this->tableprefix . $table . "` WHERE " . $this->tableprefix . $table .".id_nextcloud = ?;";
|
|
// $res = $this->execSQLNoJsonReturn($sql,array($idNextcloud));
|
|
$sql = "SELECT max(user_id) as LAST_INSERT_ID FROM `" . $this->tableprefix . $table. "`;";
|
|
$res = $this->execSQLNoJsonReturn($sql,array());
|
|
return $res[0]['LAST_INSERT_ID'];
|
|
}
|
|
|
|
public function lastNumFacture($idNextcloud) {
|
|
$lastFactureId = $this->getLastFactureId();
|
|
return $lastFactureId;
|
|
}
|
|
|
|
private function getLastFactureId(){
|
|
$sql = "SELECT
|
|
max(facture.id) as LAST_FACTURE_ID FROM "
|
|
. $this->tableprefix."facture as facture;";
|
|
$res = $this->execSQLNoJsonReturn($sql,[]);
|
|
$lastId = 0;
|
|
if(!empty($res)){
|
|
$lastId = $res[0]['LAST_FACTURE_ID'];
|
|
}
|
|
return $lastId;
|
|
}
|
|
|
|
public function backup(){
|
|
$res = array();
|
|
$res[] = array("===client===");
|
|
$sql = "SELECT * FROM ".$this->tableprefix."client";
|
|
$res = array_merge($res, $this->execSQLNoJsonReturn($sql, array()));
|
|
|
|
$res[] = array("===devis===");
|
|
$sql = "SELECT * FROM ".$this->tableprefix."devis";
|
|
$res = array_merge($res,$this->execSQLNoJsonReturn($sql, array()));
|
|
|
|
$res[] = array("===facture===");
|
|
$sql = "SELECT * FROM ".$this->tableprefix."facture";
|
|
$res = array_merge($res,$this->execSQLNoJsonReturn($sql, array()));
|
|
|
|
$res[] = array("===produit===");
|
|
$sql = "SELECT * FROM ".$this->tableprefix."produit";
|
|
$res = array_merge($res,$this->execSQLNoJsonReturn($sql, array()));
|
|
|
|
$res[] = array("===produit_devis===");
|
|
$sql = "SELECT * FROM ".$this->tableprefix."produit_devis";
|
|
$res = array_merge($res,$this->execSQLNoJsonReturn($sql, array()));
|
|
|
|
$res[] = array("===configuration===");
|
|
$sql = "SELECT * FROM ".$this->tableprefix."configuration";
|
|
$res = array_merge($res,$this->execSQLNoJsonReturn($sql, array()));
|
|
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* @sql
|
|
* @array() //prepare statement
|
|
*/
|
|
private function execSQL($sql, $conditions){
|
|
$stmt = $this->pdo->prepare($sql);
|
|
$stmt->execute($conditions);
|
|
$data = $stmt->fetchAll(\PDO::FETCH_ASSOC);
|
|
$stmt->closeCursor();
|
|
return json_encode($data);
|
|
}
|
|
|
|
private function execSQLNoData($sql, $conditions){
|
|
$stmt = $this->pdo->prepare($sql);
|
|
$stmt->execute($conditions);
|
|
$stmt->closeCursor();
|
|
}
|
|
|
|
private function execSQLNoJsonReturn($sql, $conditions){
|
|
$stmt = $this->pdo->prepare($sql);
|
|
$stmt->execute($conditions);
|
|
$data = $stmt->fetchAll(\PDO::FETCH_ASSOC);
|
|
$stmt->closeCursor();
|
|
return $data;
|
|
}
|
|
|
|
public function getExportThanatoStatisticData(array $thanatoIds){
|
|
$devisList = $this->getDevisListByThanatoIds($thanatoIds);
|
|
$devisListGroupedByDateAndThenByThanato = $this->getDevisListGroupedByDateAndThenByThanato($devisList);
|
|
return $devisListGroupedByDateAndThenByThanato;
|
|
}
|
|
|
|
public function getProduitsDevisByDevisId($devisId){
|
|
$sql = "SELECT
|
|
produit_devis.id as produit_devis_id,
|
|
produit.id as produit_id,
|
|
produit.reference as produit_reference,
|
|
produit.description as produit_description
|
|
FROM ".$this->tableprefix."produit_devis as produit_devis
|
|
LEFT JOIN ".$this->tableprefix."produit as produit on produit_devis.produit_id = produit.id
|
|
WHERE produit_devis.devis_id = ?;";
|
|
$produitsList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$devisId]);
|
|
return $produitsList;
|
|
}
|
|
|
|
private function getDevisListGroupedByDateAndThenByThanato(array $devisList){
|
|
$devisListGroupedByDateAndThenByThanato = [];
|
|
foreach($devisList as $devis){
|
|
$devisDate = $devis["date"];
|
|
$devisThanatoId = $devis["id_thanato"];
|
|
$devis = $this->setDevisStartAndEndTime($devis);
|
|
$devis = $this->setDevisIsWeekendOrNotText($devis);
|
|
$devis = $this->setDevisProduitsList($devis);
|
|
//set devis articles list into devis data
|
|
if (!isset($devisListGroupedByDateAndThenByThanato[$devisThanatoId])) {
|
|
$devisListGroupedByDateAndThenByThanato[$devisThanatoId] = [];
|
|
}
|
|
if (!isset($devisListGroupedByDateAndThenByThanato[$devisThanatoId][$devisDate])) {
|
|
$devisListGroupedByDateAndThenByThanato[$devisThanatoId][$devisDate] = [
|
|
'total_distance' => 0,
|
|
"devis" => [],
|
|
"devisId" => []
|
|
];
|
|
}
|
|
$devisListGroupedByDateAndThenByThanato[$devisThanatoId][$devisDate]["devis"][] = $devis;
|
|
$devisListGroupedByDateAndThenByThanato[$devisThanatoId][$devisDate]["devisId"][] = $devis['id'];
|
|
}
|
|
return $devisListGroupedByDateAndThenByThanato;
|
|
}
|
|
|
|
private function setDevisProduitsList($devis){
|
|
$produitsList = $this->getProduitsDevisByDevisId($devis['id']);
|
|
foreach($produitsList as $produit){
|
|
if (!isset($devis['produits'])) {
|
|
$devis['produits'] = [];
|
|
}
|
|
$devis['produits'][] = $produit;
|
|
}
|
|
return $devis;
|
|
}
|
|
|
|
private function setDevisIsWeekendOrNotText($devis){
|
|
$isWeekend = DateHelpers::isWeekend($devis['date']);
|
|
$value = $isWeekend ? "Ferie" : "J";
|
|
$devis["dayType"] = $value;
|
|
return $devis;
|
|
}
|
|
|
|
public function setDevisStartAndEndTime($devis){
|
|
$calendarData = $this->getCalendarDataByCalendarObjectUuid($devis["calendar_uuid"]);
|
|
$devisTimeValue = VCalendarHelpers::GetStartAndEndTimeFromVCalendarString($calendarData);
|
|
$devis["startTime"] = $devisTimeValue["startTime"];
|
|
$devis["endTime"] = $devisTimeValue["endTime"];
|
|
return $devis;
|
|
}
|
|
|
|
public function getDistanceTotalByDevisIdList(array $devisIdList){
|
|
$ligneTrajetList = $this->getLigneTrajetsByDevisIdList($devisIdList);
|
|
$distanceTotal = $this->getLigneTrajetsListDistance($ligneTrajetList);
|
|
return $distanceTotal;
|
|
}
|
|
|
|
private function getLigneTrajetsListDistance(array $ligneTrajetList){
|
|
$distanceCumul = 0;
|
|
$last_point = NULL;
|
|
for ($i=0; $i < sizeof($ligneTrajetList); $i++) {
|
|
$currentDistance = 0;
|
|
if($ligneTrajetList[$i]['lieu_id'] != NULL){
|
|
$last_point = $ligneTrajetList[$i];
|
|
}
|
|
if($last_point['lieu_id'] != NULL && $ligneTrajetList[$i+1]['lieu_id'] != NULL){
|
|
$currentDistance = $this->calcul_distance(
|
|
floatval(value: $last_point['latitude']),
|
|
floatval($last_point['longitude']),
|
|
floatval($ligneTrajetList[$i+1]['latitude']),
|
|
floatval($ligneTrajetList[$i+1]['longitude'])
|
|
);
|
|
}
|
|
$distanceCumul += $currentDistance;
|
|
}
|
|
return $distanceCumul;
|
|
}
|
|
|
|
private function getLigneTrajetsByDevisIdList(array $devisIdList){
|
|
if(empty($devisIdList)){
|
|
return [];
|
|
}
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count($devisIdList), '?'));
|
|
$sql = "SELECT ligne_trajet.id, ligne_trajet.rang, ligne_trajet.id_nextcloud, ligne_trajet.date, ligne_trajet.user_id, ligne_trajet.commentaire, ligne_trajet.source,
|
|
lieu.id as lieu_id, lieu.nom as lieu, lieu.latitude as latitude, lieu.longitude as longitude
|
|
FROM (".$this->tableprefix."ligne_trajet as ligne_trajet
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on ligne_trajet.id_lieu = lieu.id)
|
|
WHERE ligne_trajet.id_devis IN ($sqlConditionsPlaceholder)
|
|
ORDER BY ligne_trajet.date ASC, ligne_trajet.rang ASC;";
|
|
return $this->execSQLNoJsonReturn($sql, $devisIdList);
|
|
}
|
|
|
|
private function getDevisListByThanatoIds(array $thanatoIds){
|
|
if(empty($thanatoIds)){
|
|
return [];
|
|
}
|
|
$currentYear = date('Y');
|
|
$currentMonth = date('m');
|
|
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count($thanatoIds), '?'));
|
|
$sql = "SELECT
|
|
devis.id,
|
|
devis.date,
|
|
devis.mentions,
|
|
devis.num as calendar_uuid,
|
|
devis.id_defunt as id_defunt,
|
|
devis.id_lieu as id_lieu,
|
|
devis.id_client as id_client,
|
|
devis.id_thanato as id_thanato,
|
|
thanato.nom as nom_thanato,
|
|
thanato.prenom as prenom_thanato,
|
|
defunt.nom as nom_defunt,
|
|
lieu.nom as nom_lieu,
|
|
lieu.latitude as lieu_latitude,
|
|
lieu.longitude as lieu_longitude,
|
|
client.nom as nom_client,
|
|
client.entreprise as client_entreprise,
|
|
client.adresse as client_adresse,
|
|
facture.num as facture_num
|
|
FROM ".$this->tableprefix."devis as devis
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
|
LEFT JOIN ".$this->tableprefix."facture as facture on devis.id = facture.id_devis
|
|
WHERE YEAR(devis.date) = ? AND
|
|
MONTH(devis.date) = ? AND
|
|
devis.id_thanato IN ($sqlConditionsPlaceholder) AND
|
|
devis.mentions = ?
|
|
ORDER BY devis.date ASC;";
|
|
$devisList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
array_merge([$currentYear, $currentMonth],$thanatoIds,["facturé"]));
|
|
return $devisList;
|
|
}
|
|
|
|
public function getCalendarDataByCalendarObjectUuid(string $calendarObjectUuid){
|
|
$sql = "SELECT * FROM ".self::CALENDAR_TABLE_PREFIX."calendarobjects WHERE uid = ?;";
|
|
$calendarObjectList = $this->execSQLNoJsonReturn($sql, [$calendarObjectUuid]);
|
|
if(!empty($calendarObjectList)){
|
|
$calendarDataBlob = $calendarObjectList[0]['calendardata'];
|
|
$calendarDataString = VCalendarHelpers::ReadVCalendarDataBlob($calendarDataBlob);
|
|
return $calendarDataString;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public function getCalendarOrganizerNameByCalendarObjectUuid(string $calendarObjectUuid){
|
|
$calendarObject = $this->getCalendarObjectByUuid($calendarObjectUuid);
|
|
if($calendarObject != null){
|
|
$calendar = $this->getCalendarById($calendarObject['calendarid']);
|
|
if($calendar != null){
|
|
$principalUri = $calendar["principaluri"];
|
|
$organizerName = str_replace('principals/users/','',$principalUri);
|
|
$organizerName = trim($organizerName);
|
|
return $organizerName;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getCalendarObjectByUuid(string $calendarObjectUuid){
|
|
$sql = "SELECT * FROM ".self::CALENDAR_TABLE_PREFIX."calendarobjects WHERE uid = ?;";
|
|
$calendarObjectList = $this->execSQLNoJsonReturn($sql, [$calendarObjectUuid]);
|
|
if(!empty($calendarObjectList)){
|
|
$calendarData = $calendarObjectList[0];
|
|
return $calendarData;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getCalendarById(int $calendarId){
|
|
$sql = "SELECT * FROM ".self::CALENDAR_TABLE_PREFIX."calendars WHERE id = ?;";
|
|
$calendarList = $this->execSQLNoJsonReturn($sql, [$calendarId]);
|
|
if(!empty($calendarList)){
|
|
$calendarData = $calendarList[0];
|
|
return $calendarData;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getDevisProduits($devisId){
|
|
$sql = "SELECT
|
|
produit_devis.id,
|
|
produit_devis.produit_id,
|
|
produit_devis.quantite,
|
|
produit_devis.discount,
|
|
produit.prix_unitaire as produit_price,
|
|
produit.reference as produit_reference,
|
|
produit.description as produit_description,
|
|
produit.vat as produit_vat,
|
|
devis.id_client as devis_client_id
|
|
FROM ".$this->tableprefix ."produit_devis as produit_devis
|
|
LEFT JOIN ".$this->tableprefix."produit as produit on produit_devis.produit_id = produit.id
|
|
LEFT JOIN ".$this->tableprefix."devis as devis on produit_devis.devis_id = devis.id
|
|
WHERE produit_devis.devis_id = ?;";
|
|
|
|
$produitList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$devisId]);
|
|
|
|
if(!empty($produitList)){
|
|
$clientId = $produitList[0]["devis_client_id"];
|
|
$client = $this->getClientById($clientId);
|
|
foreach($produitList as &$produit){
|
|
$productPrice = $this->getProductPriceByClientGroupId($client['fk_client_group_id'],$produit['produit_id']);
|
|
$produit['produit_price'] = $productPrice ?? $produit['produit_price'];
|
|
}
|
|
}
|
|
|
|
return $produitList;
|
|
}
|
|
|
|
private function getProductPriceByClientGroupId($clientGroupId,$productId){
|
|
$sql = "SELECT *
|
|
FROM ".$this->tableprefix ."client_group_discount as client_group_discount
|
|
WHERE client_group_discount.fk_client_group_id = ? AND
|
|
client_group_discount.fk_produit_id = ?;
|
|
";
|
|
$clientGroupDiscount = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$clientGroupId,$productId]);
|
|
if(!empty($clientGroupDiscount)){
|
|
return $clientGroupDiscount[0]['ht_amount'];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private function getProductPriceByClient($productId,$clientId,$productInitialPrice){
|
|
$client = $this->getClientById($clientId);
|
|
if($client != null){
|
|
$productDiscountPrice = $this->getProductPriceByClientGroupId($client['fk_client_group_id'],$productId);
|
|
$productInitialPrice = $productDiscountPrice ?? $productInitialPrice;
|
|
}
|
|
return $productInitialPrice;
|
|
}
|
|
|
|
private function getDevisProductsQuantityByDevisListAndProductId($devisList,$productId){
|
|
if(empty($devisList)){
|
|
return 0;
|
|
}
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count($devisList), '?'));
|
|
$sql = "SELECT
|
|
SUM(produit_devis.quantite) as total_quantity
|
|
FROM ".$this->tableprefix ."produit_devis as produit_devis
|
|
WHERE produit_devis.devis_id IN ($sqlConditionsPlaceholder) AND
|
|
produit_devis.produit_id = ?;";
|
|
|
|
$produitList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
array_merge($devisList,array($productId)));
|
|
|
|
if(!empty($produitList)){
|
|
return $produitList[0]['total_quantity'];
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
private function getClientFactureStatisticPerMonth($clientId,array $produitList){
|
|
$currentYear = date('Y');
|
|
$monthLists = range(1,12);
|
|
$data = [] ;
|
|
foreach($monthLists as $monthValue){
|
|
if(!isset($data[$monthValue])){
|
|
$data[$monthValue] = [];
|
|
}
|
|
$sql = "SELECT
|
|
facture.id,
|
|
facture.date,
|
|
facture.date_paiement,
|
|
devis.id as devis_id,
|
|
devis.id_client as devis_client_id,
|
|
devis.date as devis_date
|
|
FROM ".$this->tableprefix."facture as facture
|
|
LEFT JOIN ".$this->tableprefix."devis as devis on facture.id_devis = devis.id
|
|
WHERE YEAR(facture.date_paiement) = ? AND
|
|
MONTH(facture.date_paiement) = ? AND
|
|
devis.id_client = ?
|
|
ORDER BY facture.date_paiement ASC;";
|
|
$factureList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$currentYear,$monthValue,$clientId]);
|
|
|
|
$factureDevisIds = [];
|
|
foreach($factureList as $facture){
|
|
$factureDevisIds[] = $facture['devis_id'];
|
|
}
|
|
|
|
$defuntCount = count($factureList);
|
|
$produitsPrice = 0;
|
|
$statisticForeachProductPerMonth = [];
|
|
foreach($produitList as $produit){
|
|
if(!isset($statisticForeachProductPerMonth[$produit['id']])){
|
|
$statisticForeachProductPerMonth[$produit['id']] = 0;
|
|
}
|
|
$productTotalCount = $this->getDevisProductsQuantityByDevisListAndProductId($factureDevisIds,$produit['id']);
|
|
$totalWithoutVat = $productTotalCount * $produit["prix_unitaire"];
|
|
$statisticForeachProductPerMonth[$produit['id']] += $productTotalCount;
|
|
$produitsPrice += $totalWithoutVat;
|
|
}
|
|
$data[$monthValue] = [
|
|
"defunt_count" => $defuntCount,
|
|
"total_price" => $produitsPrice,
|
|
"year" => $currentYear,
|
|
"products" => $statisticForeachProductPerMonth
|
|
];
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
public function getExportClientStatData(array $clientIds){
|
|
$data = [];
|
|
$produitList = $this->getProduitsListAsArray();
|
|
foreach($clientIds as $clientId){
|
|
if(!isset($data[$clientId])){
|
|
$data[$clientId] = [];
|
|
}
|
|
//get client name
|
|
$clientName = "Default client name";
|
|
$client = $this->getClientById($clientId);
|
|
if($client != null){
|
|
$clientName = trim($client["client_nom"]) . '-' .trim($client['client_entreprise']);
|
|
}
|
|
$data[$clientId]["client_name"] = $clientName;
|
|
$data[$clientId]["client_data"] = $this->getClientFactureStatisticPerMonth($clientId,$produitList);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
private function getClientById($clientId){
|
|
$sql = "SELECT
|
|
client.id,
|
|
client.nom as client_nom,
|
|
client.prenom as client_prenom,
|
|
client.entreprise as client_entreprise,
|
|
client.fk_client_group_id as fk_client_group_id
|
|
FROM ".$this->tableprefix."client as client
|
|
WHERE client.id = ?;";
|
|
$clientList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$clientId]);
|
|
|
|
if(!empty($clientList)){
|
|
return $clientList[0];
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public function getClientsByClientsID(array $clientIds){
|
|
if(empty($clientIds)){
|
|
return [];
|
|
}
|
|
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count($clientIds), '?'));
|
|
$sql = "SELECT
|
|
client.id,
|
|
client.nom as client_nom,
|
|
client.prenom as client_prenom,
|
|
client.entreprise as client_entreprise
|
|
FROM ".$this->tableprefix."client as client
|
|
WHERE client.id IN ($sqlConditionsPlaceholder);";
|
|
$clientList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
$clientIds);
|
|
|
|
return $clientList;
|
|
}
|
|
|
|
public function getInvoicePdfData($factureId,$configuration){
|
|
$factureData = $this->getFactureByIdWithDevis($factureId);
|
|
if($factureData == null){
|
|
return null;
|
|
}
|
|
$products = $this->getDevisProduits($factureData["devis_id"]);
|
|
$factureData = $this->setDevisStartAndEndTime($factureData);
|
|
|
|
$firstClient = $this->getFirstClient();
|
|
$factureData["siret"] = $firstClient != null ? $firstClient['legal_one'] : '';
|
|
$factureData["products"] = $products;
|
|
$factureData["configuration"] = $configuration;
|
|
|
|
$clientAdresses = FileExportHelpers::GetAddressAndCityFromAddress($factureData["client_adresse"]);
|
|
$factureData["client_real_adress"] = $clientAdresses["address"];
|
|
$factureData["client_adress_city"] = $clientAdresses["city"];
|
|
|
|
$configurationAdresses = FileExportHelpers::GetAddressAndCityFromAddress($configuration->adresse);
|
|
$factureData["configuration_adresse"] = $configurationAdresses["address"];
|
|
$factureData["configuration_adresse_city"] = $configurationAdresses["city"];
|
|
return $factureData;
|
|
}
|
|
|
|
private function getDevisByClientAndMonthYear($clientId,$month,$year){
|
|
$sql = "SELECT
|
|
devis.id as devis_id,
|
|
devis.date as devis_date,
|
|
devis.num as calendar_uuid,
|
|
devis.comment as devis_comment,
|
|
devis.id_client as devis_id_client,
|
|
client.nom as client_nom,
|
|
client.entreprise as client_entreprise,
|
|
client.adresse as client_adresse,
|
|
defunt.nom as defunt_nom,
|
|
defunt.sexe as defunt_sexe,
|
|
lieu.nom as lieu_nom,
|
|
lieu.adresse as lieu_adresse,
|
|
thanato.nom as thanato_nom,
|
|
thanato.prenom as thanato_prenom
|
|
FROM ".$this->tableprefix."devis as devis
|
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
|
WHERE devis.id_client = ? AND
|
|
YEAR(devis.date) = ?";
|
|
|
|
$conditions = [$clientId,$year];
|
|
if($month != 0){
|
|
$conditions[] = $month;
|
|
$sql .= " AND MONTH(devis.date) = ?";
|
|
}
|
|
$sql .= ";";
|
|
$devisList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
$conditions);
|
|
|
|
return $devisList;
|
|
}
|
|
|
|
public function getDevisPdfDataByClientAndMonthYear($clientId,$month,$year,$configuration){
|
|
$devisList = $this->getDevisByClientAndMonthYear($clientId,$month,$year);
|
|
return $devisList;
|
|
}
|
|
|
|
public function getInvoicePdfDataByClientAndMonthYear($clientId,$month,$year,$configuration){
|
|
$invoices = $this->getInvoiceByClientAndMonthYear($clientId,$month,$year);
|
|
$firstClient = $this->getFirstClient();
|
|
foreach($invoices as &$invoice){
|
|
$invoice["siret"] = $firstClient != null ? $firstClient['legal_one'] : '';
|
|
$products = $this->getDevisProduits($invoice["devis_id"]);
|
|
$invoice["products"] = $products;
|
|
$invoice["configuration"] = $configuration;
|
|
|
|
$clientAdresses = FileExportHelpers::GetAddressAndCityFromAddress($invoice["client_adresse"]);
|
|
$invoice["client_real_adress"] = $clientAdresses["address"];
|
|
$invoice["client_adress_city"] = $clientAdresses["city"];
|
|
|
|
$configurationAdresses = FileExportHelpers::GetAddressAndCityFromAddress($configuration->adresse);
|
|
$invoice["configuration_adresse"] = $configurationAdresses["address"];
|
|
$invoice["configuration_adresse_city"] = $configurationAdresses["city"];
|
|
}
|
|
return $invoices;
|
|
}
|
|
|
|
private function getInvoiceByClientAndMonthYear($clientId,$month,$year){
|
|
$sql = "SELECT
|
|
facture.id,
|
|
facture.date,
|
|
facture.date_paiement,
|
|
facture.num,
|
|
devis.id as devis_id,
|
|
devis.date as devis_date,
|
|
devis.num as calendar_uuid,
|
|
devis.comment as devis_comment,
|
|
devis.id_client as devis_id_client,
|
|
client.nom as client_nom,
|
|
client.entreprise as client_entreprise,
|
|
client.adresse as client_adresse,
|
|
defunt.nom as defunt_nom,
|
|
defunt.sexe as defunt_sexe,
|
|
lieu.nom as lieu_nom,
|
|
lieu.adresse as lieu_adresse,
|
|
thanato.nom as thanato_nom,
|
|
thanato.prenom as thanato_prenom
|
|
FROM ".$this->tableprefix."facture as facture
|
|
LEFT JOIN ".$this->tableprefix."devis as devis on facture.id_devis = devis.id
|
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
|
WHERE devis.id_client = ? AND
|
|
YEAR(facture.date_paiement) = ?";
|
|
|
|
$conditions = [$clientId,$year];
|
|
if($month != 0){
|
|
$conditions[] = $month;
|
|
$sql .= " AND MONTH(facture.date_paiement) = ?";
|
|
}
|
|
$sql .= ";";
|
|
$factures = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
$conditions);
|
|
|
|
return $factures;
|
|
}
|
|
|
|
public function getDevisPdfDataByDevisId($devisId){
|
|
$sql = "SELECT
|
|
devis.id as devis_id,
|
|
devis.date as devis_date,
|
|
devis.num as calendar_uuid,
|
|
devis.devis_full_number as devis_full_number,
|
|
devis.comment as devis_comment,
|
|
client.nom as client_nom,
|
|
client.entreprise as client_entreprise,
|
|
client.adresse as client_adresse,
|
|
defunt.nom as defunt_nom,
|
|
defunt.sexe as defunt_sexe,
|
|
lieu.nom as lieu_nom,
|
|
lieu.adresse as lieu_adresse,
|
|
thanato.nom as thanato_nom,
|
|
thanato.prenom as thanato_prenom
|
|
FROM ".$this->tableprefix."devis as devis
|
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
|
WHERE devis.id = ?
|
|
;";
|
|
$devis = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$devisId]);
|
|
if(!empty($devis)){
|
|
return $devis[0];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private function getFactureByIdWithDevis($factureId){
|
|
$sql = "SELECT
|
|
facture.id,
|
|
facture.date,
|
|
facture.date_paiement,
|
|
facture.num,
|
|
devis.id as devis_id,
|
|
devis.date as devis_date,
|
|
devis.num as calendar_uuid,
|
|
devis.comment as devis_comment,
|
|
client.nom as client_nom,
|
|
client.entreprise as client_entreprise,
|
|
client.adresse as client_adresse,
|
|
defunt.nom as defunt_nom,
|
|
defunt.sexe as defunt_sexe,
|
|
lieu.nom as lieu_nom,
|
|
lieu.adresse as lieu_adresse,
|
|
thanato.nom as thanato_nom,
|
|
thanato.prenom as thanato_prenom
|
|
FROM ".$this->tableprefix."facture as facture
|
|
LEFT JOIN ".$this->tableprefix."devis as devis on facture.id_devis = devis.id
|
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
|
WHERE facture.id = ?
|
|
;";
|
|
$facture = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[$factureId]);
|
|
if(!empty($facture)){
|
|
return $facture[0];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function getProduitsListAsArray(){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."produit as produit;";
|
|
|
|
$produitList = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[]);
|
|
|
|
return $produitList;
|
|
}
|
|
|
|
public function getArticleIdsByArticleReferences(array $articleReferences){
|
|
$articleIds = [];
|
|
foreach ($articleReferences as $reference) {
|
|
$reference = trim($reference);
|
|
$sql = "SELECT id FROM ".$this->tableprefix."produit WHERE reference = ?";
|
|
$res = $this->execSQLNoJsonReturn($sql, array($reference));
|
|
if ($res) {
|
|
$articleIds[] = $res[0]['id'];
|
|
}
|
|
}
|
|
return $articleIds;
|
|
}
|
|
|
|
public function addNumberColumnOnDevis(){
|
|
$sql = "ALTER TABLE ". $this->tableprefix."devis
|
|
ADD devis_number INT DEFAULT 1;" ;
|
|
$this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[]);
|
|
|
|
$sql = "ALTER TABLE ". $this->tableprefix."devis
|
|
ADD devis_full_number VARCHAR(255);" ;
|
|
$this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[]);
|
|
|
|
$sql = "UPDATE ".$this->tableprefix."devis as devis
|
|
SET devis.devis_full_number = CONCAT('DEV', YEAR(devis.date) % 100, LPAD(MONTH(devis.date), 2, '0'), LPAD(devis.devis_number, 2, '0'));";
|
|
$this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[]);
|
|
|
|
return true;
|
|
}
|
|
|
|
public function addNumberColumnOnFacture(){
|
|
$sql = "ALTER TABLE ". $this->tableprefix."facture
|
|
ADD facture_number INT DEFAULT 1;" ;
|
|
$this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[]);
|
|
|
|
$sql = "UPDATE ".$this->tableprefix."facture as facture
|
|
SET facture.num = CONCAT('FAC', YEAR(facture.date) % 100, LPAD(MONTH(facture.date), 2, '0'), LPAD(facture.facture_number, 2, '0'));";
|
|
$this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[]);
|
|
|
|
return true;
|
|
}
|
|
|
|
private function getLastFactureNumberByMonthAndYear($month,$year){
|
|
$sql = "SELECT
|
|
max(facture.facture_number) as LAST_FACTURE_NUMBER, facture.date FROM "
|
|
. $this->tableprefix."facture as facture
|
|
WHERE YEAR(facture.date) = ? AND
|
|
MONTH(facture.date) = ?;";
|
|
$res = $this->execSQLNoJsonReturn($sql,array($year,$month));
|
|
$lastNumber = 0;
|
|
if(!empty($res)){
|
|
$lastNumber = $res[0]['LAST_FACTURE_NUMBER'];
|
|
}
|
|
return $lastNumber;
|
|
}
|
|
|
|
public function getFactureNumberByDate($datetime){
|
|
$month = $datetime->format('m');
|
|
$year = $datetime->format('Y');
|
|
$lastFactureNumber = $this->getLastFactureNumberByMonthAndYear($month,$year);
|
|
$factureNumber = $lastFactureNumber + 1;
|
|
return $factureNumber;
|
|
}
|
|
|
|
public function getFactureFullNumberByDate($datetime){
|
|
$factureNumber = $this->getFactureNumberByDate($datetime);
|
|
$factureFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($datetime,$factureNumber,'FAC');
|
|
return $factureFullNumber;
|
|
}
|
|
|
|
public function getDevisNumberByDate($datetime){
|
|
$month = $datetime->format('m');
|
|
$year = $datetime->format('Y');
|
|
$lastDevisNumber = $this->getLastDevisNumberByMonthAndYear($month,$year);
|
|
$devisNumber = $lastDevisNumber + 1;
|
|
return $devisNumber;
|
|
}
|
|
|
|
public function getDevisFullNumberByDate($datetime){
|
|
$devisNumber = $this->getDevisNumberByDate($datetime);
|
|
$devisFullNumber = DateHelpers::GetFullFactureOrDevisNumberByDate($datetime,$devisNumber,'DEV');
|
|
return $devisFullNumber;
|
|
}
|
|
|
|
public function getFirstClient(){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."client as client LIMIT 1;";
|
|
$client = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
[]);
|
|
|
|
if(!empty($client)){
|
|
return $client[0];
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public function getClientGroupDiscounts(){
|
|
|
|
$sql = "SELECT
|
|
client_group_discount.id as id,
|
|
client_group_discount.fk_client_group_id as fk_client_group_id,
|
|
client_group_discount.fk_produit_id as fk_produit_id,
|
|
client_group_discount.ht_amount as ht_amount,
|
|
client_group.client_group_name as client_group_name,
|
|
produit.id as produit_id,
|
|
produit.reference as produit_reference,
|
|
produit.prix_unitaire as prix_unitaire
|
|
FROM ".$this->tableprefix."client_group_discount as client_group_discount
|
|
LEFT JOIN ".$this->tableprefix."client_group as client_group on client_group_discount.fk_client_group_id = client_group.id
|
|
LEFT JOIN ".$this->tableprefix."produit as produit on client_group_discount.fk_produit_id = produit.id
|
|
ORDER BY client_group_discount.id DESC
|
|
";
|
|
|
|
$clientGroupDiscounts = $this->execSQL(
|
|
$sql,
|
|
[]);
|
|
|
|
return $clientGroupDiscounts;
|
|
}
|
|
|
|
public function getClientGroups(){
|
|
$sql = "SELECT * FROM ".$this->tableprefix."client_group as client_group ORDER BY client_group.id DESC;";
|
|
$clientGroups = $this->execSQL($sql,[]);
|
|
return $clientGroups;
|
|
}
|
|
|
|
public function createDefaultClientGroup(){
|
|
$sql = "INSERT INTO `".$this->tableprefix."client_group` (`client_group_name`) VALUES (?);";
|
|
$this->execSQLNoData($sql, array(self::DEFAULT_CLIENT_GROUP_NAME));
|
|
return true;
|
|
}
|
|
|
|
public function createDefaultClientGroupDiscount(){
|
|
$sql = "INSERT INTO `".$this->tableprefix."client_group_discount` (`fk_client_group_id`,`fk_produit_id`,`ht_amount`) VALUES (0,0,0);";
|
|
$this->execSQLNoData($sql, array());
|
|
return true;
|
|
}
|
|
|
|
public function getClientGroupCount(){
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."client_group;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function getClientGroupDiscountCount(){
|
|
$sql = "SELECT count(*) as c from ".$this->tableprefix."client_group_discount;";
|
|
return $this->execSQL($sql, array());
|
|
}
|
|
|
|
public function addClientGroupDiscountFeatureTables(){
|
|
$createTableClientGroupSQL = "CREATE TABLE oc_gestion_client_group (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
client_group_name VARCHAR(255) DEFAULT ''
|
|
);";
|
|
|
|
$this->execSQLNoData($createTableClientGroupSQL,[]);
|
|
|
|
$addColumnFkClientGroupIdIntoClientTableSQL= "ALTER TABLE oc_gestion_client
|
|
ADD fk_client_group_id INT NULL;";
|
|
|
|
$this->execSQLNoData($addColumnFkClientGroupIdIntoClientTableSQL,[]);
|
|
|
|
$createTableClientGroupDiscountSQL = "CREATE TABLE oc_gestion_client_group_discount (
|
|
id INT PRIMARY KEY AUTO_INCREMENT,
|
|
fk_client_group_id INT NOT NULL,
|
|
fk_produit_id INT NOT NULL,
|
|
ht_amount FLOAT NOT NULL
|
|
);";
|
|
|
|
$this->execSQLNoData($createTableClientGroupDiscountSQL,[]);
|
|
|
|
return true;
|
|
}
|
|
|
|
public function getDevisOfDefunt($defuntId){
|
|
$sql = "SELECT
|
|
devis.id as id,
|
|
devis.date as devis_date,
|
|
devis.id_defunt as defunt_id,
|
|
devis.id_lieu as lieu_id,
|
|
lieu.nom as lieu_nom,
|
|
lieu.adresse as lieu_adresse,
|
|
defunt.nom as defunt_nom,
|
|
defunt.sexe as defunt_sexe,
|
|
client.nom as client_nom,
|
|
client.prenom as client_prenom,
|
|
client.entreprise as client_entreprise,
|
|
client.adresse as client_adresse,
|
|
thanato.nom as thanato_nom,
|
|
thanato.prenom as thanato_prenom,
|
|
thanato.reference as thanato_reference,
|
|
thanato.date_habilitation as thanato_date_habilitation
|
|
FROM ".$this->tableprefix."devis as devis
|
|
LEFT JOIN ".$this->tableprefix."lieu as lieu on devis.id_lieu = lieu.id
|
|
LEFT JOIN ".$this->tableprefix."defunt as defunt on devis.id_defunt = defunt.id
|
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
|
LEFT JOIN ".$this->tableprefix."thanato as thanato on devis.id_thanato = thanato.id
|
|
WHERE devis.id_defunt = ? ;";
|
|
|
|
$devisOfDefunt = $this->execSQLNoJsonReturn($sql, [$defuntId]);
|
|
|
|
if(!empty( $devisOfDefunt)){
|
|
return $devisOfDefunt[0];
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
private function getDefuntById($defuntId){
|
|
$sql = "SELECT
|
|
defunt.id as id,
|
|
defunt.nom as defunt_nom,
|
|
devis.id as devis_id
|
|
FROM ".$this->tableprefix."defunt as defunt
|
|
LEFT JOIN ".$this->tableprefix."devis as devis on defunt.id = devis.id_defunt
|
|
WHERE defunt.id = ?
|
|
LIMIT 1;";
|
|
|
|
$defunt = $this->execSQLNoJsonReturn($sql,[$defuntId]);
|
|
if(!empty($defunt)){
|
|
return $defunt[0];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private function getProductAsDefuntCoverProduct($productCoverId){
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count(ProductConstant::PRODUCT_COVER_REFERENCE_LIST), '?'));
|
|
$sql = "SELECT
|
|
produit.id,
|
|
produit.reference
|
|
FROM ".$this->tableprefix."produit as produit
|
|
WHERE produit.id = ? AND
|
|
produit.reference IN ($sqlConditionsPlaceholder)
|
|
LIMIT 1;";
|
|
|
|
$product = $this->execSQLNoJsonReturn(
|
|
$sql,
|
|
array_merge(
|
|
[$productCoverId],
|
|
ProductConstant::PRODUCT_COVER_REFERENCE_LIST
|
|
)
|
|
);
|
|
if(!empty($product)){
|
|
return $product[0];
|
|
}
|
|
return $product;
|
|
}
|
|
|
|
private function isProductAlreadyExistInDevis($productId,$devisId){
|
|
$sql = "SELECT
|
|
produit_devis.id
|
|
FROM ".$this->tableprefix."produit_devis as produit_devis
|
|
WHERE produit_devis.produit_id = ? AND
|
|
produit_devis.devis_id = ?
|
|
LIMIT 1;";
|
|
|
|
$product = $this->execSQLNoJsonReturn($sql,[$productId,$devisId]);
|
|
if(!empty($product)){
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private function removeProductFromDevis($productId,$devisId){
|
|
$sql = "DELETE
|
|
FROM ".
|
|
$this->tableprefix."produit_devis
|
|
WHERE devis_id = ? AND produit_id = ?
|
|
";
|
|
$this->execSQLNoData($sql,[$devisId,$productId]);
|
|
}
|
|
|
|
private function getProductByReference($productReference){
|
|
$sql = "SELECT
|
|
produit.id,
|
|
produit.reference
|
|
FROM ".$this->tableprefix."produit as produit
|
|
WHERE produit.reference = ?
|
|
LIMIT 1;";
|
|
|
|
$product = $this->execSQLNoJsonReturn($sql,[$productReference]);
|
|
if(!empty($product)){
|
|
return $product[0];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private function removeProductFromDevisByProductReference($productReference,$devisId){
|
|
$product = $this->getProductByReference($productReference);
|
|
if($product != null){
|
|
$this->removeProductFromDevis($product["id"],$devisId);
|
|
}
|
|
}
|
|
|
|
private function createProductDevisIfNotExist($productId,$devisId){
|
|
$isProductDevisAlreadyExist = $this->isProductAlreadyExistInDevis($productId,$devisId);
|
|
if(!$isProductDevisAlreadyExist){
|
|
$idNextcloud = "admin";
|
|
$this->insertDevisArticle(devisId: $devisId, articleId: $productId,idNextcloud: $idNextcloud);
|
|
}
|
|
}
|
|
public function setDefuntCover($defuntId, $productCoverId){
|
|
$defunt = $this->getDefuntById($defuntId);
|
|
if($defunt == null){
|
|
return null;
|
|
}
|
|
if($defunt["devis_id"] == null){
|
|
return null;
|
|
}
|
|
$product = $this->getProductAsDefuntCoverProduct($productCoverId);
|
|
if($product == null){
|
|
return null;
|
|
}
|
|
|
|
$productCoverReferencesList = ProductConstant::PRODUCT_COVER_REFERENCE_LIST;
|
|
foreach($productCoverReferencesList as $currentProductCoverReference){
|
|
if($currentProductCoverReference === $product["reference"]){
|
|
$this->createProductDevisIfNotExist($product["id"],$defunt["devis_id"]);
|
|
}
|
|
else{
|
|
$this->removeProductFromDevisByProductReference($currentProductCoverReference,$defunt["devis_id"]);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function getCoverProducts(){
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count(ProductConstant::PRODUCT_COVER_REFERENCE_LIST), '?'));
|
|
$sql = "SELECT
|
|
produit.id,
|
|
produit.reference,
|
|
produit.description
|
|
FROM ".$this->tableprefix."produit as produit
|
|
WHERE produit.reference IN ($sqlConditionsPlaceholder)";
|
|
|
|
return $this->execSQL($sql,ProductConstant::PRODUCT_COVER_REFERENCE_LIST);
|
|
}
|
|
|
|
private function getProductCoverByDevisId($devisId){
|
|
$sqlConditionsPlaceholder = implode(',', array_fill(0, count(ProductConstant::PRODUCT_COVER_REFERENCE_LIST), '?'));
|
|
$sql = "SELECT
|
|
produit_devis.id,
|
|
produit.id as produit_id,
|
|
produit.reference,
|
|
produit.description
|
|
FROM ".$this->tableprefix."produit_devis as produit_devis
|
|
LEFT JOIN ".$this->tableprefix."produit as produit on produit_devis.produit_id = produit.id
|
|
WHERE produit_devis.devis_id = ? AND
|
|
produit.reference IN ($sqlConditionsPlaceholder) LIMIT 1";
|
|
|
|
$productCover = $this->execSQLNoJsonReturn($sql,
|
|
array_merge(
|
|
[$devisId],
|
|
ProductConstant::PRODUCT_COVER_REFERENCE_LIST
|
|
));
|
|
if($productCover){
|
|
return $productCover[0];
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private function getDevisByIdWithCalendarData($devisId,$idNextcloud){
|
|
$devis = $this->getOneDevis($devisId,$idNextcloud);
|
|
$devis= json_decode($devis);
|
|
if(empty($devis)){
|
|
return null;
|
|
}
|
|
$devis = $devis[0];
|
|
if(isset($devis->numm) && $devis->num == null){
|
|
return null;
|
|
}
|
|
$calendarData = $this->getCalendarDataByCalendarObjectUuid($devis->num);
|
|
$devisTimeValue = VCalendarHelpers::GetStartAndEndTimeFromVCalendarString($calendarData);
|
|
$devis->startTime = $devisTimeValue["startTime"];
|
|
$devis->endTime = $devisTimeValue["endTime"];
|
|
return $devis;
|
|
}
|
|
|
|
|
|
public function getDevisTalkRoomMessage($devisId,$idNextcloud){
|
|
$devis = $this->getDevisByIdWithCalendarData($devisId,$idNextcloud);
|
|
if($devis == null){
|
|
return null;
|
|
}
|
|
$devisDate = new Datetime($devis->date);
|
|
$devisDate = $devisDate->format('d/m/Y');
|
|
|
|
$message = "NOUVEAUX SOINS : ";
|
|
$message .= $devis->nom_defunt . ' ';
|
|
$message .= 'le '.$devisDate. ' ';
|
|
$message .= 'à '.$devis->startTime. ' ';
|
|
$message .= 'à '.$devis->lieu. ' '. $devis->adresse_soin;
|
|
return $message;
|
|
}
|
|
|
|
|
|
} |