PageRenderTime 97ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/src/2.071.0/_document.lib.php

https://github.com/crepeausucre/soothERP
PHP | 1200 lines | 944 code | 178 blank | 78 comment | 255 complexity | e9f2fa2554498cdd91896553713a9dc8 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, LGPL-3.0
  1. <?php
  2. // *************************************************************************************************************
  3. // FONCTIONS DE GESTION DES DOCUMENTS
  4. // *************************************************************************************************************
  5. // Fonction permettant d'ouvrir un document existant
  6. function open_doc ($ref_doc) {
  7. global $bdd;
  8. global $DIR;
  9. /* Utilisation du document en cache si besoin
  10. if (isset($_SESSION['user']->doc_actu) && $ref_doc == $_SESSION['user']->doc_actu->getRef_doc ()) {
  11. return $_SESSION['user']->doc_actu;
  12. }
  13. */
  14. $query = "SELECT ref_doc, id_type_doc FROM documents
  15. WHERE ref_doc = '".addslashes($ref_doc)."' ";
  16. $resultat = $bdd->query ($query);
  17. if (!$doc = $resultat->fetchObject()) { return false; }
  18. // Creation de l'objet correspondant
  19. require_once ($DIR."documents/_doc_".strtolower($_SESSION['types_docs'][$doc->id_type_doc]->code_doc).".class.php");
  20. $classe_doc = "doc_".$_SESSION['types_docs'][$doc->id_type_doc]->code_doc;
  21. $document = new $classe_doc ($ref_doc);
  22. $document->open_doc();
  23. if (!$document->getRef_doc()) { return false; }
  24. /* Mise en cache de session
  25. $_SESSION['user']->doc_actu = $document;
  26. */
  27. return $document;
  28. }
  29. // Fonction permettant de créer un document
  30. function create_doc ($id_type_doc) {
  31. global $DIR;
  32. // Creation de l'objet correspondant
  33. require_once ($DIR."documents/_doc_".strtolower($_SESSION['types_docs'][$id_type_doc]->code_doc).".class.php");
  34. $classe_doc = "doc_".$_SESSION['types_docs'][$id_type_doc]->code_doc;
  35. $document = new $classe_doc ();
  36. $document->create_doc ();
  37. if (!$document->getRef_doc()) { return false; }
  38. return $document;
  39. }
  40. // Définition du type de ligne d'un document
  41. function define_type_of_line ($ref_article) {
  42. if ($ref_article == "INFO" || $ref_article == "INFORMATION") {
  43. return "information";
  44. }
  45. elseif ($ref_article == "SSTOTAL") {
  46. return "soustotal";
  47. }
  48. elseif (substr($ref_article, 0, 4) == "TAXE") {
  49. return "taxe";
  50. }
  51. else {
  52. return "article";
  53. }
  54. }
  55. // **********************************************************
  56. // gestion des différents modčles de ligne d'information
  57. // **********************************************************
  58. function charge_docs_infos_lines ($id_type_doc = "") {
  59. global $bdd;
  60. $modeles_lignes = array();
  61. $query = "SELECT id_doc_info_line, id_type_doc, lib_line, desc_line, desc_line_interne
  62. FROM docs_infos_lines
  63. ";
  64. $resultat = $bdd->query ($query);
  65. while ($ligne = $resultat->fetchObject()) {
  66. if ($id_type_doc) {
  67. $tmp_array = explode(";", $ligne->id_type_doc);
  68. if (in_array($id_type_doc, $tmp_array)) {
  69. $modeles_lignes[] = $ligne;
  70. }
  71. } else {
  72. $modeles_lignes[] = $ligne;
  73. }
  74. }
  75. return $modeles_lignes;
  76. }
  77. //chargement des infos d'un modčle ligne
  78. function charge_doc_info_line ($id_doc_info_line) {
  79. global $bdd;
  80. $query = "SELECT id_doc_info_line, id_type_doc, lib_line, desc_line, desc_line_interne
  81. FROM docs_infos_lines
  82. WHERE id_doc_info_line = '".$id_doc_info_line."'
  83. ";
  84. $resultat = $bdd->query ($query);
  85. if (!$ligne = $resultat->fetchObject()) { return false;}
  86. return $ligne;
  87. }
  88. //ajout des infos d'un modčle ligne
  89. function add_doc_info_line ($id_type_doc, $lib_line, $desc_line, $desc_line_interne) {
  90. global $bdd;
  91. if (!count($id_type_doc)) {
  92. $GLOBALS['_ALERTES']['bad_id_type_doc'] = 1;
  93. }
  94. if (!$lib_line) {
  95. $GLOBALS['_ALERTES']['bad_lib_line'] = 1;
  96. }
  97. // *************************************************
  98. // Verification qu'il n'y a pas eu d'erreur
  99. if (count($GLOBALS['_ALERTES'])) {
  100. return false;
  101. }
  102. $query = "INSERT INTO docs_infos_lines (id_type_doc, lib_line, desc_line, desc_line_interne)
  103. VALUES ('".$id_type_doc."', '".addslashes($lib_line)."', '".addslashes($desc_line)."', '".addslashes($desc_line_interne)."')
  104. ";
  105. $bdd->exec ($query);
  106. return true;
  107. }
  108. //maj des infos d'un modčle ligne
  109. function maj_doc_info_line ($id_doc_info_line, $id_type_doc, $lib_line, $desc_line, $desc_line_interne) {
  110. global $bdd;
  111. if (!count($id_type_doc)) {
  112. $GLOBALS['_ALERTES']['bad_id_type_doc'] = 1;
  113. }
  114. if (!$lib_line) {
  115. $GLOBALS['_ALERTES']['bad_lib_line'] = 1;
  116. }
  117. // *************************************************
  118. // Verification qu'il n'y a pas eu d'erreur
  119. if (count($GLOBALS['_ALERTES'])) {
  120. return false;
  121. }
  122. $query = "UPDATE docs_infos_lines
  123. SET id_type_doc = '".$id_type_doc."', lib_line = '".addslashes($lib_line)."', desc_line = '".addslashes($desc_line)."', desc_line_interne = '".addslashes($desc_line_interne)."'
  124. WHERE id_doc_info_line = '".$id_doc_info_line."'
  125. ";
  126. $bdd->exec ($query);
  127. return true;
  128. }
  129. //del des infos d'un modčle ligne
  130. function del_doc_info_line ($id_doc_info_line) {
  131. global $bdd;
  132. $query = "DELETE FROM docs_infos_lines
  133. WHERE id_doc_info_line = '".$id_doc_info_line."'
  134. ";
  135. $bdd->exec ($query);
  136. return true;
  137. }
  138. // Supprime les saut de ligne d'une chaine
  139. function defaire_sauts2lignes ($texte) {
  140. $texte = str_replace($texte, "\n", "<br>");
  141. $texte = str_replace($texte, "\r", "<br>");
  142. return $texte;
  143. }
  144. // Remet les saut de ligne d'une chaine
  145. function refaire_sauts2lignes ($texte) {
  146. $texte = str_replace($texte, "<br>", "\n");
  147. return $texte;
  148. }
  149. // Charge la liste des commandes en cours
  150. function get_commandes_clients ($id_stock = "") {
  151. global $bdd;
  152. if (!$id_stock) {
  153. $id_stock = $_SESSION['magasin']->getId_stock ();
  154. $where_doc = "";
  155. } else {
  156. $where_doc = " && dcdc.id_stock = ".$id_stock;
  157. }
  158. $commandes = array();
  159. $query = "SELECT d.ref_doc, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc, d.ref_contact, d.nom_contact, dcdc.id_stock, s.lib_stock, s.abrev_stock,
  160. ( SELECT SUM(dl.qte * dl.pu_ht * (1-dl.remise/100) * (1+dl.tva/100))
  161. FROM docs_lines dl
  162. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  163. ) as montant_ttc,
  164. d.date_creation_doc as date_doc
  165. FROM documents d
  166. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  167. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  168. LEFT JOIN docs_lines dl ON d.ref_doc = dl.ref_doc
  169. LEFT JOIN doc_cdc dcdc ON d.ref_doc = dcdc.ref_doc
  170. LEFT JOIN stocks s ON s.id_stock = dcdc.id_stock
  171. WHERE d.id_type_doc = 2 && d.id_etat_doc = 9 ".$where_doc."
  172. GROUP BY d.ref_doc
  173. ORDER BY date_doc DESC ";
  174. $resultat = $bdd->query ($query);
  175. while ($doc = $resultat->fetchObject()) {
  176. $doc->lines = array();
  177. $query2 = "SELECT dl.ref_article, dl.lib_article, dl.desc_article, SUM(dl.qte) as qte, SUM(dlc.qte_livree) as qte_livree,
  178. a.modele, a.ref_oem, a.ref_interne, a.ref_constructeur, ann.nom nom_constructeur, ac.lib_art_categ,
  179. ( SELECT SUM(sa.qte)
  180. FROM stocks_articles sa
  181. WHERE sa.ref_article = dl.ref_article && id_stock = ".$id_stock."
  182. ) as qte_stock
  183. FROM docs_lines dl
  184. LEFT JOIN doc_lines_cdc dlc ON dl.ref_doc_line = dlc.ref_doc_line
  185. LEFT JOIN articles a ON dl.ref_article = a.ref_article
  186. LEFT JOIN annuaire ann ON a.ref_constructeur = ann.ref_contact
  187. LEFT JOIN art_categs ac ON a.ref_art_categ = ac.ref_art_categ
  188. WHERE ref_doc = '".$doc->ref_doc."' && ISNULL(dl.ref_doc_line_parent)
  189. GROUP BY dl.qte, dl.ref_article
  190. ORDER BY dl.ordre ";
  191. $resultat2 = $bdd->query($query2);
  192. while ($line = $resultat2->fetchObject()) { $doc->lines[] = $line; }
  193. $commandes[] = $doc;
  194. }
  195. return $commandes;
  196. }
  197. // Charge la liste des commandes en cours
  198. function get_commandes_fournisseurs ($id_stock = "") {
  199. global $bdd;
  200. if (!$id_stock) {
  201. $where_doc = "";
  202. } else {
  203. $where_doc = " && dcdf.id_stock = ".$id_stock;
  204. }
  205. $commandes = array();
  206. $query = "SELECT d.ref_doc, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc, ref_contact, nom_contact, dcdf.id_stock, s.lib_stock, s.abrev_stock,
  207. ( SELECT SUM(qte * pu_ht * (1-remise/100) * (1+tva/100))
  208. FROM docs_lines dl
  209. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  210. ) as montant_ttc,
  211. d.date_creation_doc as date_doc
  212. FROM documents d
  213. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  214. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  215. LEFT JOIN docs_lines dl ON d.ref_doc = dl.ref_doc
  216. LEFT JOIN doc_cdf dcdf ON d.ref_doc = dcdf.ref_doc
  217. LEFT JOIN stocks s ON s.id_stock = dcdf.id_stock
  218. WHERE d.id_type_doc = 6 && d.id_etat_doc = 27 ".$where_doc."
  219. GROUP BY ref_doc
  220. ORDER BY date_doc DESC ";
  221. $resultat = $bdd->query ($query);
  222. while ($doc = $resultat->fetchObject()) {
  223. $doc->lines = array();
  224. $query2 = "SELECT dl.ref_article, dl.lib_article, dl.desc_article, dl.qte, dlf.qte_recue as qte_recue,
  225. a.ref_oem, a.ref_interne, a.ref_constructeur, ann.nom nom_constructeur, ac.lib_art_categ
  226. FROM docs_lines dl
  227. LEFT JOIN doc_lines_cdf dlf ON dl.ref_doc_line = dlf.ref_doc_line
  228. LEFT JOIN articles a ON dl.ref_article = a.ref_article
  229. LEFT JOIN annuaire ann ON a.ref_constructeur = ann.ref_contact
  230. LEFT JOIN art_categs ac ON a.ref_art_categ = ac.ref_art_categ
  231. WHERE ref_doc = '".$doc->ref_doc."' && ISNULL(dl.ref_doc_line_parent)
  232. ORDER BY dl.ordre ";
  233. $resultat2 = $bdd->query($query2);
  234. while ($line = $resultat2->fetchObject()) { $doc->lines[] = $line; }
  235. $commandes[] = $doc;
  236. }
  237. return $commandes;
  238. }
  239. // Fonction retournant la liste des Bons de Livraisons Non Facturés
  240. function get_livraisons_to_facture ($id_stock = NULL, $order = "") {
  241. global $bdd;
  242. if (!$order) { $order = " date_creation ASC";}
  243. $bls = array();
  244. $query = "SELECT d.ref_doc, d.ref_contact, d.nom_contact, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc,
  245. d.date_creation_doc date_creation,
  246. dbc.id_stock, s.lib_stock, s.abrev_stock,
  247. ( SELECT SUM(qte * pu_ht * (1-remise/100) * (1+tva/100))
  248. FROM docs_lines dl
  249. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  250. ) as montant_ttc
  251. FROM documents d
  252. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  253. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  254. LEFT JOIN doc_blc dbc ON d.ref_doc = dbc.ref_doc
  255. LEFT JOIN stocks s ON s.id_stock = dbc.id_stock
  256. LEFT JOIN documents_liaisons dl ON d.ref_doc = dl.ref_doc_source && dl.active = 1
  257. LEFT JOIN documents d2 ON d2.ref_doc = dl.ref_doc_destination
  258. WHERE (d.id_type_doc = 3 && d.id_etat_doc != 12) && dbc.id_stock = ".$id_stock."
  259. && d.ref_doc NOT IN (
  260. SELECT distinct d.ref_doc
  261. FROM documents d
  262. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  263. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  264. LEFT JOIN doc_blc dbc ON d.ref_doc = dbc.ref_doc
  265. LEFT JOIN stocks s ON s.id_stock = dbc.id_stock
  266. LEFT JOIN documents_liaisons dl ON d.ref_doc = dl.ref_doc_source && dl.active = 1
  267. LEFT JOIN documents d2 ON d2.ref_doc = dl.ref_doc_destination && (d2.id_type_doc = 4 && d2.id_etat_doc!=17)
  268. WHERE (d.id_type_doc = 3 && d.id_etat_doc != 12) && d2.ref_doc IS NOT NULL && dbc.id_stock = ".$id_stock."
  269. )
  270. ORDER BY ". $order;
  271. $resultat = $bdd->query($query);
  272. while ($tmp = $resultat->fetchObject()) { $bls[] = $tmp; }
  273. return $bls;
  274. }
  275. // Fonction retournant la liste des Bons de Livraisons Fournisseurs Non Facturés
  276. function get_livraisons_fournisseur_to_facture ($id_stock = NULL, $order = "") {
  277. global $bdd;
  278. if (!$order) { $order = " date_creation ASC";}
  279. $bls = array();
  280. $query = "SELECT d.ref_doc, d.ref_contact, d.nom_contact, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc,
  281. d.date_creation_doc date_creation,
  282. dbf.id_stock, s.lib_stock, s.abrev_stock,
  283. ( SELECT SUM(qte * pu_ht * (1-remise/100) * (1+tva/100))
  284. FROM docs_lines dl
  285. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  286. ) as montant_ttc
  287. FROM documents d
  288. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  289. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  290. LEFT JOIN doc_blf dbf ON d.ref_doc = dbf.ref_doc
  291. LEFT JOIN stocks s ON s.id_stock = dbf.id_stock
  292. LEFT JOIN documents_liaisons dl ON d.ref_doc = dl.ref_doc_source && dl.active = 1
  293. LEFT JOIN documents d2 ON d2.ref_doc = dl.ref_doc_destination && ( d2.id_type_doc = 8 && d2.id_etat_doc != 33 )
  294. WHERE (d.id_type_doc = 7 && d.id_etat_doc != 30) && d2.ref_doc IS NULL && dbf.id_stock = ".$id_stock."
  295. ORDER BY ". $order;
  296. $resultat = $bdd->query($query);
  297. while ($tmp = $resultat->fetchObject()) { $bls[] = $tmp; }
  298. return $bls;
  299. }
  300. // Fonction retournant la liste des Bons de Livraisons Non Facturés d'un contact spécifique
  301. function get_client_livraisons_to_facture ($ref_contact , $order = "") {
  302. global $bdd;
  303. if (!$order) { $order = " date_creation ASC";}
  304. $bls = array();
  305. $query = "SELECT d.ref_doc, d.ref_contact, d.nom_contact, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc,
  306. d.date_creation_doc date_creation,
  307. dbc.id_stock, s.lib_stock, s.abrev_stock,
  308. ( SELECT SUM(qte * pu_ht * (1-remise/100) * (1+tva/100))
  309. FROM docs_lines dl
  310. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  311. ) as montant_ttc
  312. FROM documents d
  313. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  314. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  315. LEFT JOIN doc_blc dbc ON d.ref_doc = dbc.ref_doc
  316. LEFT JOIN stocks s ON s.id_stock = dbc.id_stock
  317. LEFT JOIN documents_liaisons dl ON d.ref_doc = dl.ref_doc_source && dl.active = 1
  318. LEFT JOIN documents d2 ON d2.ref_doc = dl.ref_doc_destination && ( d2.id_type_doc = 4 && d2.id_etat_doc != 17 )
  319. WHERE (d.id_type_doc = 3 && d.id_etat_doc != 12) && d2.ref_doc IS NULL && d.ref_contact = '".$ref_contact."'
  320. ORDER BY ". $order;
  321. $resultat = $bdd->query($query);
  322. while ($tmp = $resultat->fetchObject()) { $bls[] = $tmp; }
  323. return $bls;
  324. }
  325. // Fonction retournant le nombre des Factures non réglées
  326. function count_factures_to_pay ($id_client_categ = "" ) {
  327. global $bdd;
  328. global $DEFAUT_ID_CLIENT_CATEG;
  329. $where = "";
  330. if (!$id_client_categ) {
  331. $where = " && ISNULL(ac.id_client_categ)";
  332. } elseif (trim($id_client_categ) == $DEFAUT_ID_CLIENT_CATEG) {
  333. $where = " && (ac.id_client_categ = '".$id_client_categ."' || ISNULL(ac.id_client_categ))";
  334. } else {
  335. $where = " && ac.id_client_categ = '".$id_client_categ."' ";
  336. }
  337. $nb_factures = 0;
  338. $query = "SELECT d.ref_doc, d.date_creation_doc date_creation
  339. FROM documents d
  340. LEFT JOIN doc_fac df ON d.ref_doc = df.ref_doc
  341. LEFT JOIN annu_client ac ON ac.ref_contact = d.ref_contact
  342. LEFT JOIN factures_relances_niveaux fnr ON df.id_niveau_relance = fnr.id_niveau_relance
  343. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  344. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  345. LEFT JOIN magasins m ON m.id_magasin = df.id_magasin
  346. WHERE d.id_type_doc = 4 && d.id_etat_doc != 17 && d.id_etat_doc != 19 ".$where."
  347. ORDER BY fnr.id_niveau_relance ASC, date_creation DESC";
  348. $resultat = $bdd->query($query);
  349. while ($tmp = $resultat->fetchObject()) { $nb_factures ++; }
  350. return $nb_factures;
  351. }
  352. // Fonction retournant le nombre des Factures non réglées par niveau de relance
  353. function count_niveau_factures_to_pay ($id_client_categ = "" , $id_niveau_relance = "") {
  354. global $bdd;
  355. global $DEFAUT_ID_CLIENT_CATEG;
  356. if (is_null($id_niveau_relance))$id_niveau_relance = false;
  357. $where = "";
  358. if (!$id_client_categ) {
  359. $where = " && ISNULL(ac.id_client_categ)";
  360. } elseif (trim($id_client_categ) == $DEFAUT_ID_CLIENT_CATEG) {
  361. $where = " && (ac.id_client_categ = '".$id_client_categ."' || ISNULL(ac.id_client_categ))";
  362. } else {
  363. $where = " && ac.id_client_categ = '".$id_client_categ."' ";
  364. }
  365. if ($id_niveau_relance) {
  366. $where .= " && df.id_niveau_relance = '".$id_niveau_relance."' ";
  367. } else {
  368. $where .= " && df.id_niveau_relance IS NULL";
  369. }
  370. $nb_factures = 0;
  371. $query = "SELECT d.ref_doc, d.date_creation_doc date_creation
  372. FROM documents d
  373. LEFT JOIN doc_fac df ON d.ref_doc = df.ref_doc
  374. LEFT JOIN annu_client ac ON ac.ref_contact = d.ref_contact
  375. LEFT JOIN factures_relances_niveaux fnr ON df.id_niveau_relance = fnr.id_niveau_relance
  376. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  377. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  378. LEFT JOIN magasins m ON m.id_magasin = df.id_magasin
  379. WHERE d.id_type_doc = 4 && d.id_etat_doc != 17 && d.id_etat_doc != 19 ".$where."
  380. ORDER BY fnr.id_niveau_relance ASC, date_creation DESC";
  381. $resultat = $bdd->query($query);
  382. while ($tmp = $resultat->fetchObject()) { $nb_factures ++; }
  383. return $nb_factures;
  384. }
  385. // Fonction retournant la liste des Factures client non réglées
  386. function get_factures_to_pay_total ($id_client_categ = "" , $id_niveau_relance = "" ) {
  387. global $bdd;
  388. global $DEFAUT_ID_CLIENT_CATEG;
  389. $where = "";
  390. if (!$id_client_categ) {
  391. $where = " && ISNULL(ac.id_client_categ)";
  392. } elseif (trim($id_client_categ) == $DEFAUT_ID_CLIENT_CATEG) {
  393. $where = " && (ac.id_client_categ = '".$id_client_categ."' || ISNULL(ac.id_client_categ))";
  394. } else {
  395. $where = " && ac.id_client_categ = '".$id_client_categ."' ";
  396. }
  397. if ($id_niveau_relance) {
  398. $where .= " && df.id_niveau_relance = '".$id_niveau_relance."' ";
  399. } else {
  400. $where .= " && df.id_niveau_relance IS NULL";
  401. }
  402. $factures_total = 0;
  403. $query = "SELECT d.ref_doc,
  404. ( SELECT SUM(qte * pu_ht * (1-remise/100) * (1+tva/100))
  405. FROM docs_lines dl
  406. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  407. ) as montant_ttc
  408. FROM documents d
  409. LEFT JOIN doc_fac df ON d.ref_doc = df.ref_doc
  410. LEFT JOIN annu_client ac ON ac.ref_contact = d.ref_contact
  411. LEFT JOIN factures_relances_niveaux fnr ON df.id_niveau_relance = fnr.id_niveau_relance
  412. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  413. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  414. LEFT JOIN magasins m ON m.id_magasin = df.id_magasin
  415. WHERE d.id_type_doc = 4 && d.id_etat_doc != 17 && d.id_etat_doc != 19 ".$where."
  416. ";
  417. $resultat = $bdd->query($query);
  418. while ($tmp = $resultat->fetchObject()) { $factures_total += $tmp->montant_ttc; }
  419. return $factures_total;
  420. }
  421. // Fonction retournant la liste des Factures clients non réglées
  422. function get_factures_to_pay ($id_client_categ = "" , $id_niveau_relance = "" ) {
  423. global $bdd;
  424. global $DEFAUT_ID_CLIENT_CATEG;
  425. global $COMPTA_FACTURE_TOPAY_SHOWED_FICHES;
  426. global $search;
  427. $query_limit = (($search['page_to_show']-1)*$search['fiches_par_page']).", ".$search['fiches_par_page'];
  428. $where = "";
  429. if (!$id_client_categ) {
  430. $where = " && ISNULL(ac.id_client_categ)";
  431. } elseif (trim($id_client_categ) == $DEFAUT_ID_CLIENT_CATEG) {
  432. $where = " && (ac.id_client_categ = '".$id_client_categ."' || ISNULL(ac.id_client_categ))";
  433. } else {
  434. $where = " && ac.id_client_categ = '".$id_client_categ."' ";
  435. }
  436. if ($id_niveau_relance) {
  437. $where .= " && df.id_niveau_relance = '".$id_niveau_relance."' ";
  438. } else {
  439. $where .= " && df.id_niveau_relance IS NULL";
  440. }
  441. $factures = array();
  442. $query = "SELECT d.ref_doc, d.ref_contact, d.nom_contact, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc,
  443. d.date_creation_doc date_creation,
  444. df.id_magasin , m.lib_magasin, m.abrev_magasin,
  445. df.date_echeance, df.date_next_relance, fnr.id_niveau_relance, fnr.niveau_relance, fnr.lib_niveau_relance
  446. FROM documents d
  447. LEFT JOIN doc_fac df ON d.ref_doc = df.ref_doc
  448. LEFT JOIN annu_client ac ON ac.ref_contact = d.ref_contact
  449. LEFT JOIN factures_relances_niveaux fnr ON df.id_niveau_relance = fnr.id_niveau_relance
  450. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  451. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  452. LEFT JOIN magasins m ON m.id_magasin = df.id_magasin
  453. WHERE d.id_type_doc = 4 && d.id_etat_doc != 17 && d.id_etat_doc != 19 ".$where."
  454. ORDER BY fnr.id_niveau_relance ASC, ".$search['orderby']." ".$search['orderorder']."
  455. LIMIT ".$query_limit;
  456. $resultat = $bdd->query($query);
  457. while ($tmp = $resultat->fetchObject()) {
  458. $document = open_doc ($tmp->ref_doc);
  459. $tmp->montant_ttc = $document->getMontant_ttc();
  460. $tmp->montant_du = $document->getMontant_to_pay();
  461. $factures[] = $tmp;
  462. }
  463. return $factures;
  464. }
  465. //*********************************************************
  466. //facture fournisseur non réglées
  467. // Fonction retournant le nombre des Factures fournisseur non réglées
  468. function count_niveau_factures_fournisseur_to_pay ($id_fournisseur_categ = "" ) {
  469. global $bdd;
  470. global $DEFAUT_ID_FOURNISSEUR_CATEG;
  471. $where = "";
  472. if (!$id_fournisseur_categ) {
  473. $where = " && ISNULL(ac.id_fournisseur_categ)";
  474. } elseif (trim($id_fournisseur_categ) == $DEFAUT_ID_FOURNISSEUR_CATEG) {
  475. $where = " && (ac.id_fournisseur_categ = '".$id_fournisseur_categ."')";
  476. } else {
  477. $where = " && ac.id_fournisseur_categ = '".$id_fournisseur_categ."' ";
  478. }
  479. $nb_factures = 0;
  480. $query = "SELECT d.ref_doc, d.date_creation_doc date_creation
  481. FROM documents d
  482. LEFT JOIN doc_faf df ON d.ref_doc = df.ref_doc
  483. LEFT JOIN annu_fournisseur ac ON ac.ref_fournisseur = d.ref_contact
  484. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  485. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  486. WHERE d.id_type_doc = 8 && d.id_etat_doc != 33 && d.id_etat_doc != 35 ".$where."
  487. ORDER BY date_creation DESC";
  488. $resultat = $bdd->query($query);
  489. while ($tmp = $resultat->fetchObject()) { $nb_factures ++; }
  490. return $nb_factures;
  491. }
  492. // Fonction retournant la liste des Factures client non réglées
  493. function get_factures_fournisseur_to_pay_total ($id_fournisseur_categ = "" ) {
  494. global $bdd;
  495. global $DEFAUT_ID_FOURNISSEUR_CATEG;
  496. $where = "";
  497. if (!$id_fournisseur_categ) {
  498. $where = " && ISNULL(ac.id_fournisseur_categ)";
  499. } elseif (trim($id_fournisseur_categ) == $DEFAUT_ID_FOURNISSEUR_CATEG) {
  500. $where = " && (ac.id_fournisseur_categ = '".$id_fournisseur_categ."')";
  501. } else {
  502. $where = " && ac.id_fournisseur_categ = '".$id_fournisseur_categ."' ";
  503. }
  504. $factures_total = 0;
  505. $query = "SELECT d.ref_doc,
  506. ( SELECT SUM(qte * pu_ht * (1-remise/100) * (1+tva/100))
  507. FROM docs_lines dl
  508. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  509. ) as montant_ttc
  510. FROM documents d
  511. LEFT JOIN doc_faf df ON d.ref_doc = df.ref_doc
  512. LEFT JOIN annu_fournisseur ac ON ac.ref_fournisseur = d.ref_contact
  513. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  514. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  515. WHERE d.id_type_doc = 8 && d.id_etat_doc != 33 && d.id_etat_doc != 35 ".$where."
  516. ";
  517. $resultat = $bdd->query($query);
  518. while ($tmp = $resultat->fetchObject()) { $factures_total += $tmp->montant_ttc; }
  519. return $factures_total;
  520. }
  521. // Fonction retournant la liste des Factures fournisseur non réglées
  522. function get_factures_fournisseur_to_pay ($id_fournisseur_categ = "" ) {
  523. global $bdd;
  524. global $DEFAUT_ID_FOURNISSEUR_CATEG;
  525. global $COMPTA_FACTURE_TOPAY_SHOWED_FICHES;
  526. global $search;
  527. $query_limit = (($search['page_to_show']-1)*$search['fiches_par_page']).", ".$search['fiches_par_page'];
  528. $where = "";
  529. if (!$id_fournisseur_categ) {
  530. $where = " && ISNULL(ac.id_fournisseur_categ)";
  531. } elseif (trim($id_fournisseur_categ) == $DEFAUT_ID_FOURNISSEUR_CATEG) {
  532. $where = " && (ac.id_fournisseur_categ = '".$id_fournisseur_categ."')";
  533. } else {
  534. $where = " && ac.id_fournisseur_categ = '".$id_fournisseur_categ."' ";
  535. }
  536. $factures = array();
  537. $query = "SELECT d.ref_doc, d.ref_contact, d.nom_contact, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc,
  538. d.date_creation_doc date_creation,
  539. df.date_echeance
  540. FROM documents d
  541. LEFT JOIN doc_faf df ON d.ref_doc = df.ref_doc
  542. LEFT JOIN annu_fournisseur ac ON ac.ref_fournisseur = d.ref_contact
  543. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  544. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  545. WHERE d.id_type_doc = 8 && d.id_etat_doc != 33 && d.id_etat_doc != 35 ".$where."
  546. ORDER BY ".$search['orderby']." ".$search['orderorder']."
  547. LIMIT ".$query_limit;
  548. $resultat = $bdd->query($query);
  549. while ($tmp = $resultat->fetchObject()) {
  550. $document = open_doc ($tmp->ref_doc);
  551. $tmp->montant_ttc = $document->getMontant_to_pay();
  552. $factures[] = $tmp;
  553. }
  554. return $factures;
  555. }
  556. //*********************************************************
  557. // Fonction retournant la liste des factures non réglées pour un contact défini
  558. function get_client_factures_to_pay ($ref_contact = "" ) {
  559. global $bdd;
  560. $where = "";
  561. $factures = array();
  562. $query = "SELECT d.ref_doc, d.ref_contact, d.nom_contact, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc,
  563. d.date_creation_doc date_creation,
  564. df.id_magasin , m.lib_magasin, m.abrev_magasin,
  565. ( SELECT SUM(qte * pu_ht * (1-remise/100) * (1+tva/100))
  566. FROM docs_lines dl
  567. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  568. ) as montant_ttc,
  569. df.date_echeance, df.date_next_relance, fnr.id_niveau_relance, fnr.niveau_relance, fnr.lib_niveau_relance
  570. FROM documents d
  571. LEFT JOIN doc_fac df ON d.ref_doc = df.ref_doc
  572. LEFT JOIN annu_client ac ON ac.ref_contact = d.ref_contact
  573. LEFT JOIN factures_relances_niveaux fnr ON df.id_niveau_relance = fnr.id_niveau_relance
  574. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  575. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  576. LEFT JOIN magasins m ON m.id_magasin = df.id_magasin
  577. WHERE d.id_type_doc = 4 && d.id_etat_doc != 17 && d.id_etat_doc != 19 ".$where." && d.ref_contact = '".$ref_contact."'
  578. ORDER BY fnr.id_niveau_relance ASC, date_creation DESC";
  579. $resultat = $bdd->query($query);
  580. while ($tmp = $resultat->fetchObject()) {
  581. $document = open_doc ($tmp->ref_doc);
  582. $tmp->montant_ttc = $document->getMontant_to_pay();
  583. $factures[] = $tmp;
  584. }
  585. return $factures;
  586. }
  587. // Charge la liste de l'historique des ventes (BLC
  588. function get_historique_ventes ($id_stock = "", $page_to_show = "1", $fiches_par_page = "10", $date_debut ="", $date_fin ="", $type_values ="") {
  589. global $bdd;
  590. $query_limit = (($page_to_show-1)*$fiches_par_page).", ".$fiches_par_page;
  591. $where_doc = " d.id_type_doc = 4 && d.id_etat_doc != '17'";
  592. if ($type_values == "CDC") {
  593. $where_doc = " d.id_type_doc = 2 && d.id_etat_doc != '7'";
  594. }
  595. if ($date_debut) {
  596. $where_doc .= " && d.date_creation_doc > '".date_Fr_to_Us($date_debut)." 00:00:00' ";
  597. }
  598. if ($date_fin) {
  599. $where_doc .= " && d.date_creation_doc <= '".date_Fr_to_Us($date_fin)." 23:59:59' ";
  600. }
  601. $histo_ventes = array();
  602. $query = "SELECT d.ref_doc
  603. FROM documents d
  604. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  605. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  606. LEFT JOIN docs_lines dl ON d.ref_doc = dl.ref_doc
  607. WHERE ".$where_doc."
  608. GROUP BY d.ref_doc
  609. ORDER BY date_creation_doc DESC
  610. LIMIT ".$query_limit;
  611. $resultat = $bdd->query ($query);
  612. while ($doc = $resultat->fetchObject()) { $histo_ventes[] = open_doc ($doc->ref_doc); }
  613. //renvois du nombre total de résultat pour la pagination
  614. $GLOBALS['_INFOS']['HISTO_VENTES']['nb_fiches'] = 0;
  615. $query = "SELECT d.ref_doc
  616. FROM documents d
  617. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  618. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  619. LEFT JOIN docs_lines dl ON d.ref_doc = dl.ref_doc
  620. WHERE ".$where_doc."
  621. GROUP BY d.ref_doc" ;
  622. $resultat = $bdd->query($query);
  623. while ($result = $resultat->fetchObject()) { $GLOBALS['_INFOS']['HISTO_VENTES']['nb_fiches'] += 1; }
  624. return $histo_ventes;
  625. }
  626. // Charge la liste de l'historique des achats (BLF)
  627. function get_historique_achats ($id_stock = "", $page_to_show = "1", $fiches_par_page = "10", $date_debut ="", $date_fin ="") {
  628. global $bdd;
  629. $query_limit = (($page_to_show-1)*$fiches_par_page).", ".$fiches_par_page;
  630. if (!$id_stock) {
  631. $id_stock = $_SESSION['magasin']->getId_stock ();
  632. $where_doc = "";
  633. } else {
  634. $where_doc = " && dblf.id_stock = ".$id_stock;
  635. }
  636. if ($date_debut) {
  637. $where_doc .= " && d.date_creation_doc > '".date_Fr_to_Us($date_debut)." 00:00:00' ";
  638. }
  639. if ($date_fin) {
  640. $where_doc .= " && d.date_creation_doc <= '".date_Fr_to_Us($date_fin)." 23:59:59' ";
  641. }
  642. $histo_ventes = array();
  643. $query = "SELECT d.ref_doc, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc, d.ref_contact, d.nom_contact, dblf.id_stock, s.lib_stock, s.abrev_stock,
  644. ( SELECT SUM(dl.qte * dl.pu_ht * (1-dl.remise/100) * (1+dl.tva/100))
  645. FROM docs_lines dl
  646. WHERE d.ref_doc = dl.ref_doc && ISNULL(dl.ref_doc_line_parent) && visible = 1
  647. ) as montant_ttc,
  648. d.date_creation_doc as date_doc
  649. FROM documents d
  650. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  651. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  652. LEFT JOIN docs_lines dl ON d.ref_doc = dl.ref_doc
  653. LEFT JOIN doc_blf dblf ON d.ref_doc = dblf.ref_doc
  654. LEFT JOIN stocks s ON s.id_stock = dblf.id_stock
  655. WHERE d.id_type_doc = 7 && d.id_etat_doc != '30' ".$where_doc."
  656. GROUP BY d.ref_doc
  657. ORDER BY date_doc DESC
  658. LIMIT ".$query_limit;
  659. $resultat = $bdd->query ($query);
  660. while ($doc = $resultat->fetchObject()) {
  661. $doc->liaison_fac = array();
  662. $query3 = "SELECT dl.ref_doc_destination,
  663. ( SELECT SUM(dli.qte * dli.pu_ht * (1-dli.remise/100) * (1+dli.tva/100))
  664. FROM docs_lines dli
  665. WHERE dl.ref_doc_destination = dli.ref_doc && visible = 1
  666. ) as montant_ttc, dl.active, d.id_type_doc, dt.lib_type_doc, d.id_etat_doc, de.lib_etat_doc,
  667. d.date_creation_doc date_creation
  668. FROM documents_liaisons dl
  669. LEFT JOIN documents d ON d.ref_doc = dl.ref_doc_destination
  670. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  671. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  672. WHERE ref_doc_source = '".$doc->ref_doc."' && d.id_type_doc = '4' && d.id_etat_doc != '17'
  673. GROUP BY ref_doc_destination ";
  674. $resultat3 = $bdd->query($query3);
  675. while ($liaison = $resultat3->fetchObject()) {
  676. $doc->liaison_fac[] = $liaison;
  677. }
  678. $doc->lines = array();
  679. $query2 = "SELECT dl.ref_article, dl.lib_article, dl.desc_article, SUM(dl.qte) as qte,
  680. a.ref_oem, a.ref_interne, a.ref_constructeur, ann.nom nom_constructeur, ac.lib_art_categ,
  681. SUM(dl.qte * dl.pu_ht * (1-dl.remise/100) * (1+dl.tva/100)) as montant
  682. FROM docs_lines dl
  683. LEFT JOIN doc_lines_blf dlb ON dl.ref_doc_line = dlb.ref_doc_line
  684. LEFT JOIN articles a ON dl.ref_article = a.ref_article
  685. LEFT JOIN annuaire ann ON a.ref_constructeur = ann.ref_contact
  686. LEFT JOIN art_categs ac ON a.ref_art_categ = ac.ref_art_categ
  687. WHERE ref_doc = '".$doc->ref_doc."' && ISNULL(dl.ref_doc_line_parent)
  688. GROUP BY dl.qte, dl.ref_article
  689. ORDER BY dl.ordre ";
  690. $resultat2 = $bdd->query($query2);
  691. while ($line = $resultat2->fetchObject()) { $doc->lines[] = $line; }
  692. $histo_ventes[] = $doc;
  693. }
  694. //renvois du nombre total de résultat pour la pagination
  695. $GLOBALS['_INFOS']['HISTO_ACHATS']['nb_fiches'] = 0;
  696. $query = "SELECT d.ref_doc
  697. FROM documents d
  698. LEFT JOIN documents_types dt ON d.id_type_doc = dt.id_type_doc
  699. LEFT JOIN documents_etats de ON d.id_etat_doc = de.id_etat_doc
  700. LEFT JOIN docs_lines dl ON d.ref_doc = dl.ref_doc
  701. LEFT JOIN doc_blf dblf ON d.ref_doc = dblf.ref_doc
  702. WHERE d.id_type_doc = 7 && d.id_etat_doc != '30' ".$where_doc."
  703. GROUP BY d.ref_doc" ;
  704. $resultat = $bdd->query($query);
  705. while ($result = $resultat->fetchObject()) { $GLOBALS['_INFOS']['HISTO_ACHATS']['nb_fiches'] += 1; }
  706. return $histo_ventes;
  707. }
  708. // liste des modes d'edition
  709. function liste_mode_edition () {
  710. global $bdd;
  711. $editions_modes = array();
  712. $query = "SELECT id_edition_mode, lib_edition_mode, code_edition_mode
  713. FROM editions_modes
  714. WHERE actif = 1 ";
  715. $resultat = $bdd->query ($query);
  716. while ($e_mode = $resultat->fetchObject()) { $editions_modes[] = $e_mode; }
  717. return $editions_modes;
  718. }
  719. //liste des etats de documents
  720. function get_etat($doc_type) {
  721. global $bdd;
  722. $etats_liste = array();
  723. if ($doc_type) {
  724. $query = "SELECT id_etat_doc, lib_etat_doc, id_type_doc, ordre
  725. FROM documents_etats
  726. WHERE id_type_doc = '".$doc_type."'
  727. ORDER BY ordre ASC";
  728. $resultat = $bdd->query ($query);
  729. while ($etats = $resultat->fetchObject()) { $etats_liste[] = $etats; }
  730. }
  731. $result[] = "=Tous";
  732. $result[] = implode(",", get_etat_is_open(1, $doc_type))."=Documents en cours";
  733. $result[] = implode(",", get_etat_is_open(0, $doc_type))."=Documents en archive";
  734. // on boucle sur tous les éléments
  735. if (count($etats_liste)>0) {
  736. foreach ($etats_liste as $etat_liste) {
  737. $result[] = $etat_liste->id_etat_doc."=".($etat_liste->lib_etat_doc);
  738. }
  739. }
  740. print implode(";", $result);
  741. }
  742. //fonction renvoyant les id_etat_doc en fonction du is_open et de l'id_type_doc si indiqué
  743. function get_etat_is_open($is_open = 0, $doc_type = "") {
  744. global $bdd;
  745. $id_etat_doc = array();
  746. $where = "";
  747. if ($doc_type) { $where .= " && id_type_doc = '".$doc_type."' "; }
  748. $query = "SELECT id_etat_doc
  749. FROM documents_etats
  750. WHERE is_open = '".$is_open."' ".$where."
  751. ORDER BY ordre ASC";
  752. $resultat = $bdd->query ($query);
  753. while ($id_etat_docs = $resultat->fetchObject()) { $id_etat_doc[] = $id_etat_docs->id_etat_doc; }
  754. return $id_etat_doc;
  755. }
  756. //liste de tout les type de docs
  757. function fetch_all_types_docs () {
  758. global $bdd;
  759. $documents_type = array();
  760. $query = "SELECT id_type_doc, lib_type_doc, lib_type_printed, actif , code_doc
  761. FROM documents_types
  762. ORDER BY lib_type_doc ASC";
  763. $resultat = $bdd->query ($query);
  764. while ($documents = $resultat->fetchObject()) { $documents_type[] = $documents; }
  765. return $documents_type;
  766. }
  767. //liste des groupes de type de documents
  768. function docs_type_groupes ($id_type_groupe = "") {
  769. global $bdd;
  770. $where = "";
  771. if ($id_type_groupe) {$where = " WHERE id_type_groupe = '".$id_type_groupe."' ";}
  772. $types_groupes = array();
  773. $query = "SELECT dtg.id_type_groupe, dtg.lib_type_groupe, ordre
  774. FROM documents_types_groupes dtg
  775. ".$where."
  776. ORDER BY ordre ASC";
  777. $resultat = $bdd->query ($query);
  778. while ($groupe = $resultat->fetchObject()) {
  779. $types_groupes[] = $groupe;
  780. }
  781. return $types_groupes;
  782. }
  783. //liste des documents et des informations connexes pour l'edition des informations d'impression pdf des documents
  784. function docs_infos_by_groupe ($id_type_groupe) {
  785. global $bdd;
  786. $documents_liste = array();
  787. $query = "SELECT dt.id_type_doc, dt.lib_type_doc, dt.lib_type_printed, dt.actif , dt.code_doc, dt.id_type_groupe,
  788. dtg.lib_type_groupe
  789. FROM documents_types dt
  790. LEFT JOIN documents_types_groupes dtg ON dtg.id_type_groupe = dt.id_type_groupe
  791. WHERE dt.id_type_groupe = '".$id_type_groupe."'
  792. ORDER BY id_type_doc ASC";
  793. $resultat = $bdd->query ($query);
  794. while ($documents = $resultat->fetchObject()) {
  795. $documents->doc_modeles_pdf = array();
  796. $query_in = "SELECT dmp.id_type_doc, dmp.id_pdf_modele, dmp.usage,
  797. pm.lib_modele, pm.desc_modele , pm.code_pdf_modele
  798. FROM doc_modeles_pdf dmp
  799. LEFT JOIN pdf_modeles pm ON pm.id_pdf_modele = dmp.id_pdf_modele
  800. WHERE dmp.id_type_doc = '".$documents->id_type_doc."'
  801. ORDER BY dmp.usage ASC";
  802. $resultat_in = $bdd->query ($query_in);
  803. while ($modeles_pdf = $resultat_in->fetchObject()) {
  804. $documents->doc_modeles_pdf[] = $modeles_pdf;
  805. }
  806. unset ($query_in, $resultat_in, $modeles_pdf);
  807. $documents_liste[] = $documents;
  808. }
  809. return $documents_liste;
  810. }
  811. //chargement des infos d'un modele pdf
  812. function charge_modele_pdf ($id_pdf_modele) {
  813. global $bdd;
  814. $query = "SELECT id_pdf_modele, id_pdf_type, lib_modele, desc_modele , code_pdf_modele
  815. FROM pdf_modeles
  816. WHERE id_pdf_modele = '".$id_pdf_modele."'
  817. ";
  818. $resultat = $bdd->query ($query);
  819. if ($modele_pdf = $resultat->fetchObject()) {
  820. return $modele_pdf;
  821. }
  822. }
  823. //chargement des infos d'un modele pdf
  824. function charge_modele_pdf_document () {
  825. global $bdd;
  826. $modeles_liste = array();
  827. $query = "SELECT id_pdf_modele, id_pdf_type, lib_modele, desc_modele , code_pdf_modele
  828. FROM pdf_modeles
  829. WHERE id_pdf_type = '1'
  830. ";
  831. $resultat = $bdd->query ($query);
  832. while ($modele_pdf = $resultat->fetchObject()) { $modeles_liste[] = $modele_pdf;}
  833. return $modeles_liste;
  834. }
  835. //cahrgement des modeles pdf valides pour un id_type_doc
  836. function charger_modeles_pdf_valides($id_type_doc) {
  837. global $bdd;
  838. $modeles_liste = array();
  839. $query = "SELECT dmp.id_type_doc, dmp.usage, pm.id_pdf_modele, pm.id_pdf_type, pm.lib_modele, pm.desc_modele , pm.code_pdf_modele
  840. FROM doc_modeles_pdf dmp
  841. LEFT JOIN pdf_modeles pm ON pm.id_pdf_modele = dmp.id_pdf_modele
  842. WHERE dmp.id_type_doc = '".$id_type_doc."' && `usage` != 'inactif'
  843. ORDER BY dmp.usage ASC ";
  844. $resultat = $bdd->query ($query);
  845. while ($modele_pdf = $resultat->fetchObject()) { $modeles_liste[] = $modele_pdf;}
  846. return $modeles_liste;
  847. }
  848. //modele pdf par défaut
  849. function defaut_doc_modele_pdf ($id_type_doc, $id_pdf_modele) {
  850. global $bdd;
  851. $query = "UPDATE doc_modeles_pdf
  852. SET `usage` = 'actif'
  853. WHERE id_type_doc = '".$id_type_doc."' && `usage` != 'inactif'
  854. ";
  855. $bdd->exec ($query);
  856. $query = "UPDATE doc_modeles_pdf
  857. SET `usage` = 'defaut'
  858. WHERE id_type_doc = '".$id_type_doc."' && id_pdf_modele = '".$id_pdf_modele."'
  859. ";
  860. $bdd->exec ($query);
  861. // 2.044 : Maxime : On met ŕ jour l'id_pdf_modele dans la table documents_types
  862. $query = "UPDATE documents_types
  863. SET id_pdf_modele = '" . $id_pdf_modele . "'
  864. WHERE id_type_doc = '" . $id_type_doc . "';";
  865. $bdd->exec ($query);
  866. return true;
  867. }
  868. //activation d'un modele pdf
  869. function active_doc_modele_pdf ($id_type_doc, $id_pdf_modele) {
  870. global $bdd;
  871. $query = "UPDATE doc_modeles_pdf
  872. SET `usage` = 'actif'
  873. WHERE id_type_doc = '".$id_type_doc."' && id_pdf_modele = '".$id_pdf_modele."'
  874. ";
  875. $bdd->exec ($query);
  876. return true;
  877. }
  878. //désactivation d'un modele pdf
  879. function desactive_doc_modele_pdf ($id_type_doc, $id_pdf_modele) {
  880. global $bdd;
  881. $query = "UPDATE doc_modeles_pdf
  882. SET `usage` = 'inactif'
  883. WHERE id_type_doc = '".$id_type_doc."' && id_pdf_modele = '".$id_pdf_modele."'
  884. ";
  885. $bdd->exec ($query);
  886. return true;
  887. }
  888. //suppression d'un modele pdf
  889. function supprime_doc_modele_pdf ($id_pdf_modele) {
  890. global $bdd;
  891. $query = "DELETE FROM pdf_modeles
  892. WHERE id_pdf_modele = '".$id_pdf_modele."'
  893. ";
  894. $bdd->exec ($query);
  895. // On supprime également dans la table doc_modeles_pdf
  896. $query = "DELETE FROM doc_modeles_pdf
  897. WHERE id_pdf_modele = '".$id_pdf_modele."'
  898. ";
  899. $bdd->exec ($query);
  900. return true;
  901. }
  902. //liste des adresses d'un contact
  903. function getContact_adresses ($ref_contact) {
  904. global $bdd;
  905. $adresses_liste = array();
  906. $query = "SELECT ref_contact, ref_adresse, lib_adresse, text_adresse, code_postal, ville, a.id_pays, note, ordre, p.pays
  907. FROM adresses a
  908. LEFT JOIN pays p ON a.id_pays = p.id_pays
  909. WHERE ref_contact = '".$ref_contact."'
  910. ORDER BY ordre ASC ";
  911. $resultat = $bdd->query ($query);
  912. while ($adresses = $resultat->fetchObject()) { $adresses_liste[] = $adresses; }
  913. return $adresses_liste;
  914. }
  915. //liste des filigranes pour un document pdf
  916. function charger_filigranes () {
  917. global $bdd;
  918. $filigranes_liste = array();
  919. $query = "SELECT id_filigrane, lib_filigrane, ordre
  920. FROM documents_filigranes
  921. ORDER BY ordre ASC ";
  922. $resultat = $bdd->query ($query);
  923. while ($tmp = $resultat->fetchObject()) { $filigranes_liste[] = $tmp; }
  924. return $filigranes_liste;
  925. }
  926. //ajout des filigranes
  927. function add_filigranes ($lib_filigrane, $ordre_fili) {
  928. global $bdd;
  929. $query = "INSERT INTO documents_filigranes (lib_filigrane, ordre)
  930. VALUES ('".addslashes($lib_filigrane)."' , '".$ordre_fili."' ) ";
  931. $bdd->exec ($query);
  932. }
  933. //modification du filigrane
  934. function maj_filigranes ($lib_filigrane, $id_filigrane) {
  935. global $bdd;
  936. $query = "UPDATE documents_filigranes
  937. SET lib_filigrane = '".addslashes($lib_filigrane)."'
  938. WHERE id_filigrane = '".$id_filigrane."' ";
  939. $bdd->exec ($query);
  940. }
  941. //supression d'un filigrane
  942. function sup_filigranes ($id_filigrane, $ordre) {
  943. global $bdd;
  944. // *************************************************
  945. // Suppression du filigrane
  946. $query = "DELETE FROM documents_filigranes
  947. WHERE id_filigrane = '".$id_filigrane."' ";
  948. $bdd->exec ($query);
  949. // Changement de l'ordre des filigranes suivants
  950. $query = "UPDATE documents_filigranes
  951. SET ordre = ordre -1
  952. WHERE id_filigrane = '".$id_filigrane."' && ordre > '".$ordre."'";
  953. $bdd->exec ($query);
  954. }
  955. //modification de l'ordre des filigranes
  956. function ordre_filigranes ($id_filigrane, $old_ordre, $new_ordre) {
  957. global $bdd;
  958. if ($new_ordre < $old_ordre) {
  959. $variation = "+";
  960. $symbole1 = "<";
  961. $symbole2 = ">=";
  962. }
  963. else {
  964. $variation = "-";
  965. $symbole1 = ">";
  966. $symbole2 = "<=";
  967. }
  968. $bdd->beginTransaction();
  969. // Mise ŕ jour des autres coordonnees
  970. $query = "UPDATE documents_filigranes
  971. SET ordre = ordre ".$variation." 1
  972. WHERE ordre ".$symbole1." '".$old_ordre."' && ordre ".$symbole2." '".$new_ordre."' ";
  973. $bdd->exec ($query);
  974. // Mise ŕ jour de cette coordonnee
  975. $query = "UPDATE documents_filigranes
  976. SET ordre = '".$new_ordre."'
  977. WHERE id_filigrane = '".$id_filigrane."' ";
  978. $bdd->exec ($query);
  979. $bdd->commit();
  980. }
  981. //purge des documents annulés
  982. function purge_all_docs_annules ($id_type_doc = "") {
  983. global $bdd;
  984. global $DIR;
  985. $nb_docs_purged = 0;
  986. ini_set("memory_limit","20M");
  987. foreach ($_SESSION['types_docs'] as $type_doc) {
  988. if ($id_type_doc && $id_type_doc != $type_doc->id_type_doc) {continue;}
  989. if(file_exists($DIR."documents/_doc_".strtolower($type_doc->code_doc).".class.php"))
  990. {
  991. require_once ($DIR."documents/_doc_".strtolower($type_doc->code_doc).".class.php");
  992. $classe_doc = "doc_".$type_doc->code_doc;
  993. $document = new $classe_doc ();
  994. $id_etat_annule = $document->getID_ETAT_ANNULE ();
  995. global ${"DUREE_AVANT_PURGE_ANNULE_".$type_doc->code_doc};
  996. $query = "DELETE FROM documents
  997. WHERE id_type_doc = '".$type_doc->id_type_doc."'
  998. && date_creation_doc < '".date("Y-m-d" , mktime(0, 0, 0, date("m"), date("d")-(${"DUREE_AVANT_PURGE_ANNULE_".$type_doc->code_doc}), date("Y")))."'
  999. && id_etat_doc = '".$id_etat_annule."' ";
  1000. $nb_docs_purged += $bdd->exec ($query);
  1001. }
  1002. }
  1003. return $nb_docs_purged;
  1004. }
  1005. // return id_type_groupe from ref_doc
  1006. function searchIdTypeGroup($ref_doc) {
  1007. global $bdd;
  1008. $query = "SELECT id_type_groupe FROM documents_types
  1009. WHERE id_type_doc IN (SELECT id_type_doc FROM documents WHERE ref_doc='".$ref_doc."');";
  1010. $res = $bdd->query($query);
  1011. if ($res = $res->fetchObject())
  1012. return $res->id_type_groupe;
  1013. }
  1014. function charge_docs_content_model ($id_type_doc) {
  1015. global $bdd;
  1016. $infos_doc_mod = array();
  1017. $query = "SELECT ref_doc, lib_modele, desc_modele FROM doc_mod
  1018. WHERE types_docs LIKE '%;".$id_type_doc.";%'";
  1019. $res = $bdd->query($query);
  1020. while($tmp = $res->fetchObject()) { $infos_doc_mod[] = $tmp; }
  1021. return $infos_doc_mod;
  1022. }