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