예제 #1
0
 public function formulairedevisAction()
 {
     /******************************* Initialisation de variables *******************************/
     // Récupération de l'EntityManager
     $em = $this->getEntityManager();
     // Récupération du Service Manager
     $sm = $this->getServiceLocator();
     // Récupération de la requete
     $request = $this->getRequest();
     // Récupération du traducteur
     $translator = $this->getServiceLocator()->get('Translator');
     // Récupération de la session de l'utilisateur
     $utilisateur = new Container('utilisateur');
     $session = new Container('affaire');
     /****************************** Initialisation du fournisseur ******************************/
     $affaire = $devis = null;
     $id = (int) $this->params()->fromRoute('id');
     if (!empty($id)) {
         // Récupération de l'devis
         $devis = $em->getRepository('Devis\\Entity\\Devis')->find($id);
         if ($devis == null) {
             throw new \Exception($translator->translate('Ce devis n\'existe pas'));
         }
         $affaire = $devis->getRefAffaire();
         //Assignation de variables au layout
         $this->layout()->setVariables(array('headTitle' => $translator->translate('Modifier un devis'), 'breadcrumbActive' => $devis->getCodeDevis(), 'action' => 'formulairedevis', 'module' => 'devis', 'plugins' => array('jquery-ui', 'datapicker')));
     } else {
         if (!is_null($session->offsetGet('id', null))) {
             $affaire = $em->getRepository('Affaire\\Entity\\Affaire')->find((int) $session->offsetGet('id'));
         }
         // On crée une nouvelle devis
         $id = null;
         $devis = new Devis($affaire);
         //Assignation de variables au layout
         $this->layout()->setVariables(array('headTitle' => $translator->translate('Nouveau devis'), 'breadcrumbActive' => $translator->translate('Nouveau devis'), 'action' => 'formulairedevis', 'module' => 'devis', 'plugins' => array('jquery-ui', 'datapicker')));
     }
     // Creation du formulaire du devis
     $form = new DevisForm($translator, $sm, $em, $request, $devis);
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             /* Hydratation de l'objet devis avec les données du formulaire */
             $devis->exchangeArray($form->getData(), $sm, $em);
             $totalDevis = 0;
             try {
                 // On supprime d'abord les lignes de devis existantes
                 $lignes = $devis->getLignesDevis($sm);
                 foreach ($lignes as $ligne) {
                     $devis->removeLigneDevis($sm, $ligne['id']);
                 }
                 // On ajoute les lignes de devis en fonction des lignes de l'affaire sélectionnées
                 if (isset($_POST['ligne-affaire'])) {
                     foreach ($_POST['ligne-affaire'] as $key => $idLigneAffaire) {
                         // On récupère puis enregistre la ligne de devis
                         $ligneDevis = new LigneDevis();
                         $ligneDevis->exchangeProperties($em->getRepository('Affaire\\Entity\\LigneAffaire')->find($idLigneAffaire));
                         $ligneDevis->setRefDevis($devis);
                         $em->persist($ligneDevis);
                         // On ajoute le montant de la ligne devis créée au montant total du devis
                         $totalDevis += $ligneDevis->getTotalPrixVente();
                     }
                 }
                 // On enregistre les totaux
                 $totalDevis -= $devis->getRemise();
                 $devis->setTotalHorsPort($totalDevis);
                 $totalDevis += $devis->getFraisPort();
                 $devis->setTotalAvecPort($totalDevis);
                 if ($devis->getDateSignature()) {
                     $affaire->setRefDevisSigne($devis);
                     $em->persist($affaire);
                 }
                 $em->persist($devis);
                 $em->flush();
             } catch (\Exception $e) {
                 $erreurMessage = $translator->translate('Une erreur est survenue durant la sauvegarde du devis. Vérifiez que tous les champs sont valides.') . $e->getMessage();
                 $messagesFlash = $this->flashArray;
                 $messagesFlash['errors'][] = $erreurMessage;
                 $utilisateur->offsetSet('messagesFlash', $messagesFlash);
                 return new ViewModel(array('devis' => $devis, 'form' => $form, 'id' => $id));
             }
             return $this->redirect()->toRoute('devis/consulter_devis', array('id' => $devis->getId()));
         }
     }
     return new ViewModel(array('lignesAffaire' => $em->getRepository('Affaire\\Entity\\LigneAffaire')->findBy(array('refAffaire' => $affaire)), 'refLignesAffaire' => $devis->getRefLignesAffaire($sm), 'devis' => $devis, 'form' => $form, 'id' => $id));
 }
예제 #2
0
 /**
  * {@inheritDoc}
  */
 public function removeLigneDevis($sm, $idLigne = NULL)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'removeLigneDevis', array($sm, $idLigne));
     return parent::removeLigneDevis($sm, $idLigne);
 }