Exemplo n.º 1
0
 /**
  * @Security("has_role('ROLE_TRESO')")
  */
 public function modifierAction($id, $etude_id)
 {
     $em = $this->getDoctrine()->getManager();
     $tauxTVA = 20.0;
     $compteEtude = 705000;
     $compteFrais = 708500;
     $compteAcompte = 419100;
     if (!($facture = $em->getRepository('MgateTresoBundle:Facture')->find($id))) {
         $facture = new Facture();
         $now = new \DateTime('now');
         $facture->setDateEmission($now);
         if ($etude = $em->getRepository('MgateSuiviBundle:Etude')->find($etude_id)) {
             $formater = $this->container->get('Mgate.conversionlettre');
             $facture->setEtude($etude);
             $facture->setBeneficiaire($etude->getProspect());
             if (!count($etude->getFactures()) && $etude->getAcompte()) {
                 $facture->setType(Facture::$TYPE_VENTE_ACCOMPTE);
                 $facture->setObjet('Facture d\'acompte sur l\'étude ' . $etude->getReference() . ', correspondant au règlement de ' . $formater->moneyFormat($etude->getPourcentageAcompte() * 100) . ' % de l’étude.');
                 $detail = new FactureDetail();
                 $detail->setCompte($em->getRepository('MgateTresoBundle:Compte')->findOneBy(array('numero' => $compteAcompte)));
                 $detail->setFacture($facture);
                 $facture->addDetail($detail);
                 $detail->setDescription('Acompte de ' . $formater->moneyFormat($etude->getPourcentageAcompte() * 100) . ' % sur l\'étude ' . $etude->getReference());
                 $detail->setMontantHT($etude->getPourcentageAcompte() * $etude->getMontantHT());
                 $detail->setTauxTVA($tauxTVA);
             } else {
                 $facture->setType(Facture::$TYPE_VENTE_SOLDE);
                 if ($etude->getAcompte() && $etude->getFa()) {
                     $montantADeduire = new FactureDetail();
                     $montantADeduire->setDescription('Facture d\'acompte sur l\'étude ' . $etude->getReference() . ', correspondant au règlement de ' . $formater->moneyFormat($etude->getPourcentageAcompte() * 100) . ' % de l’étude.')->setFacture($facture);
                     $facture->setMontantADeduire($montantADeduire);
                 }
                 $totalTTC = 0;
                 foreach ($etude->getPhases() as $phase) {
                     $detail = new FactureDetail();
                     $detail->setCompte($em->getRepository('MgateTresoBundle:Compte')->findOneBy(array('numero' => $compteEtude)));
                     $detail->setFacture($facture);
                     $facture->addDetail($detail);
                     $detail->setDescription('Phase ' . ($phase->getPosition() + 1) . ' : ' . $phase->getTitre() . ' : ' . $phase->getNbrJEH() . ' JEH * ' . $formater->moneyFormat($phase->getPrixJEH()) . ' €');
                     $detail->setMontantHT($phase->getPrixJEH() * $phase->getNbrJEH());
                     $detail->setTauxTVA($tauxTVA);
                     $totalTTC += $phase->getPrixJEH() * $phase->getNbrJEH();
                 }
                 $detail = new FactureDetail();
                 $detail->setCompte($em->getRepository('MgateTresoBundle:Compte')->findOneBy(array('numero' => $compteFrais)))->setFacture($facture)->setDescription('Frais de dossier')->setMontantHT($etude->getFraisDossier());
                 $facture->addDetail($detail);
                 $detail->setTauxTVA($tauxTVA);
                 $totalTTC += $etude->getFraisDossier();
                 $totalTTC *= 1 + $tauxTVA / 100;
                 $facture->setObjet('Facture de Solde sur l\'étude ' . $etude->getReference() . '.');
             }
         }
     }
     $form = $this->createForm(new FactureType(), $facture);
     if ($this->get('request')->getMethod() == 'POST') {
         $form->handleRequest($this->get('request'));
         if ($form->isValid()) {
             foreach ($facture->getDetails() as $factured) {
                 $factured->setFacture($facture);
             }
             if ($facture->getType() <= Facture::$TYPE_VENTE_ACCOMPTE || $facture->getMontantADeduire() === null || $facture->getMontantADeduire()->getMontantHT() == 0) {
                 $facture->setMontantADeduire(null);
             }
             $em->persist($facture);
             $em->flush();
             return $this->redirect($this->generateUrl('MgateTreso_Facture_voir', array('id' => $facture->getId())));
         }
     }
     return $this->render('MgateTresoBundle:Facture:modifier.html.twig', array('form' => $form->createView()));
 }
Exemplo n.º 2
0
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('exercice', 'integer', array('label' => 'Exercice Comptable', 'required' => true))->add('numero', 'integer', array('label' => 'Numéro de la Facture', 'required' => true))->add('type', 'choice', array('choices' => Facture::getTypeChoices(), 'required' => true))->add('objet', 'textarea', array('label' => 'Objet de la Facture', 'required' => true, 'attr' => array('cols' => '100%', 'rows' => 5)))->add('details', 'collection', array('type' => new FactureDetailType(), 'allow_add' => true, 'allow_delete' => true, 'prototype' => true, 'by_reference' => false))->add('beneficiaire', 'genemu_jqueryselect2_entity', array('class' => 'Mgate\\PersonneBundle\\Entity\\Prospect', 'property' => 'nom', 'required' => true, 'label' => 'Facture émise pour/par'))->add('montantADeduire', new FactureDetailType(), array('label' => 'Montant à déduire', 'required' => true))->add('dateEmission', 'genemu_jquerydate', array('label' => 'Date d\'émission', 'required' => true, 'widget' => 'single_text'))->add('dateVersement', 'genemu_jquerydate', array('label' => 'Date de versement', 'required' => false, 'widget' => 'single_text'));
 }