PageRenderTime 46ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/classes/controleurs/GestionCommande/BonDeLivraisonControleur.php

http://zeybux.googlecode.com/
PHP | 668 lines | 499 code | 97 blank | 72 comment | 93 complexity | 9d26f42c123660e7ef574b227c026e44 MD5 | raw file
  1. <?php
  2. //****************************************************************
  3. //
  4. // Createur : Julien PIERRE
  5. // Date de creation : 24/01/2011
  6. // Fichier : BonDeLivraisonControleur.php
  7. //
  8. // Description : Classe BonDeLivraisonControleur
  9. //
  10. //****************************************************************
  11. // Inclusion des classes
  12. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "StockProduitReservationViewManager.php");
  13. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "InfoBonLivraisonViewManager.php");
  14. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "ProducteurViewManager.php");
  15. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "TypePaiementVisibleViewManager.php");
  16. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "StockLivraisonViewManager.php");
  17. include_once(CHEMIN_CLASSES_MANAGERS . "StockManager.php");
  18. include_once(CHEMIN_CLASSES_MANAGERS . "OperationManager.php");
  19. include_once(CHEMIN_CLASSES_MANAGERS . "DetailCommandeManager.php");
  20. include_once(CHEMIN_CLASSES_VR . "TemplateVR.php" );
  21. include_once(CHEMIN_CLASSES_VR . "VRerreur.php" );
  22. include_once(CHEMIN_CLASSES_UTILS . "CSV.php");
  23. include_once(CHEMIN_CLASSES_UTILS . "phpToPDF.php");
  24. include_once(CHEMIN_CLASSES_SERVICE . "MarcheService.php");
  25. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "ListeProducteurMarcheViewManager.php");
  26. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/AfficheBonDeLivraisonResponse.php" );
  27. include_once(CHEMIN_CLASSES_RESPONSE . MOD_GESTION_COMMANDE . "/AfficheListeProduitBonDeLivraisonResponse.php" );
  28. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/BonDeCommandeValid.php" );
  29. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "StockSolidaireViewManager.php");
  30. include_once(CHEMIN_CLASSES_VIEW_MANAGER . "InfoBonCommandeViewManager.php");
  31. include_once(CHEMIN_CLASSES_SERVICE . "OperationService.php");
  32. include_once(CHEMIN_CLASSES_SERVICE . "DetailOperationService.php");
  33. include_once(CHEMIN_CLASSES_SERVICE . "StockService.php");
  34. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/ExportBonLivraisonValid.php" );
  35. include_once(CHEMIN_CLASSES_VALIDATEUR . MOD_GESTION_COMMANDE . "/ProduitsBonDeLivraisonValid.php" );
  36. include_once(CHEMIN_CLASSES_MANAGERS . "InfoOperationLivraisonManager.php");
  37. /**
  38. * @name BonDeLivraisonControleur
  39. * @author Julien PIERRE
  40. * @since 24/01/2011
  41. * @desc Classe controleur d'une BonDeLivraison
  42. */
  43. class BonDeLivraisonControleur
  44. {
  45. /**
  46. * @name getInfoLivraison($pParam)
  47. * @return AfficheBonDeLivraisonResponse
  48. * @desc Retourne la liste des producteurs de cette commande.
  49. */
  50. public function getInfoLivraison($pParam) {
  51. $lVr = BonDeCommandeValid::validGetInfoCommande($pParam);
  52. if($lVr->getValid()) {
  53. $lIdMarche = $pParam["id_commande"];
  54. $lMarcheService = new MarcheService();
  55. $lMarche = $lMarcheService->get($lIdMarche);
  56. $lResponse = new AfficheBonDeLivraisonResponse();
  57. $lProducteurs = ListeProducteurMarcheViewManager::select($lIdMarche);
  58. $lTypePaiement = TypePaiementVisibleViewManager::selectAll();
  59. $lResponse->setComNumero($lMarche->getNumero());
  60. $lResponse->setArchive($lMarche->getArchive());
  61. $lResponse->setProducteurs($lProducteurs);
  62. $lResponse->setTypePaiement($lTypePaiement);
  63. return $lResponse;
  64. }
  65. return $lVr;
  66. }
  67. /**
  68. * @name getListeProduitLivraison($pParam)
  69. * @return AfficheListeProduitBonDeLivraisonResponse
  70. * @desc Retourne la liste des producteurs de cette commande.
  71. */
  72. public function getListeProduitLivraison($pParam) {
  73. $lVr = BonDeCommandeValid::validGetListeProduitCommande($pParam);
  74. if($lVr->getValid()) {
  75. $lIdMarche = $pParam["id_commande"];
  76. $lIdCompteFerme = $pParam["id_compte_ferme"];
  77. $lOperationService = new OperationService();
  78. $lResponse = new AfficheListeProduitBonDeLivraisonResponse();
  79. $lResponse->setProduits(StockProduitReservationViewManager::selectInfoBonCommande($lIdMarche,$lIdCompteFerme));
  80. $lResponse->setProduitsCommande(InfoBonCommandeViewManager::selectInfoBonCommande($lIdMarche,$lIdCompteFerme));
  81. $lResponse->setProduitsLivraison(InfoBonLivraisonViewManager::selectInfoBonLivraison($lIdMarche,$lIdCompteFerme));
  82. $lResponse->setProduitsSolidaire(StockSolidaireViewManager::selectSolidaire($lIdMarche,$lIdCompteFerme));
  83. $lOperations = $lOperationService->getBonLivraison($lIdMarche,$lIdCompteFerme);
  84. $lOperation = $lOperations[0];
  85. $lInfoOperationLivraison = InfoOperationLivraisonManager::select($lOperation->getTypePaiementChampComplementaire());
  86. if(!is_null($lOperation->getId())) {
  87. $lOperation = $lOperationService->get($lInfoOperationLivraison->getIdOpeProducteur());
  88. }
  89. $lResponse->setOperationProducteur($lOperation);
  90. return $lResponse;
  91. }
  92. return $lVr;
  93. }
  94. /**
  95. * @name enregistrerBonDeLivraison($pParam)
  96. * @return AfficheListeProduitBonDeLivraisonResponse
  97. * @desc Enregistre le bon de commande.
  98. */
  99. public function enregistrerBonDeLivraison($pParam) {
  100. $lVr = ProduitsBonDeLivraisonValid::validAjout($pParam);
  101. if($lVr->getValid()) {
  102. $lIdMarche = $pParam["id_commande"];
  103. $lIdCompteFerme = $pParam["id_compte_ferme"];
  104. $lProduits = $pParam["produits"];
  105. $lMarcheService = new MarcheService();
  106. $lMarche = $lMarcheService->get($lIdMarche);
  107. // Récupčre l'opération Bon de livraison si elle existe
  108. $lOperationService = new OperationService();
  109. $lOperations = $lOperationService->getBonLivraison($lIdMarche,$lIdCompteFerme);
  110. $lIdOperation = $lOperations[0]->getId();
  111. if(is_null($lIdOperation)) { // Si il n'y a pas d'opération de Bon de Livraison
  112. $lOperation = new OperationVO();
  113. $lOperation->setIdCompte($lIdCompteFerme);
  114. $lOperation->setLibelle('Bon de Livraison marché n°' . $lMarche->getNumero());
  115. $lOperation->setTypePaiement(6);
  116. $lOperation->setIdCommande($lIdMarche);
  117. } else {
  118. $lOperation = $lOperations[0];
  119. $lInfoOperationLivraison = InfoOperationLivraisonManager::select($lOperation->getTypePaiementChampComplementaire());
  120. $lOperationService->delete($lInfoOperationLivraison->getIdOpeZeybu());
  121. $lOperationService->delete($lInfoOperationLivraison->getIdOpeProducteur());
  122. }
  123. // Ajout Opération de débit sur le compte du zeybu
  124. $lOperationZeybu = new OperationVO();
  125. $lOperationZeybu->setIdCompte(-1);
  126. $lOperationZeybu->setLibelle('Livraison Marché n°' . $lMarche->getNumero());
  127. $lOperationZeybu->setTypePaiement($pParam["typePaiement"]);
  128. $lOperationZeybu->setTypePaiementChampComplementaire($pParam["typePaiementChampComplementaire"]);
  129. $lOperationZeybu->setIdCommande($lIdMarche);
  130. $lOperationZeybu->setMontant($pParam["total"] * -1);
  131. $lIdOperationZeybu = $lOperationService->set($lOperationZeybu);
  132. // Ajout opération de crédit sur le compte du producteur
  133. $lOperationPrdt = new OperationVO();
  134. $lOperationPrdt->setIdCompte($lIdCompteFerme);
  135. $lOperationPrdt->setLibelle('Livraison Marché n°' . $lMarche->getNumero());
  136. $lOperationPrdt->setTypePaiement($pParam["typePaiement"]);
  137. $lOperationPrdt->setTypePaiementChampComplementaire($pParam["typePaiementChampComplementaire"]);
  138. $lOperationPrdt->setIdCommande($lIdMarche);
  139. $lOperationPrdt->setMontant($pParam["total"]);
  140. $lIdOperationPrdt = $lOperationService->set($lOperationPrdt);
  141. $lInfoOperationLivraison = new InfoOperationLivraisonVO();
  142. $lInfoOperationLivraison->setIdOpeZeybu($lIdOperationZeybu);
  143. $lInfoOperationLivraison->setIdOpeProducteur($lIdOperationPrdt);
  144. $lIdInfoOpeLivr = InfoOperationLivraisonManager::insert($lInfoOperationLivraison);
  145. $lOperation->setTypePaiementChampComplementaire($lIdInfoOpeLivr);
  146. $lOperation->setMontant($pParam["total"]);
  147. $lIdOperation = $lOperationService->set($lOperation); // Ajout ou mise ŕ jour de l'operation de bon de livraison
  148. // Maj des infos du stock
  149. $lBonLivraison = InfoBonLivraisonViewManager::selectInfoBonLivraison($lIdMarche,$lIdCompteFerme);
  150. $lDetailOperationService = new DetailOperationService();
  151. $lStockService = new StockService();
  152. foreach($lProduits as $lProduit) {
  153. $lMaj = false;
  154. foreach($lBonLivraison as $lBon) {
  155. if($lProduit["id"] == $lBon->getProId()) {
  156. $lMaj = true;
  157. $lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]);
  158. $lStock = new StockVO();
  159. $lStock->setId($lBon->getStoId());
  160. $lStock->setQuantite($lProduit["quantite"]);
  161. $lStock->setType(4);
  162. $lStock->setIdCompte($lIdCompteFerme);
  163. $lStock->setIdDetailCommande($lDcom[0]->getId());
  164. $lStock->setIdOperation($lIdOperation);
  165. $lStockService->set($lStock);
  166. $lDetailOperation = $lDetailOperationService->get($lBon->getDopeId());
  167. $lDetailOperation->setIdOperation($lIdOperation);
  168. $lDetailOperation->setIdCompte($lIdCompteFerme);
  169. $lDetailOperation->setMontant($lProduit["prix"]);
  170. $lDetailOperation->setLibelle('Bon de Livraison');
  171. $lDetailOperation->setTypePaiement(6);
  172. $lDetailOperationService->set($lDetailOperation);
  173. }
  174. }
  175. if(!$lMaj) {
  176. $lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]);
  177. $lStock = new StockVO();
  178. $lStock->setQuantite($lProduit["quantite"]);
  179. $lStock->setType(4);
  180. $lStock->setIdCompte($lIdCompteFerme);
  181. $lStock->setIdDetailCommande($lDcom[0]->getId());
  182. $lStock->setIdOperation($lIdOperation);
  183. $lStockService->set($lStock);
  184. $lDetailOperation = new DetailOperationVO();
  185. $lDetailOperation->setIdOperation($lIdOperation);
  186. $lDetailOperation->setIdCompte($lIdCompteFerme);
  187. $lDetailOperation->setMontant($lProduit["prix"]);
  188. $lDetailOperation->setLibelle('Bon de Livraison');
  189. $lDetailOperation->setTypePaiement(6);
  190. $lDetailOperation->setTypePaiementChampComplementaire($lProduit["id"]);
  191. $lDetailOperation->setIdDetailCommande($lDcom[0]->getId());
  192. $lDetailOperationService->set($lDetailOperation);
  193. }
  194. }
  195. foreach($lBonLivraison as $lBon) {
  196. $lDelete = true;
  197. foreach($lProduits as $lProduit) {
  198. if($lProduit["id"] == $lBon->getProId()) {
  199. $lDelete = false;
  200. }
  201. }
  202. if($lDelete) {
  203. $lStockService->delete($lBon->getStoId());
  204. $lDetailOperationService->delete($lBon->getDopeId());
  205. }
  206. }
  207. // Maj des infos du stock Solidaire
  208. $lProduitMarche = $lMarche->getProduits();
  209. $lStockSolidaire = StockSolidaireViewManager::selectSolidaire($lIdMarche,$lIdCompteFerme);
  210. foreach($lProduits as $lProduit) {
  211. $lMaj = false;
  212. foreach($lStockSolidaire as $lBon) {
  213. if($lProduit["id"] == $lBon->getProId()) {
  214. $lMaj = true;
  215. $lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]);
  216. $lStock = new StockVO();
  217. $lStock->setId($lBon->getStoId());
  218. $lStock->setQuantite($lProduit["quantiteSolidaire"]);
  219. $lStock->setType(2);
  220. $lStock->setIdCompte($lIdCompteFerme);
  221. $lStock->setIdDetailCommande($lDcom[0]->getId());
  222. $lStock->setIdOperation($lIdOperation);
  223. $lStockService->set($lStock);
  224. // Ajout du produit dans le stock solidaire
  225. $lStockSolidaireActuel = $lStockService->selectSolidaireByIdNomProduitUnite($lProduitMarche[$lProduit["id"]]->getIdNom(),$lProduitMarche[$lProduit["id"]]->getUnite());
  226. $lStockSolidaireActuel = $lStockSolidaireActuel[0];
  227. $lStockSolidaire = new StockSolidaireVO();
  228. $lQuantite = $lProduit["quantiteSolidaire"];
  229. if(!is_null($lStockSolidaireActuel->getId())) {
  230. $lStockSolidaire->setId($lStockSolidaireActuel->getId());
  231. $lQuantite = $lStockSolidaireActuel->getQuantite() + $lProduit["quantiteSolidaire"] - $lBon->getStoQuantite();
  232. }
  233. $lStockSolidaire->setQuantite($lQuantite);
  234. $lStockSolidaire->setIdNomProduit($lProduitMarche[$lProduit["id"]]->getIdNom());
  235. $lStockSolidaire->setUnite($lProduitMarche[$lProduit["id"]]->getUnite());
  236. $lStockService->setSolidaire($lStockSolidaire);
  237. }
  238. }
  239. if(!$lMaj) {
  240. $lDcom = DetailCommandeManager::selectByIdProduit($lProduit["id"]);
  241. $lStock = new StockVO();
  242. $lStock->setQuantite($lProduit["quantiteSolidaire"]);
  243. $lStock->setType(2);
  244. $lStock->setIdCompte($lIdCompteFerme);
  245. $lStock->setIdDetailCommande($lDcom[0]->getId());
  246. $lStock->setIdOperation($lIdOperation);
  247. $lStockService->set($lStock);
  248. // Ajout du produit dans le stock solidaire
  249. $lStockSolidaireActuel = $lStockService->selectSolidaireByIdNomProduitUnite($lProduitMarche[$lProduit["id"]]->getIdNom(),$lProduitMarche[$lProduit["id"]]->getUnite());
  250. $lStockSolidaireActuel = $lStockSolidaireActuel[0];
  251. $lStockSolidaire = new StockSolidaireVO();
  252. $lQuantite = $lProduit["quantiteSolidaire"];
  253. if(!is_null($lStockSolidaireActuel->getId())) {
  254. $lStockSolidaire->setId($lStockSolidaireActuel->getId());
  255. $lQuantite += $lStockSolidaireActuel->getQuantite();
  256. }
  257. $lStockSolidaire->setQuantite($lQuantite);
  258. $lStockSolidaire->setIdNomProduit($lProduitMarche[$lProduit["id"]]->getIdNom());
  259. $lStockSolidaire->setUnite($lProduitMarche[$lProduit["id"]]->getUnite());
  260. $lStockService->setSolidaire($lStockSolidaire);
  261. }
  262. }
  263. foreach($lStockSolidaire as $lBon) {
  264. $lDelete = true;
  265. foreach($lProduits as $lProduit) {
  266. if($lProduit["id"] == $lBon->getProId()) {
  267. $lDelete = false;
  268. }
  269. }
  270. if($lDelete) {
  271. $lStockService->delete($lBon->getStoId());
  272. // Si le produit est dans le stck solidaire on le supprime
  273. $lStockSolidaireActuel = $lStockService->selectSolidaireByIdNomProduitUnite($lProduitMarche[$lProduit["id"]]->getIdNom(),$lProduitMarche[$lProduit["id"]]->getUnite());
  274. $lStockSolidaireActuel = $lStockSolidaireActuel[0];
  275. if(!is_null($lStockSolidaireActuel->getId())) {
  276. $lStockSolidaire = new StockSolidaireVO();
  277. $lStockSolidaire->setId($lStockSolidaireActuel->getId());
  278. $lStockSolidaire->setQuantite($lStockSolidaireActuel->getQuantite() - $lProduit["quantiteSolidaire"] );
  279. $lStockSolidaire->setIdNomProduit($lProduitMarche[$lProduit["id"]]->getIdNom());
  280. $lStockSolidaire->setUnite($lProduitMarche[$lProduit["id"]]->getUnite());
  281. $lStockService->setSolidaire($lStockSolidaire);
  282. }
  283. }
  284. }
  285. }
  286. return $lVr;
  287. }
  288. /**
  289. * @name getBComPdf($pParam)
  290. * @return Un Fichier Pdf
  291. * @desc Retourne le bon de livraison en pdf
  292. */
  293. public function getBComPdf($pParam) {
  294. $lVr = ExportBonLivraisonValid::validAjout($pParam);
  295. if($lVr->getValid()) {
  296. // Préparation du Tableau pour l'export PDF
  297. $lIdCommande = $pParam["id_commande"];
  298. $lOperationService = new OperationService();
  299. $lLignesBonLivraison = InfoBonLivraisonViewManager::selectByIdCommande($lIdCommande);
  300. $lLignesSolidaire = StockSolidaireViewManager::selectLivraisonSolidaire($lIdCommande);
  301. $lContenuTableau = array();
  302. $lIdPrdt = 0;
  303. foreach($lLignesBonLivraison as $lLigne) {
  304. if($lLigne->getProIdCompteFerme() != NULL) { // évite les lignes vides
  305. if($lLigne->getProIdCompteFerme() == $lIdPrdt) {
  306. $lNomPrdt = "";
  307. } else {
  308. if($lIdPrdt != 0) {
  309. $lOperations = $lOperationService->getBonLivraison($lIdCommande,$lIdPrdt);
  310. $lOperation = $lOperations[0];
  311. $lInfoOperationLivraison = InfoOperationLivraisonManager::select($lOperation->getTypePaiementChampComplementaire());
  312. if(!is_null($lOperation->getId())) {
  313. $lOperation = $lOperationService->get($lInfoOperationLivraison->getIdOpeProducteur());
  314. } else {
  315. $lOperation->setMontant("");
  316. }
  317. array_push($lContenuTableau,"","","","","Total : ",utf8_decode($lOperation->getMontant() ),SIGLE_MONETAIRE_PDF,"","");
  318. array_push($lContenuTableau,"","","","","","","","","");
  319. }
  320. $lNomPrdt = $lLigne->getFerNom();
  321. }
  322. $lQuantite = '';
  323. $lUniteQuantite = '';
  324. $lMontant = '';
  325. $lSigleMontant = '';
  326. if( $lLigne->getStoQuantite() == '' || $lLigne->getStoQuantite() == NULL) {
  327. $lQuantiteLivraison = '';
  328. $lUniteQuantiteLivraison = '';
  329. } else {
  330. $lQuantiteLivraison = $lLigne->getStoQuantite();
  331. $lUniteQuantiteLivraison = $lLigne->getProUniteMesure();
  332. }
  333. if( $lLigne->getDopeMontant() == '' || $lLigne->getDopeMontant() == NULL) {
  334. $lMontantLivraison = '';
  335. $lSigleMontantLivraison = '';
  336. } else {
  337. $lMontantLivraison = $lLigne->getDopeMontant();
  338. $lSigleMontantLivraison = SIGLE_MONETAIRE_PDF;
  339. }
  340. $lQuantiteSolidaire = '';
  341. $lUniteQuantiteSolidaire = '';
  342. foreach($lLignesSolidaire as $lLigneSolidaire) {
  343. if($lLigneSolidaire->getProId() == $lLigne->getProId()) {
  344. if( $lLigneSolidaire->getStoQuantite() == '' || $lLigneSolidaire->getStoQuantite() == NULL) {
  345. $lQuantiteSolidaire = '';
  346. $lUniteQuantiteSolidaire = '';
  347. } else {
  348. $lQuantiteSolidaire = $lLigneSolidaire->getStoQuantite();
  349. $lUniteQuantiteSolidaire = $lLigne->getProUniteMesure();
  350. }
  351. }
  352. }
  353. array_push($lContenuTableau,
  354. utf8_decode($lNomPrdt),
  355. utf8_decode($lLigne->getNproNumero()),
  356. utf8_decode($lLigne->getNproNom()),
  357. utf8_decode($lQuantiteLivraison),
  358. utf8_decode($lUniteQuantiteLivraison),
  359. utf8_decode($lMontantLivraison),
  360. $lSigleMontantLivraison,
  361. utf8_decode($lQuantiteSolidaire),
  362. utf8_decode($lUniteQuantiteSolidaire)
  363. );
  364. $lIdPrdt = $lLigne->getProIdCompteFerme();
  365. }
  366. }
  367. // Pour la derničre ligne
  368. $lIdCompteFerme = $lLigne->getProIdCompteFerme();
  369. $lOperations = $lOperationService->getBonLivraison($lIdCommande,$lIdCompteFerme);
  370. $lOperation = $lOperations[0];
  371. $lInfoOperationLivraison = InfoOperationLivraisonManager::select($lOperation->getTypePaiementChampComplementaire());
  372. if(!is_null($lOperation->getId())) {
  373. $lOperation = $lOperationService->get($lInfoOperationLivraison->getIdOpeProducteur());
  374. } else {
  375. $lOperation->setMontant("");
  376. }
  377. array_push($lContenuTableau,"","","","","Total : ",utf8_decode($lOperation->getMontant()),SIGLE_MONETAIRE_PDF,"","");
  378. // Contenu du header du tableau.
  379. $lContenuHeader = array(30, 30, 30, 20, 15, 20, 7, 20, 10, "Producteur","Ref.", "Produit", utf8_decode("Qté"),"","Prix","","Solidaire","");
  380. // Préparation du PDF
  381. $PDF=new phpToPDF();
  382. $PDF->AddPage();
  383. $PDF->SetFont('Arial','B',16);
  384. // Définition des propriétés du tableau.
  385. $lProprietesTableau = array(
  386. 'TB_ALIGN' => 'L',
  387. 'L_MARGIN' => 5,
  388. 'BRD_COLOR' => array(0,0,0),
  389. 'BRD_SIZE' => '0.3',
  390. );
  391. // Définition des propriétés du header du tableau.
  392. $lProprieteHeader = array(
  393. 'T_COLOR' => array(255,255,255),
  394. 'T_SIZE' => 12,
  395. 'T_FONT' => 'Arial',
  396. 'T_ALIGN' => 'C',
  397. 'V_ALIGN' => 'T',
  398. 'T_TYPE' => 'B',
  399. 'LN_SIZE' => 7,
  400. 'BG_COLOR_COL0' => array(58,129,4),
  401. 'BG_COLOR' => array(58,129,4),
  402. 'BRD_COLOR' => array(0,0,0),
  403. 'BRD_SIZE' => 0.2,
  404. 'BRD_TYPE' => '1',
  405. 'BRD_TYPE_NEW_PAGE' => '',
  406. );
  407. // Définition des propriétés du reste du contenu du tableau.
  408. $lProprieteContenu = array(
  409. 'T_COLOR' => array(0,0,0),
  410. 'T_SIZE' => 10,
  411. 'T_FONT' => 'Arial',
  412. 'T_ALIGN_COL0' => 'L',
  413. 'T_ALIGN' => 'R',
  414. 'V_ALIGN' => 'M',
  415. 'T_TYPE' => '',
  416. 'LN_SIZE' => 6,
  417. 'BG_COLOR_COL0' => array(220, 220, 220),
  418. 'BG_COLOR' => array(255,255,255),
  419. 'BRD_COLOR' => array(0,0,0),
  420. 'BRD_SIZE' => 0.2,
  421. 'BRD_TYPE' => '1',
  422. 'BRD_TYPE_NEW_PAGE' => '',
  423. );
  424. // Ajout du Tableau au PDF
  425. $PDF->drawTableau($PDF, $lProprietesTableau, $lProprieteHeader, $lContenuHeader, $lProprieteContenu, $lContenuTableau);
  426. // Export du PDF
  427. $PDF->Output('Bon de Livraison.pdf','D');
  428. } else {
  429. return $lVr;
  430. }
  431. }
  432. /**
  433. * @name getBComCSV($pParam)
  434. * @return Un Fichier CSV
  435. * @desc Retourne le bon de livraison en format CSV
  436. */
  437. public function getBComCSV($pParam) {
  438. $lVr = ExportBonLivraisonValid::validAjout($pParam);
  439. if($lVr->getValid()) {
  440. $lCSV = new CSV();
  441. $lCSV->setNom('Bon_de_Livraison.csv'); // Le Nom
  442. // L'entete
  443. $lEntete = array("Ferme","Ref.", "Produit","Commande","","Prix","","Livraison","","Prix","","Solidaire","");
  444. $lCSV->setEntete($lEntete);
  445. // Les données
  446. $lIdCommande = $pParam["id_commande"];
  447. $lOperationService = new OperationService();
  448. $lLignesBonLivraison = InfoBonLivraisonViewManager::selectByIdCommande($lIdCommande);
  449. $lLignesSolidaire = StockSolidaireViewManager::selectLivraisonSolidaire($lIdCommande);
  450. $lLignesBonCommande = InfoBonCommandeViewManager::selectByIdCommande($lIdCommande);
  451. $lContenuTableau = array();
  452. $lIdPrdt = 0;
  453. foreach($lLignesBonLivraison as $lLigne) {
  454. if($lLigne->getProIdCompteFerme() != NULL) { // évite les lignes vides
  455. if($lLigne->getProIdCompteFerme() == $lIdPrdt) {
  456. $lNomPrdt = "";
  457. } else {
  458. if($lIdPrdt != 0) {
  459. /*$lIdCompteFerme = $lLigne->getProIdCompteFerme();
  460. $lOperations = $lOperationService->getBonLivraison($lIdCommande,$lIdCompteFerme);
  461. $lOperation = $lOperations[0];
  462. $lInfoOperationLivraison = InfoOperationLivraisonManager::select($lOperation->getTypePaiementChampComplementaire());
  463. if(!is_null($lOperation->getId())) {
  464. $lOperation = $lOperationService->get($lInfoOperationLivraison->getIdOpeProducteur());
  465. } else {
  466. $lOperation->setMontant("");
  467. }*/
  468. $lOperations = $lOperationService->getBonLivraison($lIdCommande,$lIdPrdt);
  469. $lOperation = $lOperations[0];
  470. $lInfoOperationLivraison = InfoOperationLivraisonManager::select($lOperation->getTypePaiementChampComplementaire());
  471. if(!is_null($lOperation->getId())) {
  472. /* $lIds = explode(";",$lOperation->getTypePaiementChampComplementaire());
  473. $lOperation = $lOperationService->get($lIds[0]);*/
  474. $lOperation = $lOperationService->get($lInfoOperationLivraison->getIdOpeProducteur());
  475. } else {
  476. $lOperation->setMontant("");
  477. }
  478. $lLignecontenu = array("","","","","","","","","Total : ",$lOperation->getMontant(),SIGLE_MONETAIRE,"","");
  479. array_push($lContenuTableau,$lLignecontenu);
  480. $lLignecontenu = array("","","","","","","","","","","","","");
  481. array_push($lContenuTableau,$lLignecontenu);
  482. }
  483. $lNomPrdt = $lLigne->getFerNom();
  484. }
  485. $lQuantite = '';
  486. $lUniteQuantite = '';
  487. $lMontant = '';
  488. $lSigleMontant = '';
  489. foreach($lLignesBonCommande as $lLigneBonCommande) {
  490. if($lLigneBonCommande->getProId() == $lLigne->getProId()) {
  491. if( $lLigneBonCommande->getStoQuantite() == '' || $lLigneBonCommande->getStoQuantite() == NULL) {
  492. $lQuantite = '';
  493. $lUniteQuantite = '';
  494. } else {
  495. $lQuantite = $lLigneBonCommande->getStoQuantite();
  496. $lUniteQuantite = $lLigne->getProUniteMesure();
  497. }
  498. if( $lLigneBonCommande->getDopeMontant() == '' || $lLigneBonCommande->getDopeMontant() == NULL) {
  499. $lMontant = '';
  500. $lSigleMontant = '';
  501. } else {
  502. $lMontant = $lLigneBonCommande->getDopeMontant();
  503. $lSigleMontant = SIGLE_MONETAIRE;
  504. }
  505. }
  506. }
  507. if( $lLigne->getStoQuantite() == '' || $lLigne->getStoQuantite() == NULL) {
  508. $lQuantiteLivraison = '';
  509. $lUniteQuantiteLivraison = '';
  510. } else {
  511. $lQuantiteLivraison = $lLigne->getStoQuantite();
  512. $lUniteQuantiteLivraison = $lLigne->getProUniteMesure();
  513. }
  514. if( $lLigne->getDopeMontant() == '' || $lLigne->getDopeMontant() == NULL) {
  515. $lMontantLivraison = '';
  516. $lSigleMontantLivraison = '';
  517. } else {
  518. $lMontantLivraison = $lLigne->getDopeMontant();
  519. $lSigleMontantLivraison = SIGLE_MONETAIRE;
  520. }
  521. $lQuantiteSolidaire = '';
  522. $lUniteQuantiteSolidaire = '';
  523. foreach($lLignesSolidaire as $lLigneSolidaire) {
  524. if($lLigneSolidaire->getProId() == $lLigne->getProId()) {
  525. if( $lLigneSolidaire->getStoQuantite() == '' || $lLigneSolidaire->getStoQuantite() == NULL) {
  526. $lQuantiteSolidaire = '';
  527. $lUniteQuantiteSolidaire = '';
  528. } else {
  529. $lQuantiteSolidaire = $lLigneSolidaire->getStoQuantite();
  530. $lUniteQuantiteSolidaire = $lLigne->getProUniteMesure();
  531. }
  532. }
  533. }
  534. $lLignecontenu = array( $lNomPrdt,
  535. $lLigne->getNproNumero(),
  536. $lLigne->getNproNom(),
  537. $lQuantite,
  538. $lUniteQuantite,
  539. $lMontant,
  540. $lSigleMontant,
  541. $lQuantiteLivraison,
  542. $lUniteQuantiteLivraison,
  543. $lMontantLivraison,
  544. $lSigleMontantLivraison,
  545. $lQuantiteSolidaire,
  546. $lUniteQuantiteSolidaire
  547. );
  548. array_push($lContenuTableau,$lLignecontenu);
  549. $lIdPrdt = $lLigne->getProIdCompteFerme();
  550. }
  551. }
  552. $lIdCompteFerme = $lLigne->getProIdCompteFerme();
  553. $lOperations = $lOperationService->getBonLivraison($lIdCommande,$lIdCompteFerme);
  554. $lOperation = $lOperations[0];
  555. $lInfoOperationLivraison = InfoOperationLivraisonManager::select($lOperation->getTypePaiementChampComplementaire());
  556. if(!is_null($lOperation->getId())) {
  557. $lOperation = $lOperationService->get($lInfoOperationLivraison->getIdOpeProducteur());
  558. } else {
  559. $lOperation->setMontant("");
  560. }
  561. $lLignecontenu = array("","","","","","","","","Total : ",$lOperation->getMontant(),SIGLE_MONETAIRE,"","");
  562. array_push($lContenuTableau,$lLignecontenu);
  563. $lCSV->setData($lContenuTableau);
  564. // Export en CSV
  565. $lCSV->output();
  566. } else {
  567. return $lVr;
  568. }
  569. }
  570. }
  571. ?>