/classes/controleurs/GestionCommande/ListeAchatMarcheControleur.php

http://zeybux.googlecode.com/ · PHP · 269 lines · 183 code · 24 blank · 62 comment · 48 complexity · 830f24a0bc762e729fc823687ec0cc01 MD5 · raw file

  1. <?php
  2. //****************************************************************
  3. //
  4. // Createur : Julien PIERRE
  5. // Date de creation : 10/04/2012
  6. // Fichier : ListeAchatMarcheControleur.php
  7. //
  8. // Description : Classe ListeAchatMarcheControleur
  9. //
  10. //****************************************************************
  11. // Inclusion des classes
  12. /*
  13. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "GestionCommandeListeReservationViewManager.php");
  14. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/EditerCommandeResponse.php" );
  15. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/ListeAchatEtReservationResponse.php" );
  16. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/DetailProduitResponse.php" );
  17. include_once(CHEMIN_CLASSES_SERVICE . "MarcheService.php");
  18. include_once(CHEMIN_CLASSES_SERVICE . "AchatService.php");
  19. include_once(CHEMIN_CLASSES_SERVICE . "ReservationService.php");
  20. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/EditerCommandeValid.php" );
  21. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "ReservationViewManager.php");
  22. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "AdherentViewManager.php");
  23. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "ModeleLotViewManager.php");
  24. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/ExportListeReservationValid.php" );
  25. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/ModifierMarcheValid.php" );
  26. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/ProduitMarcheValid.php" );
  27. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/CommandeCompleteValid.php" );
  28. include_once(CHEMIN_CLASSES_UTILS . "CSV.php");
  29. include_once(CHEMIN_CLASSES_UTILS . "phpToPDF.php");
  30. include_once(CHEMIN_CLASSES_TOVO . "ProduitCommandeToVO.php");
  31. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "ListeFermeViewManager.php");
  32. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "ListeNomProduitViewManager.php");
  33. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "ModeleLotViewManager.php");
  34. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/ListeFermeResponse.php" );
  35. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE ."/ListeProduitResponse.php" );
  36. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE ."/ModelesLotResponse.php" );
  37. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/FermeValid.php");
  38. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/NomProduitCatalogueValid.php" );
  39. include_once(CHEMIN_CLASSES_SERVICE . "AbonnementService.php" );
  40. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/AutorisationSupprimerLotResponse.php" );*/
  41. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/EditerCommandeValid.php" );
  42. include_once(CHEMIN_CLASSES_SERVICE . "MarcheService.php");
  43. include_once(CHEMIN_CLASSES_SERVICE . "AchatService.php");
  44. include_once(CHEMIN_CLASSES_SERVICE . "ReservationService.php");
  45. include_once(CHEMIN_CLASSES_UTILS . "CSV.php");
  46. include_once(CHEMIN_CLASSES_UTILS . "phpToPDF.php");
  47. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "AdherentViewManager.php");
  48. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/ListeAchatEtReservationResponse.php" );
  49. /**
  50. * @name ListeAchatMarcheControleur
  51. * @author Julien PIERRE
  52. * @since 27/10/2010
  53. * @desc Classe controleur d'une EditerCommande
  54. */
  55. class ListeAchatMarcheControleur
  56. {
  57. /**
  58. * @name getListeAchatEtReservationCSV($pParam)
  59. * @return Un Fichier CSV
  60. * @desc Retourne la liste des achats et réservations pour un Marché et la liste de produits demandés
  61. */
  62. public function getListeAchatEtReservationCSV($pParam) {
  63. $lVr = EditerCommandeValid::validGetInfoCommande($pParam);
  64. if($lVr->getValid()) {
  65. $lMarcheService = new MarcheService();
  66. $lMarche = $lMarcheService->get($pParam["id_marche"]);
  67. $lCSV = new CSV();
  68. $lCSV->setNom('Réservations.csv'); // Le Nom
  69. // Les données
  70. $contenuTableau = array();
  71. $lLigne = array("","","","");
  72. // L'entête
  73. $lEntete = array("N°","Compte","Nom","Prénom");
  74. foreach($lMarche->getProduits() as $lProduit) {
  75. $lNomProduit = $lProduit->getNom();
  76. if($lProduit->getType() == 1) {
  77. $lNomProduit .= " (Solidaire)";
  78. } else if($lProduit->getType() == 2) {
  79. $lNomProduit .= " (Abonnement)";
  80. }
  81. array_push($lEntete,"","","","","",$lNomProduit,"","","","","","");
  82. array_push($lLigne,"","","Réservation","","","Achat","","","","Solidaire","","");
  83. }
  84. $lCSV->setEntete($lEntete);
  85. array_push($contenuTableau,$lLigne);
  86. $lAdherents = AdherentViewManager::selectAll();
  87. $lReservationService = new ReservationService();
  88. $lAchatService = new AchatService();
  89. foreach($lAdherents as $lAdherent) {
  90. $lIdReservation = new IdReservationVO();
  91. $lIdReservation->setIdCompte($lAdherent->getAdhIdCompte());
  92. $lIdReservation->setIdCommande($pParam["id_marche"]);
  93. $lReservation = $lReservationService->get($lIdReservation);
  94. $lIdAchat = new IdAchatVO();
  95. $lIdAchat->setIdCompte($lAdherent->getAdhIdCompte());
  96. $lIdAchat->setIdCommande($pParam["id_marche"]);
  97. $lAchats = $lAchatService->getAll($lIdAchat);
  98. $lProduits = array();
  99. $lNbResa = 0;
  100. $lDetailsReservation = $lReservation->getDetailReservation();
  101. if(!empty($lDetailsReservation)) {
  102. foreach($lDetailsReservation as $lDetail) {
  103. if(!isset($lProduits[$lDetail->getIdProduit()][0])) {
  104. $lProduits[$lDetail->getIdProduit()][0] = array($lDetail);
  105. } else {
  106. array_push($lProduits[$lDetail->getIdProduit()][0],$lDetail);
  107. }
  108. $lNbResa++;
  109. }
  110. }
  111. $lNbAchat = 0;
  112. $lNbAchatSolidaire = 0;
  113. foreach($lAchats as $lAchat) {
  114. $lDetailsAchat = $lAchat->getDetailAchat();
  115. if(!empty($lDetailsAchat)) {
  116. foreach($lDetailsAchat as $lDetail) {
  117. if(!isset($lProduits[$lDetail->getIdProduit()][7])) {
  118. $lProduits[$lDetail->getIdProduit()][7] = array($lDetail);
  119. } else {
  120. array_push($lProduits[$lDetail->getIdProduit()][7],$lDetail);
  121. }
  122. $lNbAchat++;
  123. }
  124. }
  125. $lDetailsAchat = $lAchat->getDetailAchatSolidaire();
  126. if(!empty($lDetailsAchat)) {
  127. foreach($lDetailsAchat as $lDetail) {
  128. if(!isset($lProduits[$lDetail->getIdProduit()][8])) {
  129. $lProduits[$lDetail->getIdProduit()][8] = array($lDetail);
  130. } else {
  131. array_push($lProduits[$lDetail->getIdProduit()][8],$lDetail);
  132. }
  133. $lNbAchatSolidaire++;
  134. }
  135. }
  136. }
  137. if($lNbAchat < $lNbResa) {$lNbAchat = $lNbResa;}
  138. if($lNbAchat < $lNbAchatSolidaire) {$lNbAchat = $lNbAchatSolidaire;}
  139. if($lAdherent->getAdhEtat() == 1 || ($lAdherent->getAdhEtat() == 2 && $lNbAchat > 0)) { // Si Adhérent supprimé on vérifi qu'il faut si il a des ahcats/Résa pour l'ajouter
  140. if($lNbAchat == 0) {
  141. $lLigne = array();
  142. array_push($lLigne,$lAdherent->getAdhNumero(),$lAdherent->getCptLabel(),$lAdherent->getAdhNom(),$lAdherent->getAdhPrenom());
  143. array_push($contenuTableau,$lLigne);
  144. }
  145. $lI = 0;
  146. while($lI < $lNbAchat) {
  147. $lAjoutLigne = false;
  148. $lLigne = array();
  149. if($lI == 0) {
  150. $lAjoutLigne = true;
  151. array_push($lLigne,$lAdherent->getAdhNumero(),$lAdherent->getCptLabel(),$lAdherent->getAdhNom(),$lAdherent->getAdhPrenom());
  152. } else {
  153. array_push($lLigne,"","","","");
  154. }
  155. foreach($lMarche->getProduits() as $lProduit) {
  156. if(isset($lProduits[$lProduit->getId()][0][$lI])) {
  157. $lAjoutLigne = true;
  158. $lDetail = $lProduits[$lProduit->getId()][0][$lI];
  159. array_push($lLigne,$lDetail->getQuantite() * -1,$lProduit->getUnite(),$lDetail->getMontant() * -1,SIGLE_MONETAIRE);
  160. } else {
  161. array_push($lLigne,"","","","");
  162. }
  163. if(isset($lProduits[$lProduit->getId()][7][$lI])) {
  164. $lAjoutLigne = true;
  165. $lDetail = $lProduits[$lProduit->getId()][7][$lI];
  166. array_push($lLigne,$lDetail->getQuantite() * -1,$lProduit->getUnite(),$lDetail->getMontant() * -1,SIGLE_MONETAIRE);
  167. } else {
  168. array_push($lLigne,"","","","");
  169. }
  170. if(isset($lProduits[$lProduit->getId()][8][$lI])) {
  171. $lAjoutLigne = true;
  172. $lDetail = $lProduits[$lProduit->getId()][8][$lI];
  173. array_push($lLigne,$lDetail->getQuantite() * -1,$lProduit->getUnite(),$lDetail->getMontant() * -1,SIGLE_MONETAIRE);
  174. } else {
  175. array_push($lLigne,"","","","");
  176. }
  177. }
  178. if($lAjoutLigne) {
  179. array_push($contenuTableau,$lLigne);
  180. }
  181. $lI++;
  182. }
  183. }
  184. }
  185. //print_r($contenuTableau);
  186. $lCSV->setData($contenuTableau);
  187. // Export en CSV
  188. $lCSV->output();
  189. } else {
  190. return $lVr;
  191. }
  192. }
  193. /**
  194. * @name getListeAchatEtReservation($pParam)
  195. * @param Id du marché
  196. * @desc Cloture le marché
  197. */
  198. public function getListeAchatEtReservation($pParam) {
  199. $lVr = EditerCommandeValid::validGetInfoCommande($pParam);
  200. if($lVr->getValid()) {
  201. $lResponse = new ListeAchatEtReservationResponse();
  202. $lAchatService = new AchatService();
  203. $lAdherents = AdherentViewManager::selectAll();
  204. $lReservationService = new ReservationService();
  205. $lAchatService = new AchatService();
  206. foreach($lAdherents as $lAdherent) {
  207. if(!is_null($lAdherent->getAdhId())) {
  208. $lIdReservation = new IdReservationVO();
  209. $lIdReservation->setIdCompte($lAdherent->getAdhIdCompte());
  210. $lIdReservation->setIdCommande($pParam["id_marche"]);
  211. $lReservation = $lReservationService->get($lIdReservation);
  212. $lIdAchat = new IdAchatVO();
  213. $lIdAchat->setIdCompte($lAdherent->getAdhIdCompte());
  214. $lIdAchat->setIdCommande($pParam["id_marche"]);
  215. $lAchats = $lAchatService->getAll($lIdAchat);
  216. $lListeAchat = new ListeAchatReservationVO();
  217. $lListeAchat->setAdhId($lAdherent->getAdhId());
  218. $lListeAchat->setAdhNumero($lAdherent->getAdhNumero());
  219. $lListeAchat->setAdhIdCompte($lAdherent->getAdhIdCompte());
  220. $lListeAchat->setCptLabel($lAdherent->getCptLabel());
  221. $lListeAchat->setAdhNom($lAdherent->getAdhNom());
  222. $lListeAchat->setAdhPrenom($lAdherent->getAdhPrenom());
  223. $lNbAchat = 0;
  224. // Reservation en cours ou Achetée
  225. if(!is_null($lReservation->getEtat()) && ($lReservation->getEtat() == 0 || $lReservation->getEtat() == 7)) {
  226. $lListeAchat->setReservation('X');
  227. $lNbAchat++;
  228. }
  229. // Si il y a un achat
  230. if(!empty($lAchats)) {
  231. $lListeAchat->setAchat('X');
  232. $lNbAchat++;
  233. }
  234. if($lAdherent->getAdhEtat() == 1 || ($lAdherent->getAdhEtat() == 2 && $lNbAchat > 0)) { // Si Adhérent supprimé on vérifie qu'il faut si il a des ahcats/Résa pour l'ajouter
  235. $lResponse->addListeAchatEtReservation($lListeAchat);
  236. }
  237. }
  238. }
  239. return $lResponse;
  240. }
  241. return $lVr;
  242. }
  243. }
  244. ?>