src/Controller/Export/EntityController.php line 301

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Export;
  3. use App\Entity\Adresses\Adresse;
  4. use App\Entity\Articles\Article;
  5. use App\Entity\Articles\ConditionAchat;
  6. use App\Entity\Articles\ConditionVente;
  7. use App\Entity\Articles\FamilleComptaCompta;
  8. use App\Entity\Articles\Marque;
  9. use App\Entity\Articles\MouvementStock;
  10. use App\Entity\Clients\Categorie;
  11. use App\Entity\Clients\Client;
  12. use App\Entity\Export\Export;
  13. use App\Entity\Export\Export_champs_exportables;
  14. use App\Entity\Export\Export_Entity_exportable;
  15. use App\Entity\FO\CompteBancaire;
  16. use App\Entity\FO\Societe;
  17. use App\Entity\Fournisseurs\Fournisseur;
  18. use App\Entity\GestionComerciale\Acompte;
  19. use App\Entity\GestionComerciale\Bordereau;
  20. use App\Entity\GestionComerciale\CodeClientCommande;
  21. use App\Entity\GestionComerciale\Commande;
  22. use App\Entity\GestionComerciale\CommandeFournisseur;
  23. use App\Entity\GestionComerciale\MouvementCaisse;
  24. use App\Entity\MarketPlace\ArticleMarketPlace;
  25. use App\Entity\MarketPlace\CompteMarketPlace;
  26. use App\Entity\Rangements\Emplacement;
  27. use App\Entity\Taxes\Taxe;
  28. use App\Entity\Utilisateur\Contact;
  29. use App\Entity\Vehicules\Type;
  30. use App\Form\Adresses\AdresseExportType;
  31. use App\Form\Articles\ArticleEquivalenceExportType;
  32. use App\Form\Articles\ArticleExportType;
  33. use App\Form\Articles\ConditionAchatExportType;
  34. use App\Form\Articles\ConditionVenteExportType;
  35. use App\Form\Articles\MouvementStockExportType;
  36. use App\Form\Clients\CategorieExportType;
  37. use App\Form\Clients\CategorieType;
  38. use App\Form\Clients\ClientType;
  39. use App\Form\Export\ExportEntityType;
  40. use App\Form\Fournisseurs\FournisseurType;
  41. use App\Form\GestionComerciale\SuggestionCommandeFournisseurExportType;
  42. use App\Form\MarketPlace\ArticleMarketPlaceExportType;
  43. use App\Form\Rangements\EmplacementExportType;
  44. use App\Form\Utilisateur\ContactExportType;
  45. use App\Form\Vehicules\VehiculeExportType;
  46. use App\Library\Datatable\Util\Datatable;
  47. use Doctrine\ORM\EntityManagerInterface;
  48. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  49. use Symfony\Component\HttpFoundation\JsonResponse;
  50. use Symfony\Component\HttpFoundation\Request;
  51. use Symfony\Component\HttpFoundation\Response;
  52. use Symfony\Component\Process\Process;
  53. use Symfony\Component\Routing\Annotation\Route;
  54. use Symfony\Component\Validator\Validator\ValidatorInterface;
  55. use Symfony\Contracts\Translation\TranslatorInterface;
  56. class EntityController extends AbstractController
  57. {
  58.     /**
  59.      * @Route("/export/entity/{name}", name="dtc_export_entity")
  60.      */
  61.     public function indexAction(Request $request$nameEntityManagerInterface $emTranslatorInterface $translatorstring $kernelPath)
  62.     {
  63.         $utilisateur              $this->getUser();
  64.         $typesUtilisateur         $utilisateur->getTypesUtilisateur();
  65.         $entities                 $em->getRepository(Export_Entity_exportable::class)->findBy([], ["name" => "asc"]);
  66.         $repo_fournisseur         $em->getRepository(Fournisseur::class);
  67.         $repo_marque              $em->getRepository(Marque::class);
  68.         $repo_compte_market_place $em->getRepository(CompteMarketPlace::class);
  69.         //$champs = $em->getRepository('DTCExportBundle:Export_champs_exportables')->findByEntityAndTypes($name, $typesUtilisateur);
  70.         $donnees = [];
  71.         $compteMarketPlace $repo_compte_market_place->findBy(["statut" => true], ["libelle" => "ASC"]);
  72.         $champsSelectionnes = [];
  73.         if ($request->getMethod() === 'POST') {
  74.             $champsSelectionnes $request->request->get('champs');
  75.             $post $request->request->all();
  76.             $entity     $request->request->get('entityHidden');
  77.             $format     $request->request->get('formatHidden');
  78.             $entityName $request->request->get('entityName');
  79.             if (count($champsSelectionnes) == 0) {
  80.                 $this->addFlash('warning'$translator->trans('Merci de sélectionnez au moins un champs.'));
  81.             } else {
  82.                 $export = new Export();
  83.                 $export->setUtilisateur($utilisateur);
  84.                 $export->setFormat($format);
  85.                 $export->setExecute(0);
  86.                 $export->setEntityName($entityName);
  87.                 $export->setEntity($entity);
  88.                 $fournisseurId $request->request->get('fournisseurId');
  89.                 if ($fournisseurId != '') {
  90.                     $fournisseur $repo_fournisseur->find($fournisseurId);
  91.                     if (is_object($fournisseur)) {
  92.                         $export->setFournisseur($fournisseur);
  93.                     }
  94.                 }
  95.                 $marqueId $request->request->get('marqueId');
  96.                 if ($marqueId != '') {
  97.                     $marque $repo_marque->find($marqueId);
  98.                     if (is_object($marque)) {
  99.                         $export->setMarque($marque);
  100.                     }
  101.                 }
  102.                 $compteMarketPlaceId $request->request->get('compteMarketPlaceId');
  103.                 if ($compteMarketPlaceId != '' && $entity == ArticleMarketPlace::class) {
  104.                     $cpteMarketPlace $repo_compte_market_place->find($compteMarketPlaceId);
  105.                     if (is_object($cpteMarketPlace)) {
  106.                         $export->setCompteMarketPlace($cpteMarketPlace);
  107.                     }
  108.                 }
  109.                 $articlesComposes     $request->request->get('articleComposeHidden');
  110.                 $defautCondHaHidden   $request->request->get('defautCondHaHidden');
  111.                 $articleArchiveHidden $request->request->get('articleArchiveHidden');
  112.                 if ($articlesComposes != '' or $defautCondHaHidden != '') {
  113.                     $export->setArticlesComposes(true);
  114.                 }
  115.                 if ($articleArchiveHidden != '') {
  116.                     $export->setArchive(true);
  117.                 }
  118.                 foreach ($champsSelectionnes as $champsSelectionne) {
  119.                     $champsExport = new Export_champs_exportables();
  120.                     $champsExport->setName($champsSelectionne);
  121.                     $export->addChampsAexporter($champsExport);
  122.                 }
  123.                 if ( ! empty($request->request->get('date_debut_hidden'))) {
  124.                     $export->setDateFiltreDebut((\DateTime::createFromFormat('d/m/Y'$request->request->get('date_debut_hidden')))->setTime(000));
  125.                 }
  126.                 if ( ! empty($request->request->get('date_fin_hidden'))) {
  127.                     $export->setDateFiltreFin((\Datetime::createFromFormat('d/m/Y'$request->request->get('date_fin_hidden')))->setTime(235959));
  128.                 }
  129.                 $em->persist($export);
  130.                 $em->flush();
  131.                 $process  = new Process(['php''bin/console''export:creer'$export->getId()]);
  132.                 $process->setWorkingDirectory($kernelPath);
  133.                 $process->setOptions(['create_new_console' => true]);
  134.                 $process->start();
  135. //                dd($process->getErrorOutput(), $process->getOutput(), $process->getExitCode());
  136.                 $this->addFlash('notice'$translator->trans('La création de votre export est en cours. Vous allez recevoir une note dès que celui-ci sera accessible......'));
  137.                 return $this->redirectToRoute('dtc_export_lister');
  138.                 //$this->redirectToRoute('dtc_export_entity', array('name'=>$entityName));
  139.             }
  140.         }
  141.         return $this->render('Export/Entity/index.html.twig', [
  142.             'name'               => $name,
  143.             'entityName'         => $name,
  144.             'compteMarketPlace'  => $compteMarketPlace,
  145.             //'champs'=>$champs,
  146.             'entities'           => $entities,
  147.             'donnees'            => $donnees,
  148.             //'form' => $form->createView(),
  149.             'champsSelectionnes' => $champsSelectionnes,
  150.         ]);
  151.     }
  152.     /**
  153.      * @Route("/export/entity/ajouter", name="dtc_export_entity_exportable_ajouter")
  154.      */
  155.     public function ajouterAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  156.     {
  157.         $utilisateur $this->getUser();
  158.         $entity = new Export_Entity_exportable();
  159.         $date   = new \DateTime();
  160.         $entity->setDateCreation($date);
  161.         $entity->setUtilisateur($utilisateur);
  162.         $form   $this->createForm(ExportEntityType::class, $entity);
  163.         $errors "";
  164.         $form->handleRequest($request);
  165.         if ($form->isSubmitted()) {
  166.             if ($form->isValid()) {
  167.                 $em->persist($entity);
  168.                 $em->flush();
  169.                 $id $entity->getId();
  170.                 $this->addFlash(
  171.                     'notice',
  172.                     $translator->trans('Champs ajouté avec succès!')
  173.                 );
  174.                 return $this->redirectToRoute('dtc_export_entity_exportable_modifier', ['id' => $id]);
  175.             } else {
  176.                 $errors $validator->validate($entity);
  177.             }
  178.         }
  179.         return $this->render('Export/Entity/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
  180.     }
  181.     /**
  182.      * @Route("/export/entity/modifier/{id}", name="dtc_export_entity_exportable_modifier")
  183.      */
  184.     public function modifierAction(Request $request$idEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  185.     {
  186.         $repoEntity $em->getRepository(Export_Entity_exportable::class);
  187.         $entity     $repoEntity->find($id);
  188.         //$entity = $em->getRepository(Export_Entity_exportable::class)->find($id_entity);
  189.         $utilisateur $this->getUser();
  190.         $form   $this->createForm(ExportEntityType::class, $entity);
  191.         $errors "";
  192.         $form->handleRequest($request);
  193.         if ($form->isSubmitted()) {
  194.             if ($form->isValid()) {
  195.                 $date = new \DateTime();
  196.                 $entity->setDateMaj($date);
  197.                 $entity->setUtilisateur($utilisateur);
  198.                 $em->persist($entity);
  199.                 $em->flush();
  200.                 $id $entity->getId();
  201.                 $this->addFlash(
  202.                     'notice',
  203.                     $translator->trans('Champs mis à jour avec succès!')
  204.                 );
  205.                 return $this->redirectToRoute('dtc_export_entity_exportable_modifier', ['id' => $id]);
  206.             } else {
  207.                 $errors $validator->validate($entity);
  208.             }
  209.         }
  210.         return $this->render('Export/Entity/ajouter.html.twig', ['maj' => true'form' => $form->createView(), 'errors' => $errors]);
  211.     }
  212.     /**
  213.      * @Route("/export/entities", name="dtc_export_entities_exportables_lister")
  214.      */
  215.     public function listerAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  216.     {
  217.         $this->datatable($datatable$translator);
  218.         return $this->render('Export/Entity/lister.html.twig', []);
  219.     }
  220.     /**
  221.      * set datatable configs
  222.      *
  223.      * @return \App\Library\Datatable\Util\Datatable
  224.      */
  225.     private function datatable(Datatable $datatableTranslatorInterface $translator)
  226.     {
  227.         $datatable->setEntity(Export_Entity_exportable::class, "x")
  228.                   ->setFields(
  229.                       [
  230.                           $translator->trans("ID")               => 'x.id',
  231.                           $translator->trans("Entité")           => "x.name",
  232.                           $translator->trans("Type utilisateur") => "tu.libelle",
  233.                           $translator->trans("Namespace")        => 'x.namespace',
  234.                           $translator->trans("Actions")          => 'x.id',
  235.                           "_identifier_"                         => 'x.id',
  236.                       ]
  237.                   )
  238.                   ->addJoin('x.typeUtilisateur''tu'\Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
  239.                   ->setRenderers(
  240.                       [
  241.                           => [
  242.                               'view'   => 'FO/DataTable/actions.html.twig',
  243.                               'params' => [
  244.                                   'edit_route' => 'dtc_export_entity_exportable_modifier',
  245.                                   //'dupliquer_route'    => 'dtc_article_dupliquer'
  246.                               ],
  247.                           ],
  248.                       ]
  249.                   )
  250.                   ->setOrder("x.id""desc")
  251.                   ->setSearch(true)
  252.                   ->setSearchFields([12]);
  253.         return $datatable;
  254.     }
  255.     /**
  256.      * @Route("/export/entities/grid", name="dtc_export_entities_exportables_grid")
  257.      */
  258.     public function gridAction(Request $requestDatatable $datatableTranslatorInterface $translator)
  259.     {
  260.         return $this->datatable($datatable$translator)->execute();
  261.     }
  262.     public function ExportProcess($champs$entity$entityName 'entity'$formatEntityManagerInterface $em)
  263.     {
  264.         set_time_limit(0);
  265.         $resultats  $this->getJoin($champs);
  266.         $entityJoin '';
  267.         foreach ($resultats[0] as $resultat) {
  268.             $entityJoin .= ' LEFT JOIN '.$resultat;
  269.         }
  270.         $select '';
  271.         foreach ($resultats[1] as $resultat) {
  272.             if ($select != '') {
  273.                 $select .= ', ';
  274.             }
  275.             $select .= $resultat;
  276.         }
  277.         $where '';
  278.         //Requete
  279.         $requete 'SELECT '.$select.'
  280.             FROM '.$entity.' e
  281.             '.$entityJoin.$where;
  282.         //echo $format;
  283.         $query $em->createQuery($requete);
  284.         switch ($format) {
  285.             case 'xml':
  286.                 $retour $this->exportXml($query$entityName);
  287.                 return $retour;
  288.                 break;
  289.             case 'csv':
  290.                 $retour $this->exportCsv($query$entityName$resultats[2]);
  291.                 return $retour;
  292.                 break;
  293.             case 'json':
  294.                 $retour $this->exportJson($query$entityName);
  295.                 return $retour;
  296.                 break;
  297.         }
  298.     }
  299.     /**
  300.      * @Route("/export/entity/download", name="dtc_export_entity_download")
  301.      */
  302.     public function exportAction(Request $requestEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator)
  303.     {
  304.         set_time_limit(0);
  305.         $donnees = [];
  306.         if ($request->getMethod() == 'POST') {
  307.             $donnees['entity'] = $request->request->get('entity');
  308.             $donnees['format'] = $request->request->get('format');
  309.             $donnees['champs'] = $request->request->get('champs');
  310.             $donnees['name']   = $request->request->get('entityName');
  311.         }
  312.         if ( ! array_key_exists('champs'$donnees) or $donnees['champs'] == '') {
  313.             $this->addFlash(
  314.                 'warning',
  315.                 $translator->trans('Merci de choisir au moins un champs à exporter!')
  316.             );
  317.             return $this->redirectToRoute('dtc_export_entity', ['name' => $donnees['name']]);
  318.         }
  319.         $champs2 json_decode($donnees['champs']);
  320.         $resultats $this->getJoin($champs2);
  321.         $entityJoin '';
  322.         foreach ($resultats[0] as $resultat) {
  323.             /*
  324.             if ($entityJoin == '' && $resultat!='')
  325.                 $entityJoin .= ' LEFT JOIN ';
  326.             elseif ($resultat!='')
  327.                 $entityJoin .= ', ';
  328.             $entityJoin .= $resultat;
  329.              *
  330.              */
  331.             $entityJoin .= ' LEFT JOIN '.$resultat;
  332.         }
  333.         $select '';
  334.         foreach ($resultats[1] as $resultat) {
  335.             if ($select != '') {
  336.                 $select .= ', ';
  337.             }
  338.             $select .= $resultat;
  339.         }
  340.         $where '';
  341.         //Requete
  342.         $query $em->createQuery(
  343.             'SELECT '.$select.'
  344.             FROM '.$donnees['entity'].' e
  345.             '.$entityJoin.$where
  346.         )
  347.             // ORDER BY p.price ASC
  348.             // WHERE p.price > :price
  349.             //->setParameter('price', '1');
  350.         ;
  351.         switch ($donnees['format']) {
  352.             case 'xml':
  353.                 $retour $this->exportXml($query$donnees['name']);
  354.                 return $retour;
  355.                 break;
  356.             case 'csv':
  357.                 $retour $this->exportCsv($query$donnees['name'], $resultats[2]);
  358.                 return $retour;
  359.                 break;
  360.             case 'json':
  361.                 $retour $this->exportJson($query$donnees['name']);
  362.                 return $retour;
  363.                 break;
  364.         }
  365.     }
  366.     private function exportXml($query$entity)
  367.     {
  368.         $results  $query->getResult();
  369.         $rootNode = new \SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' standalone='yes'?><items></items>");
  370.         foreach ($results as $result) {
  371.             $itemNode $rootNode->addChild($entity);
  372.             foreach ($result as $key => $value) {
  373.                 $itemNode->addChild($key$value);
  374.             }
  375.         }
  376.         $date     = new \Datetime();
  377.         $filename date_format($date'Ymd_').$entity.'.xml';
  378.         return new Response($rootNode->asXML(), 200, [
  379.             'Content-Type'        => 'application/force-download',
  380.             'Content-Disposition' => 'attachment; filename="'.$filename.'"',
  381.         ]);
  382.     }
  383.     private function exportCsv($query$entity$titresColonnes)
  384.     {
  385.         set_time_limit(0);
  386.         $file 'export-tmp.csv';
  387.         $dir  'Export/'.$entity.'/'.date("Y").'/'.date("m").'/'.date("d").'/';
  388.         if ( ! is_dir($dir)) {
  389.             mkdir($dir755true);
  390.         }
  391.         $file $dir.'export.csv';
  392.         if (is_file($file)) {
  393.             unlink($file);
  394.         }
  395.         //$handle = fopen('php://memory', 'r+');
  396.         $handle    fopen($file'w+');
  397.         $delimiter ';';
  398.         fputcsv($handle$titresColonnes$delimiter);
  399.         $results $query
  400.             ->setMaxResults(50000)
  401.             ->iterate();
  402.         $i       0;
  403.         foreach ($results as $row) {
  404.             $result $row[$i];
  405.             fputcsv($handle$result$delimiter);
  406.             $i++;
  407.         }
  408.         fclose($handle);
  409.     }
  410.     private function exportJson($query$entity)
  411.     {
  412.         $results  $query->getResult();
  413.         $date     = new \Datetime();
  414.         $filename date_format($date'Ymd_').$entity.'.json';
  415.         $response = new JsonResponse(['Entity' => $results]);
  416.         //$response->headers->set('Content-Type', 'application/json');
  417.         $response->headers->set('Content-Type''application/force-download');
  418.         $response->headers->set('Content-Disposition''attachment; filename="'.$filename.'"');
  419.         return $response;
  420.     }
  421.     private function getJoin($champs)
  422.     {
  423.         $entityJoin = [];
  424.         //$entityJoin['autres']='';
  425.         $select = [];
  426.         //$select['autres']='';
  427.         $titresColonnes = [];
  428.         foreach ($champs as $champ) {
  429.             $result trim(preg_replace('#([A-Z])#''_$1'$champ));
  430.             $key    strtolower($result).'_id';
  431.             switch ($champ) {
  432.                 case 'marque':
  433.                     //$select[$key] = 'e.'.$key;
  434.                     $select[$key]     = '(e.'.$champ.') as '.$champ.'_id';
  435.                     $titresColonnes[] = $key;
  436.                     break;
  437.                 case 'images':
  438.                     //$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
  439.                     //$titresColonnes[] = $key;
  440.                     break;
  441.                 case 'uniteMesure':
  442.                     $select[$key]     = '(e.'.$champ.') as '.$champ.'_id';
  443.                     $titresColonnes[] = $key;
  444.                     break;
  445.                 case 'familleCompta' :
  446.                     $select[$key]     = '(e.'.$champ.') as '.$champ.'_id';
  447.                     $titresColonnes[] = $key;
  448.                     break;
  449.                 case 'type' :
  450.                     $select[$key]     = '(e.'.$champ.') as '.$champ.'_id';
  451.                     $titresColonnes[] = $key;
  452.                     break;
  453.                 case 'regleTaxe' :
  454.                     $select[$key]     = '(e.'.$champ.') as '.$champ.'_id';
  455.                     $titresColonnes[] = $key;
  456.                     break;
  457.                 case 'categorieRemiseArticle' :
  458.                     $select[$key]     = '(e.'.$champ.') as '.$champ.'_id';
  459.                     $titresColonnes[] = $key;
  460.                     break;
  461.                 case 'articleRemplacement' :
  462.                     $select[$key]     = '(e.'.$champ.') as '.$champ.'_id';
  463.                     $titresColonnes[] = $key;
  464.                     break;
  465.                 case 'emplacements' :
  466.                     //$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
  467.                     //$titresColonnes[] = $key;
  468.                     break;
  469.                 default:
  470.                     $key              $champ;
  471.                     $select[$key]     = 'e.'.$champ;
  472.                     $titresColonnes[] = $key;
  473.             }
  474.         }
  475.         return [$entityJoin$select$titresColonnes];
  476.     }
  477.     /**
  478.      * @Route("/export/entity/{name}/champs", name="dtc_export_entity_champs")
  479.      */
  480.     public function champsAction(Request $request$name$champsSelectionnes = [], $isSelectionne false)
  481.     {
  482.         $utilisateur      $this->getUser();
  483.         $typesUtilisateur $utilisateur->getTypesUtilisateur();
  484.         //$entities = $em->getRepository(Export_Entity_exportable::class)->findAll();
  485.         //$champs = $em->getRepository('DTCExportBundle:Export_champs_exportables')->findByEntityAndTypes($name, $typesUtilisateur);
  486.         //$donnees = array();
  487.         switch ($name) {
  488.             case 'prixNetAchat':
  489.                 $objet = new ConditionAchat();
  490.                 $form  $this->createForm(ConditionAchatExportType::class, $objet);
  491.                 break;
  492.             case 'equivalence':
  493.                 $article = new Article();
  494.                 $article->setLibelle('test');
  495.                 $form $this->createForm(ArticleEquivalenceExportType::class, $article);
  496.                 break;
  497.             case 'offres':
  498.                 $articleMarketPlace = new ArticleMarketPlace();
  499.                 $articleMarketPlace->setLibelle('test');
  500.                 $form $this->createForm(ArticleMarketPlaceExportType::class, $articleMarketPlace);
  501.                 break;
  502.             case 'article':
  503.                 $article = new Article();
  504.                 $article->setLibelle('test');
  505.                 $form $this->createForm(ArticleExportType::class, $article);
  506.                 break;
  507.             case 'vehicule':
  508.                 $vehicule = new Type();
  509.                 $vehicule->setLibelle('test');
  510.                 $form $this->createForm(VehiculeExportType::class, $vehicule);
  511.                 break;
  512.             case 'categorie':
  513.                 $objet = new Categorie();
  514.                 $form  $this->createForm(CategorieType::class, $objet);
  515.                 break;
  516.             case 'client':
  517.                 $objet = new Client();
  518.                 $form  $this->createForm(ClientType::class, $objet);
  519.                 break;
  520.             case 'fournisseur':
  521.                 $objet = new Fournisseur();
  522.                 $form  $this->createForm(FournisseurType::class, $objet);
  523.                 break;
  524.             case 'CommandeFournisseur':
  525.                 $objet = new CommandeFournisseur();
  526.                 $form  $this->createForm(SuggestionCommandeFournisseurExportType::class, $objet);
  527.                 break;
  528.             case 'conditionAchat':
  529.                 $objet = new ConditionAchat();
  530.                 $form  $this->createForm(ConditionAchatExportType::class, $objet);
  531.                 break;
  532.             case 'conditionVente':
  533.                 $objet = new ConditionVente();
  534.                 $form  $this->createForm(ConditionVenteExportType::class, $objet);
  535.                 break;
  536.             case 'exportCorrectionPump':
  537.                 $objet = new ConditionAchat();
  538.                 $form  $this->createForm(ConditionAchatExportType::class, $objet);
  539.                 break;
  540.             case 'Contact':
  541.                 $objet = new Contact();
  542.                 $form  $this->createForm(ContactExportType::class, $objet);
  543.                 break;
  544.             case 'categories_clients':
  545.                 $objet = new Categorie();
  546.                 $form  $this->createForm(CategorieExportType::class, $objet);
  547.                 break;
  548.             case 'emplacementLibre':
  549.                 $objet = new Emplacement();
  550.                 $form  $this->createForm(EmplacementExportType::class, $objet);
  551.                 break;
  552.             case 'adresses':
  553.                 $objet = new Adresse();
  554.                 $form  $this->createForm(AdresseExportType::class, $objet);
  555.                 break;
  556.             case 'Mouvements de stock':
  557.                 $objet = new MouvementStock();
  558.                 $form  $this->createForm(MouvementStockExportType::class, $objet);
  559.                 break;
  560.             default:
  561.                 $article = new Article();
  562.                 $article->setLibelle('test');
  563.                 $form $this->createForm(ArticleExportType::class, $article);
  564.         }
  565.         return $this->render(
  566.             'Export/Entity/champs.html.twig',
  567.             ['form' => $form->createView(), 'champsSelectionnes' => $champsSelectionnes'isSelectionne' => $isSelectionne'name' => $name]
  568.         );
  569.     }
  570.     /**
  571.      * @Route("", name="")
  572.      */
  573.     public function exportVersComptaOldAction(Request $requestEntityManagerInterface $emValidatorInterface $validator)
  574.     {
  575.         $errors    '';
  576.         $date     = new \Datetime();
  577.         $interval = new \DateInterval('P1D');
  578.         $date->sub($interval);
  579.         $dateJour = new \Datetime();
  580.         $repo_bordereau  $em->getRepository(Bordereau::class);
  581.         $repo_reglements $em->getRepository(Acompte::class);
  582.         $repo_factures   $em->getRepository(Commande::class);
  583.         $repo_tva        $em->getRepository(Taxe::class);
  584.         $repo_article    $em->getRepository(Article::class);
  585.         //$repo_article_compta = $em->getRepository('DTCArticlesBundle:ArticleCompta');
  586.         $repo_article_famille_compta_compta $em->getRepository(FamilleComptaCompta::class);
  587.         $repo_commandes_fournisseur         $em->getRepository(CommandeFournisseur::class);
  588.         $repo_mvt_caisse                    $em->getRepository(MouvementCaisse::class);
  589.         $repo_compte_bancaire               $em->getRepository(CompteBancaire::class);
  590.         $compteAmazon                       $em->getRepository(CodeClientCommande::class)->find(1);
  591.         $societe $em->getRepository(Societe::class)->find(1);
  592.         $dir 'Export/comptabilite/'.date("Y").'/'.date("m").'/'.date("d").'/';
  593.         if ( ! is_dir($dir)) {
  594.             mkdir($dir755true);
  595.         }
  596.         //$file = $dir.'export.csv';
  597.         $file $dir.'export_compta_'.date_format($date'Ymd_hms').'.csv';
  598.         if (is_file($file)) {
  599.             unlink($file);
  600.         }
  601.         //$handle = fopen('php://memory', 'r+');
  602.         $handle fopen($file'w+');
  603.         $header                = [];
  604.         $ecritures             = [];
  605.         $ecrituresEquilibrees  = [];
  606.         $ecrituresNonexportees = [];
  607.         $comptesBancaires $em->getRepository(CompteBancaire::class)->findAll();
  608.         $journal $request->request->get('journal');
  609.         if ($request->request->get('date') != '') {
  610.             $date date_create_from_format('d/m/Y'$request->request->get('date'));
  611.         }
  612.         $action $request->request->get('action');
  613.         if ($action == "exporter") {
  614.             $delimiter ';';
  615.         } else {
  616.             $delimiter '|';
  617.         }
  618.         $donnees = [
  619.             'ids'                        => $request->request->get('ids'),
  620.             'ids2'                       => $request->request->get('ids2'),
  621.             'journaux'                   => $request->request->get('journaux'),
  622.             'dates'                      => $request->request->get('dates'),
  623.             'codesJournal'               => $request->request->get('codesJournal'),
  624.             'comptes'                    => $request->request->get('comptes'),
  625.             'numsPiece'                  => $request->request->get('numsPiece'),
  626.             'libelles'                   => $request->request->get('libelles'),
  627.             'debits'                     => $request->request->get('debits'),
  628.             'credits'                    => $request->request->get('credits'),
  629.             'monnaies'                   => $request->request->get('monnaies'),
  630.             'analytiques'                => $request->request->get('analytiques'),
  631.             'moyensPaiement'             => $request->request->get('moyensPaiement'),
  632.             'equilibrages'               => $request->request->get('equilibrages'),
  633.             'fournisseurNumerauxFacture' => $request->request->get('fournisseurNumerauxFacture'),
  634.         ];
  635.         $elementsAequilibrer = [];
  636.         $equilibrages        = [];
  637.         //Journal de trésorerie
  638.         //---->Reglements
  639.         $banqueEncaissements $repo_bordereau->getBordereauxAexporterVersCompta($journal$date);
  640.         foreach ($banqueEncaissements as $donnee) {
  641.             if ($journal == '' || $journal == $donnee['libelle']) {
  642.                 if ($action == 'exporter' || $action == "exporterTxt") {
  643.                     $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  644.                     $codeJournal $donnee['libelle'];
  645.                     $compte      $donnee['comptaCompta'];
  646.                     $numPiece    $donnee['reference'];
  647.                     $libelle     '';
  648.                     $ecrituresNonexportees[] =
  649.                         $dateTmp.'-'//$result['date']
  650.                         .$codeJournal.'-'//$result['codeJournal']
  651.                         .$compte.'-'//$result['compte']
  652.                         .$numPiece.'-'//$result['numPiece']
  653.                         .$libelle//$result['libelle']
  654.                     ;
  655.                 } else {
  656.                     $result                = [];
  657.                     $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  658.                     $result['codeJournal'] = $donnee['libelle'];
  659.                     $result['compte']      = $donnee['comptaCompta'];
  660.                     $result['numPiece']    = $donnee['reference'];
  661.                     $result['libelle']     = '';
  662.                     if ($donnee['total'] > 0) {
  663.                         $result['debit']  = $donnee['total'];
  664.                         $result['credit'] = '';
  665.                     } else {
  666.                         $result['debit']  = '';
  667.                         $result['credit'] = abs($donnee['total']);
  668.                     }
  669.                     $result['monnaie']       = 'E';
  670.                     $result['analytique']    = '';
  671.                     $result['moyenPaiement'] = $donnee['libelleCompta'];
  672.                     fputcsv($handle$result$delimiter);
  673.                     $result['lien']                      = $this->generateUrl('dtc_bordereau_modifier', ['id' => $donnee['id']]);
  674.                     $result['id2']                       = $donnee['id'];
  675.                     $ecritures[$result['codeJournal']][] = $result;
  676.                 }
  677.                 if ($action == 'exporter' || $action == "exporterTxt") {
  678.                     if ($donnee['settlementId'] != '') {
  679.                         $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  680.                         $codeJournal $donnee['libelle'];
  681.                         if (is_object($compteAmazon)) {
  682.                             $compte  $compteAmazon->getCode();
  683.                             $libelle $compteAmazon->getLibelle();
  684.                         } else {
  685.                             $compte  'amazon';
  686.                             $libelle 'amazon';
  687.                         }
  688.                         $reglements $repo_reglements->findBy(['bordereau' => $donnee['id']]);
  689.                         if (count($reglements) > 0) {
  690.                             $codeClientCommande $this->getCodeClientCommande(''$reglements[0], '');
  691.                             if (is_object($codeClientCommande)) {
  692.                                 $compte  $codeClientCommande->getCompteComptable();
  693.                                 $libelle $codeClientCommande->getLibelle();
  694.                             } else {
  695.                                 $compte $this->getCodeComptableClient(''$reglements[0], '');
  696.                             }
  697.                         }
  698.                         $numPiece '';
  699.                         $ecrituresNonexportees[] =
  700.                             $dateTmp.'-'//$result['date']
  701.                             .$codeJournal.'-'//$result['codeJournal']
  702.                             .$compte.'-'//$result['compte']
  703.                             .$numPiece.'-'//$result['numPiece']
  704.                             .$libelle//$result['libelle']
  705.                         ;
  706.                     } else {
  707.                         //Recuperer chaque reglement
  708.                         $reglements $repo_reglements->findBy(['bordereau' => $donnee['id']]);
  709.                         foreach ($reglements as $reglement) {
  710.                             if ($journal == '' || $journal == $donnee['libelle']) {
  711.                                 $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  712.                                 $codeJournal $donnee['libelle'];
  713.                                 //Recuperer le compte comptable du client
  714.                                 //$compte = $reglement->getClient()->getCodeComptable();
  715.                                 $numPiece $reglement->getNumPiece();
  716.                                 $libelle  '';
  717.                                 //Recuperer le compte comptable du client ou de sa categorie
  718.                                 $codeClientCommande $this->getCodeClientCommande(''$reglement'');
  719.                                 if (is_object($codeClientCommande)) {
  720.                                     $compte  $codeClientCommande->getCompteComptable();
  721.                                     $libelle $codeClientCommande->getLibelle();
  722.                                 } else {
  723.                                     $compte $this->getCodeComptableClient(''$reglement'');
  724.                                 }
  725.                                 $ecrituresNonexportees[] =
  726.                                     $dateTmp.'-'//$result['date']
  727.                                     .$codeJournal.'-'//$result['codeJournal']
  728.                                     .$compte.'-'//$result['compte']
  729.                                     .$numPiece.'-'//$result['numPiece']
  730.                                     .$libelle//$result['libelle']
  731.                                 ;
  732.                             }
  733.                             //OD
  734.                             if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
  735.                                 $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  736.                                 $codeJournal 'OD';
  737.                                 //Recuperer le compte comptable du client
  738.                                 //$compte = $reglement->getClient()->getCodeComptable();
  739.                                 //Recuperer le compte comptable du client ou de sa categorie
  740.                                 $compte   $this->getCodeComptableClient(''$reglement'');
  741.                                 $numPiece $reglement->getNumPiece();
  742.                                 $libelle  'OD REG '.$reglement->getModeReglement()->getLibelle();
  743.                                 if (is_object($reglement->getClient())) {
  744.                                     $libelle $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  745.                                 }
  746.                                 $ecrituresNonexportees[] =
  747.                                     $dateTmp.'-'//$result['date']
  748.                                     .$codeJournal.'-'//$result['codeJournal']
  749.                                     .$compte.'-'//$result['compte']
  750.                                     .$numPiece.'-'//$result['numPiece']
  751.                                     .$libelle//$result['libelle']
  752.                                 ;
  753.                                 $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  754.                                 $codeJournal 'OD';
  755.                                 //Recuperer le compte comptable du client
  756.                                 if (floatval($reglement->getOperationDiverse()) > 0) {
  757.                                     $compte '658000';//Compte de charges
  758.                                 } else {
  759.                                     $compte '758000';//Compte de produits divers
  760.                                 }
  761.                                 $numPiece $reglement->getNumPiece();
  762.                                 $libelle  'OD REG '.$reglement->getModeReglement()->getLibelle();
  763.                                 $ecrituresNonexportees[] =
  764.                                     $dateTmp.'-'//$result['date']
  765.                                     .$codeJournal.'-'//$result['codeJournal']
  766.                                     .$compte.'-'//$result['compte']
  767.                                     .$numPiece.'-'//$result['numPiece']
  768.                                     .$libelle//$result['libelle']
  769.                                 ;
  770.                             }
  771.                         }
  772.                     }
  773.                 } else {
  774.                     if ($donnee['settlementId'] != '') {
  775.                         if (is_object($compteAmazon)) {
  776.                             $result['compte']  = $compteAmazon->getCode();
  777.                             $result['libelle'] = $compteAmazon->getLibelle();
  778.                         } else {
  779.                             $result['compte']  = 'amazon';
  780.                             $result['libelle'] = 'amazon';
  781.                         }
  782.                         $reglements $repo_reglements->findBy(['bordereau' => $donnee['id']]);
  783.                         if (count($reglements) > 0) {
  784.                             $codeClientCommande $this->getCodeClientCommande(''$reglements[0], '');
  785.                             if (is_object($codeClientCommande)) {
  786.                                 $result['compte']  = $codeClientCommande->getCompteComptable();
  787.                                 $result['libelle'] = $codeClientCommande->getLibelle();
  788.                             } else {
  789.                                 $result['compte'] = $this->getCodeComptableClient(''$reglements[0], '');
  790.                             }
  791.                         }
  792.                         $result['numPiece'] = '';
  793.                         if ($donnee['totalReglements'] > 0) {
  794.                             $result['debit']  = '';
  795.                             $result['credit'] = abs($donnee['totalReglements']);
  796.                         } else {
  797.                             $result['debit']  = abs($donnee['totalReglements']);
  798.                             $result['credit'] = '';
  799.                         }
  800.                         $ecritures[$result['codeJournal']][] = $result;
  801.                         if ($donnee['autresCharges'] > 0) {
  802.                             $result['debit']  = '';
  803.                             $result['credit'] = abs($donnee['autresCharges']);
  804.                         } else {
  805.                             $result['debit']  = abs($donnee['autresCharges']);
  806.                             $result['credit'] = '';
  807.                         }
  808.                         $result['analytique'] = '';
  809.                         //$result['moyenPaiement'] = 'test';
  810.                         $ecritures[$result['codeJournal']][] = $result;
  811.                     } else {
  812.                         //Recuperer chaque reglement
  813.                         $reglements $repo_reglements->findBy(['bordereau' => $donnee['id']]);
  814.                         foreach ($reglements as $reglement) {
  815.                             if ($journal == '' || $journal == $donnee['libelle']) {
  816.                                 $result                = [];
  817.                                 $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  818.                                 $result['codeJournal'] = $donnee['libelle'];
  819.                                 $result['numPiece']    = $reglement->getNumPiece();
  820.                                 $result['libelle']     = '';
  821.                                 if ( ! is_object($reglement->getModeReglement())) {
  822.                                     //echo "<div>R".$reglement->getId()."</div>";
  823.                                     //exit;
  824.                                 } else {
  825.                                     $result['libelle'] = 'REG '.$reglement->getModeReglement()->getLibelle();
  826.                                     if (is_object($reglement->getClient())) {
  827.                                         $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  828.                                     }
  829.                                 }
  830.                                 //Recuperer le compte comptable du client ou de sa categorie
  831.                                 $codeClientCommande $this->getCodeClientCommande(''$reglement'');
  832.                                 if (is_object($codeClientCommande)) {
  833.                                     $result['compte']  = $codeClientCommande->getCompteComptable();
  834.                                     $result['libelle'] = $codeClientCommande->getLibelle();
  835.                                 } else {
  836.                                     $result['compte'] = $this->getCodeComptableClient(''$reglement'');
  837.                                 }
  838.                                 if (floatval($reglement->getMontant()) > 0) {
  839.                                     $result['debit']  = '';
  840.                                     $result['credit'] = abs($reglement->getMontant());//Peut etre en absolu
  841.                                 } else {
  842.                                     $result['debit']  = abs($reglement->getMontant());//Peut etre en absolu
  843.                                     $result['credit'] = '';
  844.                                 }
  845.                                 $result['monnaie']       = 'E';
  846.                                 $result['analytique']    = '';
  847.                                 $result['moyenPaiement'] = '';
  848.                                 if (is_object($reglement->getModeReglement())) {
  849.                                     $result['moyenPaiement'] = $reglement->getModeReglement()->getLibelleCompta();
  850.                                 }
  851.                                 fputcsv($handle$result$delimiter);
  852.                                 if (is_object($reglement->getCommande())) {
  853.                                     $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  854.                                 } else {
  855.                                     $result['lien'] = '';
  856.                                 }
  857.                                 $ecritures[$result['codeJournal']][] = $result;
  858.                             }
  859.                             //OD
  860.                             if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
  861.                                 $result                = [];
  862.                                 $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  863.                                 $result['codeJournal'] = 'OD';
  864.                                 $result['numPiece']    = $reglement->getNumPiece();
  865.                                 $result['libelle']     = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  866.                                 if (is_object($reglement->getClient())) {
  867.                                     $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  868.                                 }
  869.                                 //Recuperer le compte comptable du client ou de sa categorie
  870.                                 $codeClientCommande $this->getCodeClientCommande(''$reglement'');
  871.                                 if (is_object($codeClientCommande)) {
  872.                                     $result['compte']  = $codeClientCommande->getCompteComptable();
  873.                                     $result['libelle'] = $codeClientCommande->getLibelle();
  874.                                 } else {
  875.                                     $result['compte'] = $this->getCodeComptableClient(''$reglement'');
  876.                                 }
  877.                                 if (floatval($reglement->getOperationDiverse()) > 0) {
  878.                                     $result['debit']  = '';
  879.                                     $result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
  880.                                 } else {
  881.                                     $result['debit']  = abs($reglement->getOperationDiverse());//Peut etre en absolu
  882.                                     $result['credit'] = '';
  883.                                 }
  884.                                 $result['monnaie']       = 'E';
  885.                                 $result['analytique']    = '';
  886.                                 $result['moyenPaiement'] = '';
  887.                                 fputcsv($handle$result$delimiter);
  888.                                 if (is_object($reglement->getCommande())) {
  889.                                     $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  890.                                 } else {
  891.                                     $result['lien'] = '';
  892.                                 }
  893.                                 $ecritures[$result['codeJournal']][] = $result;
  894.                                 $result                = [];
  895.                                 $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  896.                                 $result['codeJournal'] = 'OD';
  897.                                 //Recuperer le compte comptable du client
  898.                                 if (floatval($reglement->getOperationDiverse()) > 0) {
  899.                                     $result['compte'] = '658000';//Compte de charges
  900.                                     $result['debit']  = abs($reglement->getOperationDiverse());
  901.                                     $result['credit'] = '';
  902.                                 } else {
  903.                                     $result['compte'] = '758000';//Compte de produits divers
  904.                                     $result['debit']  = '';
  905.                                     $result['credit'] = abs($reglement->getOperationDiverse());
  906.                                 }
  907.                                 $result['numPiece'] = $reglement->getNumPiece();
  908.                                 $result['libelle']  = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  909.                                 /*
  910.                                     if(is_object($reglement->getClient()))
  911.                                             $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  912.                                     *
  913.                                     */
  914.                                 $result['monnaie']       = 'E';
  915.                                 $result['analytique']    = '';
  916.                                 $result['moyenPaiement'] = '';
  917.                                 fputcsv($handle$result$delimiter);
  918.                                 if (is_object($reglement->getCommande())) {
  919.                                     $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  920.                                 } else {
  921.                                     $result['lien'] = '';
  922.                                 }
  923.                                 $ecritures[$result['codeJournal']][] = $result;
  924.                             }
  925.                         }
  926.                     }    //exit;
  927.                 }
  928.             }
  929.         }
  930.         //Journal des achats
  931.         if ($journal == 'AC' || $journal == '') {
  932.             //$facturesFids = $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date);
  933.             $facturesF $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date)->getQuery()->getResult();
  934.             $taxe      $repo_tva->find(1);//20%
  935.             //foreach($facturesFids as $factureFid){
  936.             foreach ($facturesF as $factureF) {
  937.                 //Facture dans une autre devise
  938.                 $tauxChange floatval($factureF->getTauxChange());
  939.                 if ($tauxChange == 0) {
  940.                     $tauxChange 1;
  941.                 }
  942.                 //$montant = floatval($factureF->getTotalTtc())*$tauxChange;
  943.                 $equilibrage2 0;
  944.                 $montantTotal 0;
  945.                 $fournisseur $factureF->getFournisseur();
  946.                 if ($factureF->getFournisseurLibelle() != '') {
  947.                     $libelle $factureF->getFournisseurLibelle();
  948.                 } else {
  949.                     $libelle $fournisseur->getLibelle();
  950.                 }
  951.                 $tvas            = [];
  952.                 $famillesArticle = [];
  953.                 $comptaObjet     $factureF->getFournisseur()->getCompta();
  954.                 if (is_object($comptaObjet)) {
  955.                     $compta $comptaObjet->getId();
  956.                 } else {
  957.                     $compta 11;
  958.                 }//FRANCE
  959.                 //Frais de port
  960.                 $tauxTva $factureF->getTauxTvaFraisPort();
  961.                 if ($tauxTva == '') {
  962.                     $tauxTva 0;
  963.                 }
  964.                 $tva $repo_tva->findOneBy(['taux' => $tauxTva]);
  965.                 if (is_object($tva)) {
  966.                     $codeComptaTVA strval($tva->getComptaAchat());
  967.                 } else {
  968.                     $codeComptaTVA '';
  969.                 }
  970.                 $codeComptaFamille '607';
  971.                 $familleCompta     $societe->getFamilleComptaFraisPort();
  972.                 if (is_object($familleCompta)) {
  973.                     $famille $repo_article_famille_compta_compta->findOneBy([
  974.                                                                                   'familleCompta' => $familleCompta->getId(),//Article port
  975.                                                                                   'compta'        => $compta,
  976.                                                                                   'taxe'          => $taxe,
  977.                                                                               ]);
  978.                     if (is_object($famille)) {
  979.                         $codeComptaFamille $famille->getAchat();
  980.                     }
  981.                 }
  982.                 //Frais de port supplementaire
  983.                 $fraisPortHT floatval($factureF->getFraisPortSupplementaire());
  984.                 if ($fraisPortHT != 0) {
  985.                     $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  986.                 }
  987.                 $montantTva floatval($factureF->getTotalTvaFraisPort());
  988.                 if ( ! (floatval($montantTva) == || floatval($montantTva) == '')) {
  989.                     $tvas[$codeComptaTVA] = floatval($montantTva);
  990.                 }
  991.                 //Ajout de l'arrondi
  992.                 $arrondiTVA $factureF->getArrondiTva();
  993.                 if ($arrondiTVA != '') {
  994.                     if (array_key_exists($codeComptaTVA$tvas)) {
  995.                         $tvas[$codeComptaTVA] += floatval($arrondiTVA);
  996.                     } else {
  997.                         $tvas[$codeComptaTVA] = floatval($arrondiTVA);
  998.                     }
  999.                 }
  1000.                 //Frais fixe
  1001.                 $codeComptaFamille '0';
  1002.                 $familleCompta     $societe->getFamilleComptaFraisFixe();
  1003.                 if (is_object($familleCompta)) {
  1004.                     $famille $repo_article_famille_compta_compta->findOneBy([
  1005.                                                                                   'familleCompta' => $familleCompta->getId(),//Article port
  1006.                                                                                   'compta'        => $compta,
  1007.                                                                                   'taxe'          => $taxe,
  1008.                                                                               ]);
  1009.                     if (is_object($famille)) {
  1010.                         $codeComptaFamille $famille->getAchat();
  1011.                     }
  1012.                 }
  1013.                 $fraisFixe $factureF->getFraisFixe();
  1014.                 if ($fraisFixe != 0) {
  1015.                     if (array_key_exists($codeComptaFamille$famillesArticle)) {
  1016.                         $famillesArticle[$codeComptaFamille] += $fraisFixe;
  1017.                     } else {
  1018.                         $famillesArticle[$codeComptaFamille] = $fraisFixe;
  1019.                     }
  1020.                     $tvaSurfraisFixe $fraisFixe $tauxTva 100;
  1021.                     if (array_key_exists($codeComptaTVA$tvas)) {
  1022.                         $tvas[$codeComptaTVA] += floatval($tvaSurfraisFixe);
  1023.                     } else {
  1024.                         $tvas[$codeComptaTVA] = floatval($tvaSurfraisFixe);
  1025.                     }
  1026.                 }
  1027.                 foreach ($factureF->getArticleCommande() as $ac) {
  1028.                     //TVA
  1029.                     $tauxTva floatval($ac->getTva());
  1030.                     $montantTva $ac->getTvaVente();
  1031.                     $codeComptaTVA '';
  1032.                     $tva           $repo_tva->findOneBy(['taux' => $tauxTva]);
  1033.                     if (is_object($tva)) {
  1034.                         'tva trouvee';
  1035.                     }
  1036.                     if (is_object($tva)) {
  1037.                         $codeComptaTVA $tva->getComptaAchat();
  1038.                     }
  1039.                     $key strval($codeComptaTVA);
  1040.                     if ($montantTva != 0) {
  1041.                         if (array_key_exists($key$tvas)) {
  1042.                             $tvas[$key] += floatval($montantTva);
  1043.                         } else {
  1044.                             $tvas[$key] = floatval($montantTva);
  1045.                         }
  1046.                     }
  1047.                     //Famille d'articles
  1048.                     $codeComptaFamille '607';
  1049.                     $familleCompta     $ac->getArticle()->getFamilleCompta();
  1050.                     if (is_object($familleCompta)) {
  1051.                         $famille $repo_article_famille_compta_compta->findOneBy([
  1052.                                                                                       'familleCompta' => $familleCompta->getId(),
  1053.                                                                                       'compta'        => $compta,
  1054.                                                                                       'taxe'          => $taxe,
  1055.                                                                                   ]);
  1056.                         if (is_object($famille)) {
  1057.                             $codeComptaFamille $famille->getAchat();
  1058.                         }
  1059.                     }
  1060.                     $montantHt $ac->getTotalHt(3);
  1061.                     //prendre en compte le coefficient de conditionnement
  1062.                     $coefficientConditionnement $ac->getCoefficientConditionnement();
  1063.                     if ($coefficientConditionnement != 0) {
  1064.                         $montantHt $montantHt $coefficientConditionnement;
  1065.                     }
  1066.                     if ($montantHt != 0) {
  1067.                         if (array_key_exists($codeComptaFamille$famillesArticle)) {
  1068.                             $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  1069.                         } else {
  1070.                             $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  1071.                         }
  1072.                     }
  1073.                     //Frais annexes
  1074.                     $montantHt $ac->getFraisAnnexes();
  1075.                     if ($montantHt != 0) {
  1076.                         $codeComptaFamille '0';
  1077.                         //$familleCompta = $ac->getArticle()->getFamilleCompta();
  1078.                         $familleCompta $societe->getFamilleComptaFraisAnnexes();
  1079.                         if (is_object($familleCompta)) {
  1080.                             $famille $repo_article_famille_compta_compta->findOneBy([
  1081.                                                                                           'familleCompta' => $familleCompta->getId(),
  1082.                                                                                           'compta'        => $compta,
  1083.                                                                                           'taxe'          => $taxe,
  1084.                                                                                       ]);
  1085.                             if (is_object($famille)) {
  1086.                                 $codeComptaFamille $famille->getAchat();
  1087.                             }
  1088.                         }
  1089.                         if (array_key_exists($codeComptaFamille$famillesArticle)) {
  1090.                             $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  1091.                         } else {
  1092.                             $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  1093.                         }
  1094.                     }
  1095.                 }
  1096.                 if ($action == 'exporter' || $action == "exporterTxt") {
  1097.                     foreach ($tvas as $key => $montant) {
  1098.                         $dateTmp     $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1099.                         $codeJournal 'AC';
  1100.                         //Recuperer le compte comptable du client
  1101.                         $compte $key;//$codeComptaTVA;
  1102.                         //$result['numPiece'] = $factureF->getReference();
  1103.                         $numPiece $factureF->getfournisseurNumeroFacture();
  1104.                         $ecrituresNonexportees[] =
  1105.                             $dateTmp.'-'//$result['date']
  1106.                             .$codeJournal.'-'//$result['codeJournal']
  1107.                             .$compte.'-'//$result['compte']
  1108.                             .$numPiece.'-'//$result['numPiece']
  1109.                             .$libelle//$result['libelle']
  1110.                         ;
  1111.                     }
  1112.                     foreach ($famillesArticle as $key => $montant) {
  1113.                         $dateTmp     $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1114.                         $codeJournal 'AC';
  1115.                         //Recuperer le compte comptable du client
  1116.                         $compte $key;
  1117.                         //$result['numPiece'] = $factureF->getReference();
  1118.                         $numPiece $factureF->getfournisseurNumeroFacture();
  1119.                         $ecrituresNonexportees[] =
  1120.                             $dateTmp.'-'//$result['date']
  1121.                             .$codeJournal.'-'//$result['codeJournal']
  1122.                             .$compte.'-'//$result['compte']
  1123.                             .$numPiece.'-'//$result['numPiece']
  1124.                             .$libelle//$result['libelle']
  1125.                         ;
  1126.                     }
  1127.                     $dateTmp     $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1128.                     $codeJournal 'AC';
  1129.                     //Recuperer le compte comptable du client
  1130.                     $compte   $fournisseur->getCodeComptable();
  1131.                     $numPiece $factureF->getfournisseurNumeroFacture();
  1132.                     $ecrituresNonexportees[] =
  1133.                         $dateTmp.'-'//$result['date']
  1134.                         .$codeJournal.'-'//$result['codeJournal']
  1135.                         .$compte.'-'//$result['compte']
  1136.                         .$numPiece.'-'//$result['numPiece']
  1137.                         .$libelle//$result['libelle']
  1138.                     ;
  1139.                 } else {
  1140.                     if ($journal == '' || $journal == 'AC') {
  1141.                         foreach ($tvas as $key => $montant) {
  1142.                             $montant               round($montant $tauxChange2);
  1143.                             $montantTotal          += $montant;
  1144.                             $result                = [];
  1145.                             $result['date']        = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1146.                             $result['codeJournal'] = 'AC';
  1147.                             //Recuperer le compte comptable du client
  1148.                             $result['compte'] = $key;//$codeComptaTVA;
  1149.                             //$result['numPiece'] = $factureF->getReference();
  1150.                             $result['numPiece'] = $factureF->getfournisseurNumeroFacture();
  1151.                             //$result['libelle'] = 'FAC Fourn - TVA ';
  1152.                             $result['libelle'] = $libelle;
  1153.                             if (floatval($montant) > 0) {
  1154.                                 $result['debit']  = abs($montant);
  1155.                                 $result['credit'] = '';
  1156.                             } else {
  1157.                                 $result['debit']  = '';
  1158.                                 $result['credit'] = abs($montant);
  1159.                             }
  1160.                             $equilibrage2 += $montant;
  1161.                             $result['monnaie']       = 'E';
  1162.                             $result['analytique']    = '';
  1163.                             $result['moyenPaiement'] = '';
  1164.                             fputcsv($handle$result$delimiter);
  1165.                             $result['fournisseurNumeroFacture']  = $factureF->getfournisseurNumeroFacture();
  1166.                             $result['lien']                      = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
  1167.                             $result['id2']                       = $factureF->getId();
  1168.                             $ecritures[$result['codeJournal']][] = $result;
  1169.                         }
  1170.                         foreach ($famillesArticle as $key => $montant) {
  1171.                             $montant               round($montant $tauxChange2PHP_ROUND_HALF_DOWN);
  1172.                             $montantTotal          += $montant;
  1173.                             $result                = [];
  1174.                             $result['date']        = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1175.                             $result['codeJournal'] = 'AC';
  1176.                             //Recuperer le compte comptable du client
  1177.                             $result['compte'] = $key;
  1178.                             //$result['numPiece'] = $factureF->getReference();
  1179.                             $result['numPiece'] = $factureF->getfournisseurNumeroFacture();
  1180.                             //$result['libelle'] = 'FAC Fourn - Famille article ';
  1181.                             $result['libelle'] = $libelle;
  1182.                             if (floatval($montant) > 0) {
  1183.                                 $result['debit']  = abs($montant);
  1184.                                 $result['credit'] = '';
  1185.                             } else {
  1186.                                 $result['debit']  = '';
  1187.                                 $result['credit'] = abs($montant);
  1188.                             }
  1189.                             $equilibrage2 += $montant;
  1190.                             $result['monnaie']       = 'E';
  1191.                             $result['analytique']    = '';
  1192.                             $result['moyenPaiement'] = '';
  1193.                             fputcsv($handle$result$delimiter);
  1194.                             $result['fournisseurNumeroFacture']  = $factureF->getfournisseurNumeroFacture();
  1195.                             $result['lien']                      = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
  1196.                             $result['id2']                       = $factureF->getId();
  1197.                             $ecritures[$result['codeJournal']][] = $result;
  1198.                         }
  1199.                         //$fournisseur = $factureF->getFournisseur();
  1200.                         if ($fournisseur->getDivers() == && is_object($fournisseur->getParent())) {
  1201.                             $fournisseur $fournisseur->getParent();
  1202.                         }
  1203.                         $result                = [];
  1204.                         $result['date']        = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1205.                         $result['codeJournal'] = 'AC';
  1206.                         //Recuperer le compte comptable du client
  1207.                         $result['compte'] = $fournisseur->getCodeComptable();
  1208.                         //$result['numPiece'] = $factureF->getReference();
  1209.                         $result['numPiece'] = $factureF->getfournisseurNumeroFacture();
  1210.                         $result['libelle']  = $libelle;
  1211.                         if ($montantTotal 0) {
  1212.                             $result['debit']  = '';
  1213.                             $result['credit'] = abs($montantTotal);
  1214.                         } else {
  1215.                             $result['debit']  = abs($montantTotal);
  1216.                             $result['credit'] = '';
  1217.                         }
  1218.                         $equilibrage1 $montantTotal;
  1219.                         $result['monnaie']       = 'E';
  1220.                         $result['analytique']    = '';
  1221.                         $result['moyenPaiement'] = '';
  1222.                         fputcsv($handle$result$delimiter);
  1223.                         $result['fournisseurNumeroFacture']  = $factureF->getfournisseurNumeroFacture();
  1224.                         $result['lien']                      = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
  1225.                         $result['id2']                       = $factureF->getId();
  1226.                         $ecritures[$result['codeJournal']][] = $result;
  1227.                     }
  1228.                     if (strval($equilibrage1) != strval($equilibrage2)) {
  1229.                         $elementsAequilibrer[] = $factureF->getReference().'-'.$factureF->getId();
  1230.                     }
  1231.                 }
  1232.             }
  1233.         }
  1234.         //Journal des ventes
  1235.         if ($journal == 'VE' || $journal == '') {
  1236.             $ventes $repo_factures->getFacturesEtAvoirsAtransfererEnCompta($date);
  1237.             foreach ($ventes as $factureId) {
  1238.                 $equilibrage2 0;
  1239.                 $facture      $repo_factures->find($factureId);
  1240.                 if ($facture->getAvecTaxe() == 0) {
  1241.                     $montant floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
  1242.                     $taxe    $repo_tva->find(6);//TVA à 0
  1243.                 } else {
  1244.                     $montant floatval($facture->getTotalTtc());
  1245.                     $taxe    $repo_tva->find(1);//TVA à 20%
  1246.                 }
  1247.                 $equilibrage1 $montant;
  1248.                 $tvas            = [];
  1249.                 $famillesArticle = [];
  1250.                 $comptaObjet     $facture->getClient()->getCompta();
  1251.                 if (is_object($comptaObjet)) {
  1252.                     $compta $comptaObjet->getId();
  1253.                 } else {
  1254.                     $compta 11;
  1255.                 }//FRANCE
  1256.                 $codeClientCommande $facture->getCodeClientCommande();
  1257.                 if (is_object($codeClientCommande)) {
  1258.                     $compta $codeClientCommande->getCompta()->getId();
  1259.                 }
  1260.                 //test si c'est une facture multi bl
  1261.                 if ($facture->getMultiBl() == 1) {
  1262.                     $bls $repo_factures->findByFacture($facture);
  1263.                     foreach ($bls as $bl) {
  1264.                         foreach ($bl->getArticleCommande() as $ac) {
  1265.                             if ($bl->getAvecTaxe() == 1) {
  1266.                                 //TVA
  1267.                                 $tauxTva    $ac->getTva();
  1268.                                 $montantTva $ac->getTvaVente();
  1269.                                 $codeComptaTVA '';
  1270.                                 $tva           $repo_tva->findOneByTaux($tauxTva);
  1271.                                 if (is_object($tva)) {
  1272.                                     $codeComptaTVA $tva->getComptaVente();
  1273.                                 }
  1274.                                 $key strval($codeComptaTVA);
  1275.                                 if (array_key_exists($key$tvas)) {
  1276.                                     $tvas[$key] += floatval($montantTva);
  1277.                                 } else {
  1278.                                     $tvas[$key] = floatval($montantTva);
  1279.                                 }
  1280.                             }
  1281.                             //Famille d'articles
  1282.                             $codeComptaFamille '707';
  1283.                             $familleCompta     $ac->getArticle()->getFamilleCompta();
  1284.                             if (is_object($familleCompta)) {
  1285.                                 $famille $repo_article_famille_compta_compta->findOneBy([
  1286.                                                                                               'familleCompta' => $familleCompta->getId(),
  1287.                                                                                               'compta'        => $compta,
  1288.                                                                                               'taxe'          => $taxe,
  1289.                                                                                           ]);
  1290.                                 if (is_object($famille)) {
  1291.                                     $codeComptaFamille $famille->getVente();
  1292.                                 }
  1293.                             }
  1294.                             $montantHt $ac->getTotalHt();
  1295.                             if (array_key_exists($codeComptaFamille$famillesArticle)) {
  1296.                                 $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  1297.                             } else {
  1298.                                 $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  1299.                             }
  1300.                         }
  1301.                     }
  1302.                 } else {
  1303.                     foreach ($facture->getArticleCommande() as $ac) {
  1304.                         if ($facture->getAvecTaxe() == 1) {
  1305.                             //TVA
  1306.                             $tauxTva $ac->getTva();
  1307.                             $montantTva $ac->getTvaVente();
  1308.                             $codeComptaTVA '';
  1309.                             $tva           $repo_tva->findOneByTaux($tauxTva);
  1310.                             if (is_object($tva)) {
  1311.                                 $codeComptaTVA $tva->getComptaVente();
  1312.                             }
  1313.                             $key strval($codeComptaTVA);
  1314.                             if (array_key_exists($key$tvas)) {
  1315.                                 $tvas[$key] += floatval($montantTva);
  1316.                             } else {
  1317.                                 $tvas[$key] = floatval($montantTva);
  1318.                             }
  1319.                         }
  1320.                         //Famille d'articles
  1321.                         $codeComptaFamille '707';
  1322.                         $familleCompta     $ac->getArticle()->getFamilleCompta();
  1323.                         if (is_object($familleCompta)) {
  1324.                             $famille $repo_article_famille_compta_compta->findOneBy([
  1325.                                                                                           'familleCompta' => $familleCompta->getId(),
  1326.                                                                                           'compta'        => $compta,
  1327.                                                                                           'taxe'          => $taxe,
  1328.                                                                                       ]);
  1329.                             if (is_object($famille)) {
  1330.                                 $codeComptaFamille $famille->getVente();
  1331.                             }
  1332.                         }
  1333.                         $montantHt $ac->getTotalHt();
  1334.                         if (array_key_exists($codeComptaFamille$famillesArticle)) {
  1335.                             $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  1336.                         } else {
  1337.                             $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  1338.                         }
  1339.                     }
  1340.                 }
  1341.                 //Frais de port
  1342.                 if (is_object($facture->getClient()) && is_object($facture->getClient()->getCompta()) && $facture->getClient()->getCompta()->getId() != 1)// non Taxable
  1343.                 {
  1344.                     $tva $repo_tva->find(6);
  1345.                 }//Aucune taxe
  1346.                 else {
  1347.                     $tva $repo_tva->find(1);
  1348.                 }//tva à 20%
  1349.                 if (is_object($tva)) {
  1350.                     $tauxTva       $tva->getTaux();
  1351.                     $codeComptaTVA strval($tva->getComptaVente());
  1352.                 } else {
  1353.                     $codeComptaTVA '';
  1354.                     $tauxTva       0;
  1355.                 }
  1356.                 $codeComptaFamille '0';
  1357.                 //retrouver la famille compta compta en fonction du pays, de la tva et du transporteur
  1358.                 $transporteur $facture->getTransporteur();
  1359.                 if (is_object($transporteur)) {
  1360.                     $familleCompta $transporteur->getFamilleCompta();
  1361.                 }
  1362.                 $tauxTva $facture->getTauxTvaFraisPort();
  1363.                 //Pas de tva sur frais de port pour les commandes amazon
  1364.                 //if($facture->getCompteMarketPlace()->getId() == 11) $tauxTva = 0;
  1365.                 if ($facture->getTotalTvaFraisPort() == 0) {
  1366.                     $tauxTva 0;
  1367.                 }
  1368.                 $taxeTmp '';
  1369.                 if ($tauxTva != '') {
  1370.                     $taxeTmp $repo_tva->findOneBy(['taux' => $tauxTva]);
  1371.                 }
  1372.                 if ( ! is_object($taxeTmp)) {
  1373.                     $taxeTmp $repo_tva->find(1);
  1374.                 }//taxable à 20%
  1375.                 $codeClientCommande $facture->getCodeClientCommande();
  1376.                 if (is_object($codeClientCommande)) {
  1377.                     $compta $codeClientCommande->getCompta()->getId();
  1378.                 }
  1379.                 if (is_object($familleCompta)) {
  1380.                     $famille $repo_article_famille_compta_compta->findOneBy([
  1381.                                                                                   'familleCompta' => $familleCompta->getId(),
  1382.                                                                                   'compta'        => $compta,
  1383.                                                                                   'taxe'          => $taxeTmp,
  1384.                                                                               ]);
  1385.                     if (is_object($famille)) {
  1386.                         $codeComptaFamille $famille->getVente();
  1387.                     }
  1388.                 }
  1389.                 $fraisPortHT floatval($facture->getTotalFraisPort());
  1390.                 $montantTva  $fraisPortHT * ($tauxTva 100);
  1391.                 //$montantTva = $facture->getTotalTvaFraisPort();
  1392.                 //$fraisPortHT = floatval($facture->getTotalFraisPort());
  1393.                 //$codeComptaFamille = 'familleCompta '.$familleCompta->getId();
  1394.                 if ($fraisPortHT != && $montantTva != 0) {
  1395.                     if (array_key_exists($codeComptaFamille$famillesArticle)) {
  1396.                         $famillesArticle[$codeComptaFamille] += $fraisPortHT;
  1397.                     } else {
  1398.                         $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  1399.                     }
  1400.                 }
  1401.                 //$montantTva = floatval($facture->getTotalFraisPort())-$fraisPortHT;
  1402.                 //$montantTva = floatval($facture->getTotalFraisPortTtc())-$fraisPortHT;
  1403.                 if ($montantTva != && $facture->getAvecTaxe() == 1) {
  1404.                     if (array_key_exists($codeComptaTVA$tvas)) {
  1405.                         $tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
  1406.                     } else {
  1407.                         $tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
  1408.                     }
  1409.                 }
  1410.                 //Frais de port supplementaire
  1411.                 $fraisPortHT floatval($facture->getFraisPortSupplementaire());
  1412.                 $montantTva  $fraisPortHT * ($tauxTva 100);
  1413.                 if ($fraisPortHT != 0) {
  1414.                     if (array_key_exists($codeComptaFamille$famillesArticle)) {
  1415.                         $famillesArticle[$codeComptaFamille] += $fraisPortHT;
  1416.                     } else {
  1417.                         $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  1418.                     }
  1419.                 }
  1420.                 //frais amazon
  1421.                 //62781
  1422.                 $fraisAmazon floatval($facture->getFraisVenteAmazon()) + floatval($facture->getFraisExpedieAmazon()) + floatval($facture->getAutresFraisTransactionAmazon()) + floatval(
  1423.                         $facture->getAutreAmazon()
  1424.                     );
  1425.                 if ($fraisAmazon != 0) {
  1426.                     if ($fraisAmazon 0) {
  1427.                         $equilibrage1             += abs($fraisAmazon);
  1428.                         $famillesArticle['62781'] = abs($fraisAmazon);
  1429.                     } else {
  1430.                         $equilibrage1             -= abs($fraisAmazon);
  1431.                         $famillesArticle['62781'] = -abs($fraisAmazon);
  1432.                     }
  1433.                 }
  1434.                 //$famillesArticle['test1'] = $tauxTva;
  1435.                 //$montantTva = floatval($facture->getFraisPortSupplementaire())-$fraisPortHT;
  1436.                 if ($montantTva != && $facture->getAvecTaxe() == 1) {
  1437.                     if (array_key_exists($codeComptaTVA$tvas)) {
  1438.                         $tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
  1439.                     } else {
  1440.                         $tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
  1441.                     }
  1442.                 }
  1443.                 foreach ($tvas as $key => $montant) {
  1444.                     $equilibrage2 += $montant;
  1445.                 }
  1446.                 foreach ($famillesArticle as $key => $montant) {
  1447.                     $equilibrage2 += $montant;
  1448.                 }
  1449.                 $diffEquilibrage round($equilibrage12) - round($equilibrage22);
  1450.                 if (abs($diffEquilibrage) < 0.1) {
  1451.                     if (array_key_exists($codeComptaTVA$tvas)) {
  1452.                         $tvas[$codeComptaTVA] += $diffEquilibrage;
  1453.                     } else {
  1454.                         $tvas[$codeComptaTVA] = $diffEquilibrage;
  1455.                     }
  1456.                     $equilibrage2 += $diffEquilibrage;
  1457.                 }
  1458.                 if ($action == 'exporter' || $action == "exporterTxt") {
  1459.                     if ($facture->getAvecTaxe() == 0) {
  1460.                         $montant floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
  1461.                     } else {
  1462.                         $montant floatval($facture->getTotalTtc());
  1463.                     }
  1464.                     $dateTmp     $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1465.                     $codeJournal 'VE';
  1466.                     $numPiece    $facture->getReference();
  1467.                     if ($montant 0) {//Facture
  1468.                         //$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  1469.                         $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1470.                     } else {//Avoir
  1471.                         //$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  1472.                         $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1473.                     }
  1474.                     //Recuperer le compte comptable du client ou de sa categorie
  1475.                     $codeClientCommande $this->getCodeClientCommande(''''$facture);
  1476.                     if (is_object($codeClientCommande)) {
  1477.                         $compte  $codeClientCommande->getCompteComptable();
  1478.                         $libelle $codeClientCommande->getLibelle();
  1479.                     } else {
  1480.                         $compte $this->getCodeComptableClient(''''$facture);
  1481.                     }
  1482.                     $ecrituresNonexportees[] =
  1483.                         $dateTmp.'-'//$result['date']
  1484.                         .$codeJournal.'-'//$result['codeJournal']
  1485.                         .$compte.'-'//$result['compte']
  1486.                         .$numPiece.'-'//$result['numPiece']
  1487.                         .$libelle//$result['libelle']
  1488.                     ;
  1489.                     //frais amazon
  1490.                     $compte                  '62781';
  1491.                     $ecrituresNonexportees[] =
  1492.                         $dateTmp.'-'//$result['date']
  1493.                         .$codeJournal.'-'//$result['codeJournal']
  1494.                         .$compte.'-'//$result['compte']
  1495.                         .$numPiece.'-'//$result['numPiece']
  1496.                         .$libelle//$result['libelle']
  1497.                     ;
  1498.                     $codeClientCommande $facture->getCodeClientCommande();
  1499.                     foreach ($tvas as $key => $montant) {
  1500.                         if ($montant != 0) {
  1501.                             $dateTmp     $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1502.                             $codeJournal 'VE';
  1503.                             $compte      $key;
  1504.                             $numPiece    $facture->getReference();
  1505.                             $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1506.                             if (is_object($codeClientCommande)) {
  1507.                                 $libelle $codeClientCommande->getLibelle();
  1508.                             }
  1509.                             $ecrituresNonexportees[] =
  1510.                                 $dateTmp.'-'//$result['date']
  1511.                                 .$codeJournal.'-'//$result['codeJournal']
  1512.                                 .$compte.'-'//$result['compte']
  1513.                                 .$numPiece.'-'//$result['numPiece']
  1514.                                 .$libelle//$result['libelle']
  1515.                             ;
  1516.                         }
  1517.                     }
  1518.                     foreach ($famillesArticle as $key => $montant) {
  1519.                         $dateTmp     $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1520.                         $codeJournal 'VE';
  1521.                         //Recuperer le compte comptable du client
  1522.                         $compte   $key;
  1523.                         $numPiece $facture->getReference();
  1524.                         $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1525.                         if (is_object($codeClientCommande)) {
  1526.                             $libelle $codeClientCommande->getLibelle();
  1527.                         }
  1528.                         $ecrituresNonexportees[] =
  1529.                             $dateTmp.'-'//$result['date']
  1530.                             .$codeJournal.'-'//$result['codeJournal']
  1531.                             .$compte.'-'//$result['compte']
  1532.                             .$numPiece.'-'//$result['numPiece']
  1533.                             .$libelle//$result['libelle']
  1534.                         ;
  1535.                     }
  1536.                 } else {
  1537.                     if ($facture->getAvecTaxe() == 0) {
  1538.                         $montant floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
  1539.                     } else {
  1540.                         $montant floatval($facture->getTotalTtc());
  1541.                     }
  1542.                     //$equilibrage1 = $montant;
  1543.                     //$equilibrage2 = 0;
  1544.                     $result                = [];
  1545.                     $result['date']        = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1546.                     $result['codeJournal'] = 'VE';
  1547.                     $result['numPiece']    = $facture->getReference();
  1548.                     if ($montant 0) {//Facture
  1549.                         //$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  1550.                         $result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1551.                         $result['debit']   = abs($montant);
  1552.                         $result['credit']  = '';
  1553.                     } else {//Avoir
  1554.                         //$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  1555.                         $result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1556.                         $result['debit']   = '';
  1557.                         $result['credit']  = abs($montant);
  1558.                     }
  1559.                     //Recuperer le compte comptable du client ou de sa categorie
  1560.                     $codeClientCommande $this->getCodeClientCommande(''''$facture);
  1561.                     if (is_object($codeClientCommande)) {
  1562.                         $result['compte']  = $codeClientCommande->getCompteComptable();
  1563.                         $result['libelle'] = $codeClientCommande->getLibelle();
  1564.                     } else {
  1565.                         $result['compte'] = $this->getCodeComptableClient(''''$facture);
  1566.                     }
  1567.                     $result['monnaie']       = 'E';
  1568.                     $result['analytique']    = '';
  1569.                     $result['moyenPaiement'] = '';
  1570.                     fputcsv($handle$result$delimiter);
  1571.                     if ($montant 0) {//Facture
  1572.                         $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
  1573.                     } else {//Avoir
  1574.                         $result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
  1575.                     }
  1576.                     $result['id']                        = $facture->getReference().'-'.$facture->getId();
  1577.                     $result['id2']                       = $facture->getId();
  1578.                     $ecritures[$result['codeJournal']][] = $result;
  1579.                     //frais Amazon
  1580.                     $fraisAmazon floatval($facture->getFraisVenteAmazon()) + floatval($facture->getFraisExpedieAmazon()) + floatval($facture->getAutresFraisTransactionAmazon()) + floatval(
  1581.                             $facture->getAutreAmazon()
  1582.                         );
  1583.                     if ($fraisAmazon != 0) {
  1584.                         if ($fraisAmazon 0) {
  1585.                             $result['debit']  = abs($fraisAmazon);
  1586.                             $result['credit'] = '';
  1587.                         } else {
  1588.                             $result['debit']  = '';
  1589.                             $result['credit'] = abs($fraisAmazon);
  1590.                         }
  1591.                         $ecritures[$result['codeJournal']][] = $result;
  1592.                     }
  1593.                     foreach ($tvas as $key => $montant) {
  1594.                         if ($montant != 0) {
  1595.                             //$equilibrage2 += $montant;
  1596.                             $result                = [];
  1597.                             $result['date']        = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1598.                             $result['codeJournal'] = 'VE';
  1599.                             //Recuperer le compte comptable du client
  1600.                             //$result['compte'] = $codeComptaTVA;
  1601.                             $result['compte']   = $key;
  1602.                             $result['numPiece'] = $facture->getReference();
  1603.                             if (floatval($montant) > 0) {//Facture
  1604.                                 //$result['libelle'] = 'FAC - TVA ';
  1605.                                 $result['debit']  = '';
  1606.                                 $result['credit'] = abs($montant);
  1607.                             } else {//Avoir
  1608.                                 //$result['libelle'] = 'AVOIR - TVA ';
  1609.                                 $result['debit']  = abs($montant);
  1610.                                 $result['credit'] = '';
  1611.                             }
  1612.                             $result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1613.                             if (is_object($codeClientCommande)) {
  1614.                                 $result['libelle'] = $codeClientCommande->getLibelle();
  1615.                             }
  1616.                             $result['monnaie']       = 'E';
  1617.                             $result['analytique']    = '';
  1618.                             $result['moyenPaiement'] = '';
  1619.                             fputcsv($handle$result$delimiter);
  1620.                             if (floatval($montant) > 0) {//Facture
  1621.                                 $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
  1622.                             } else {//Avoir
  1623.                                 $result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
  1624.                             }
  1625.                             $result['id']                        = $facture->getReference().'-'.$facture->getId();
  1626.                             $result['id2']                       = $facture->getId();
  1627.                             $ecritures[$result['codeJournal']][] = $result;
  1628.                         }
  1629.                     }
  1630.                     foreach ($famillesArticle as $key => $montant) {
  1631.                         //$equilibrage2 += $montant;
  1632.                         $result                = [];
  1633.                         $result['date']        = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1634.                         $result['codeJournal'] = 'VE';
  1635.                         //Recuperer le compte comptable du client
  1636.                         $result['compte']   = $key;
  1637.                         $result['numPiece'] = $facture->getReference();
  1638.                         if (floatval($montant) > 0) {//Facture
  1639.                             //$result['libelle'] = 'FAC - Famille article ';
  1640.                             $result['debit']  = '';
  1641.                             $result['credit'] = abs($montant);
  1642.                         } else {//Avoir
  1643.                             //$result['libelle'] = 'AVOIR - Famille article ';
  1644.                             $result['debit']  = abs($montant);
  1645.                             $result['credit'] = '';
  1646.                         }
  1647.                         $result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  1648.                         if (is_object($codeClientCommande)) {
  1649.                             $result['libelle'] = $codeClientCommande->getLibelle();
  1650.                         }
  1651.                         $result['monnaie']       = 'E';
  1652.                         $result['analytique']    = '';
  1653.                         $result['moyenPaiement'] = '';
  1654.                         fputcsv($handle$result$delimiter);
  1655.                         if (floatval($montant) > 0) {//Facture
  1656.                             $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
  1657.                         } else {//Avoir
  1658.                             $result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
  1659.                         }
  1660.                         $result['id']                        = $facture->getReference().'-'.$facture->getId();
  1661.                         $result['id2']                       = $facture->getId();
  1662.                         $ecritures[$result['codeJournal']][] = $result;
  1663.                     }
  1664.                     if (strval(round($equilibrage12)) != strval(round($equilibrage22))) {
  1665.                         $elementsAequilibrer[] = $facture->getReference().'-'.$facture->getId();
  1666.                         $equilibrages[]        = $facture->getReference().'-id : '.$facture->getId().'-$equilibrage1 : '.$equilibrage1.'-$equilibrage2 : '.$equilibrage2;
  1667.                     }
  1668.                 }
  1669.             }
  1670.         }
  1671.         //Caisse
  1672.         if ($journal == 'ES' || $journal == '') {
  1673.             $journalCaisse $repo_compte_bancaire->findOneByLibelle('ES');
  1674.             $mvtsCaisse    $repo_mvt_caisse->getMouvementsCaisseAexporterEnCompta($date);
  1675.             foreach ($mvtsCaisse as $donnee) {
  1676.                 $exporter  false;
  1677.                 $mvtCaisse $repo_mvt_caisse->find($donnee['id']);
  1678.                 if (is_object($mvtCaisse)) {
  1679.                     if ($action == 'exporter' || $action == "exporterTxt") {
  1680.                         if (is_object($mvtCaisse->getReglement())) {
  1681.                             $reglement   $mvtCaisse->getReglement();
  1682.                             $codeJournal $journalCaisse->getLibelle();
  1683.                             $compte      '';
  1684.                             $numPiece    $reglement->getNumPiece();
  1685.                             $libelle     $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
  1686.                             //Recuperer le compte comptable du client ou de sa categorie
  1687.                             $codeClientCommande $this->getCodeClientCommande(''$reglement'');
  1688.                             if (is_object($codeClientCommande)) {
  1689.                                 $compte  $codeClientCommande->getCompteComptable();
  1690.                                 $libelle $codeClientCommande->getLibelle();
  1691.                             } else {
  1692.                                 $compte $this->getCodeComptableClient(''$reglement'');
  1693.                             }
  1694.                         } elseif (is_object($mvtCaisse->getCompteBancaire())) {
  1695.                             $compteBancaire $mvtCaisse->getCompteBancaire();
  1696.                             $codeJournal    'ES';
  1697.                             if ($compteBancaire->getComptaCompta() != '') {
  1698.                                 $compte $compteBancaire->getComptaFond();
  1699.                             } else {
  1700.                                 $compte "58000000";
  1701.                             }
  1702.                             $numPiece 'MVTCAI'.$mvtCaisse->getId();
  1703.                             $libelle  'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
  1704.                         } else {
  1705.                             $codeJournal $journalCaisse->getLibelle();
  1706.                             $compte      $mvtCaisse->getCompta();
  1707.                             $numPiece    'MVTCAI'.$mvtCaisse->getId();
  1708.                             $libelle     $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
  1709.                         }
  1710.                         $ecrituresNonexportees[] =
  1711.                             $mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
  1712.                             .$codeJournal.'-'//$result['codeJournal']
  1713.                             .$compte.'-'//$result['compte']
  1714.                             .$numPiece.'-'//$result['numPiece']
  1715.                             .$libelle//$result['libelle']
  1716.                         ;
  1717.                         $ecrituresNonexportees[] =
  1718.                             $mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
  1719.                             .$codeJournal.'-'//$result['codeJournal']
  1720.                             .$journalCaisse->getComptaCompta().'-'//$result['compte']
  1721.                             .$numPiece.'-'//$result['numPiece']
  1722.                             .$libelle//$result['libelle']
  1723.                         ;
  1724.                         //OD
  1725.                         $reglement $mvtCaisse->getReglement();
  1726.                         if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
  1727.                             $dateTmp     $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1728.                             $codeJournal 'OD';
  1729.                             $numPiece    $reglement->getNumPiece();
  1730.                             $libelle     'OD REG '.$reglement->getModeReglement()->getLibelle();
  1731.                             if (is_object($reglement)) {
  1732.                                 $libelle $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  1733.                             }
  1734.                             //Recuperer le compte comptable du client ou de sa categorie
  1735.                             $codeClientCommande $this->getCodeClientCommande(''$reglement'');
  1736.                             if (is_object($codeClientCommande)) {
  1737.                                 $compte  $codeClientCommande->getCompteComptable();
  1738.                                 $libelle $codeClientCommande->getLibelle();
  1739.                             } else {
  1740.                                 $compte $this->getCodeComptableClient(''$reglement'');
  1741.                             }
  1742.                             $ecrituresNonexportees[] =
  1743.                                 $dateTmp.'-'//$result['date']
  1744.                                 .$codeJournal.'-'//$result['codeJournal']
  1745.                                 .$compte.'-'//$result['compte']
  1746.                                 .$numPiece.'-'//$result['numPiece']
  1747.                                 .$libelle//$result['libelle']
  1748.                             ;
  1749.                             $dateTmp     $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1750.                             $codeJournal 'OD';
  1751.                             //Recuperer le compte comptable du client
  1752.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  1753.                                 $compte '658000';//Compte de charges
  1754.                             } else {
  1755.                                 $compte '758000';//Compte de produits divers
  1756.                             }
  1757.                             $numPiece $reglement->getNumPiece();
  1758.                             $libelle  'OD REG '.$reglement->getModeReglement()->getLibelle();
  1759.                             $ecrituresNonexportees[] =
  1760.                                 $dateTmp.'-'//$result['date']
  1761.                                 .$codeJournal.'-'//$result['codeJournal']
  1762.                                 .$compte.'-'//$result['compte']
  1763.                                 .$numPiece.'-'//$result['numPiece']
  1764.                                 .$libelle//$result['libelle']
  1765.                             ;
  1766.                         }
  1767.                     } else {
  1768.                         $result            = [];
  1769.                         $result2           = [];
  1770.                         $result['date']    = $mvtCaisse->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1771.                         $result2['date']   = $result['date'];
  1772.                         $result2['compte'] = $journalCaisse->getComptaCompta();
  1773.                         if (is_object($mvtCaisse->getReglement())) {
  1774.                             if ($journal == $journalCaisse->getLibelle()) {
  1775.                                 $exporter true;
  1776.                             }
  1777.                             $reglement             $mvtCaisse->getReglement();
  1778.                             $result['codeJournal'] = $journalCaisse->getLibelle();
  1779.                             $result['compte']      = '';
  1780.                             //if(is_object($reglement->getClient())) $result['compte'] = $reglement->getClient()->getCodeComptable();
  1781.                             $result['numPiece'] = $reglement->getNumPiece();
  1782.                             $result['libelle']  = $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
  1783.                             //Recuperer le compte comptable du client ou de sa categorie
  1784.                             $codeClientCommande $this->getCodeClientCommande(''$reglement'');
  1785.                             if (is_object($codeClientCommande)) {
  1786.                                 $result['compte']  = $codeClientCommande->getCompteComptable();
  1787.                                 $result['libelle'] = $codeClientCommande->getLibelle();
  1788.                             } else {
  1789.                                 $result['compte'] = $this->getCodeComptableClient(''$reglement'');
  1790.                             }
  1791.                             if ($reglement->getMontant() > 0) {
  1792.                                 $result['debit']  = '';
  1793.                                 $result['credit'] = $reglement->getMontant();
  1794.                             } else {
  1795.                                 $result['debit']  = abs($reglement->getMontant());
  1796.                                 $result['credit'] = '';
  1797.                             }
  1798.                         } elseif (is_object($mvtCaisse->getCompteBancaire())) {
  1799.                             $compteBancaire $mvtCaisse->getCompteBancaire();
  1800.                             if ($journal == $compteBancaire->getLibelle()) {
  1801.                                 $exporter true;
  1802.                             }
  1803.                             if ($journal == $journalCaisse->getLibelle()) {
  1804.                                 $exporter true;
  1805.                             }
  1806.                             //$result['codeJournal'] = $compteBancaire->getLibelle();
  1807.                             $result['codeJournal'] = 'ES';
  1808.                             if ($compteBancaire->getComptaCompta() != '') {
  1809.                                 $result['compte'] = $compteBancaire->getComptaFond();
  1810.                             } else {
  1811.                                 $result['compte'] = "58000000";
  1812.                             }
  1813.                             $result['numPiece'] = 'MVTCAI'.$mvtCaisse->getId();
  1814.                             $result['libelle']  = 'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
  1815.                             if ($mvtCaisse->getMontant() > 0) {
  1816.                                 $result['debit']  = $mvtCaisse->getMontant();
  1817.                                 $result['credit'] = '';
  1818.                             } else {
  1819.                                 $result['debit']  = '';
  1820.                                 $result['credit'] = abs($mvtCaisse->getMontant());
  1821.                             }
  1822.                         } else {
  1823.                             if ($journal == $journalCaisse->getLibelle()) {
  1824.                                 $exporter true;
  1825.                             }
  1826.                             $result['codeJournal'] = $journalCaisse->getLibelle();
  1827.                             $result['compte']      = $mvtCaisse->getCompta();
  1828.                             $result['numPiece']    = 'MVTCAI'.$mvtCaisse->getId();
  1829.                             $result['libelle']     = $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
  1830.                             if ($mvtCaisse->getEntreeSortie() == true) {
  1831.                                 $result['debit']  = $mvtCaisse->getMontant();
  1832.                                 $result['credit'] = '';
  1833.                             } else {
  1834.                                 $result['debit']  = '';
  1835.                                 $result['credit'] = $mvtCaisse->getMontant();
  1836.                             }
  1837.                         }
  1838.                         $result['monnaie']       = 'E';
  1839.                         $result['analytique']    = '';
  1840.                         $result['moyenPaiement'] = '';
  1841.                         if ($journal == '' || $exporter == true) {
  1842.                             fputcsv($handle$result$delimiter);
  1843.                             $result['id2']                       = $mvtCaisse->getId();
  1844.                             $ecritures[$result['codeJournal']][] = $result;
  1845.                         }
  1846.                         $result2['codeJournal']   = $result['codeJournal'];
  1847.                         $result2['numPiece']      = $result['numPiece'];
  1848.                         $result2['libelle']       = $result['libelle'];
  1849.                         $result2['debit']         = $result['credit'];
  1850.                         $result2['credit']        = $result['debit'];
  1851.                         $result2['monnaie']       = $result['monnaie'];
  1852.                         $result2['analytique']    = '';
  1853.                         $result2['moyenPaiement'] = '';
  1854.                         if ($journal == '' || $exporter == true) {
  1855.                             fputcsv($handle$result2$delimiter);
  1856.                             $ecritures[$result2['codeJournal']][] = $result2;
  1857.                         }
  1858.                         //OD
  1859.                         $reglement $mvtCaisse->getReglement();
  1860.                         if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
  1861.                             $result                = [];
  1862.                             $result['date']        = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1863.                             $result['codeJournal'] = 'OD';
  1864.                             $result['numPiece']    = $reglement->getNumPiece();
  1865.                             $result['libelle']     = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  1866.                             if (is_object($reglement)) {
  1867.                                 $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  1868.                             }
  1869.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  1870.                                 $result['debit']  = '';
  1871.                                 $result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
  1872.                             } else {
  1873.                                 $result['debit']  = abs($reglement->getOperationDiverse());//Peut etre en absolu
  1874.                                 $result['credit'] = '';
  1875.                             }
  1876.                             //Recuperer le compte comptable du client ou de sa categorie
  1877.                             $codeClientCommande $this->getCodeClientCommande(''$reglement'');
  1878.                             if (is_object($codeClientCommande)) {
  1879.                                 $compte  $codeClientCommande->getCompteComptable();
  1880.                                 $libelle $codeClientCommande->getLibelle();
  1881.                             } else {
  1882.                                 $compte $this->getCodeComptableClient(''$reglement'');
  1883.                             }
  1884.                             $result['monnaie']       = 'E';
  1885.                             $result['analytique']    = '';
  1886.                             $result['moyenPaiement'] = '';
  1887.                             fputcsv($handle$result$delimiter);
  1888.                             $result['id2']                       = $reglement->getId();
  1889.                             $result['lien']                      = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  1890.                             $ecritures[$result['codeJournal']][] = $result;
  1891.                             $result                = [];
  1892.                             $result['date']        = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  1893.                             $result['codeJournal'] = 'OD';
  1894.                             //Recuperer le compte comptable du client
  1895.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  1896.                                 $result['compte'] = '658000';//Compte de charges
  1897.                                 $result['debit']  = abs($reglement->getOperationDiverse());
  1898.                                 $result['credit'] = '';
  1899.                             } else {
  1900.                                 $result['compte'] = '758000';//Compte de produits divers
  1901.                                 $result['debit']  = '';
  1902.                                 $result['credit'] = abs($reglement->getOperationDiverse());
  1903.                             }
  1904.                             $result['numPiece'] = $reglement->getNumPiece();
  1905.                             $result['libelle']  = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  1906.                             $result['monnaie']       = 'E';
  1907.                             $result['analytique']    = '';
  1908.                             $result['moyenPaiement'] = '';
  1909.                             fputcsv($handle$result$delimiter);
  1910.                             $result['lien']                      = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  1911.                             $result['id2']                       = $reglement->getId();
  1912.                             $ecritures[$result['codeJournal']][] = $result;
  1913.                         }
  1914.                     }
  1915.                 }
  1916.             }
  1917.         }
  1918.         if (count($elementsAequilibrer) > 0) {
  1919.             foreach ($elementsAequilibrer as $elementAequilibrer) {
  1920.                 foreach ($ecritures as $journalKey => $journaux) {
  1921.                     foreach ($journaux as $key => $ecriture) {
  1922.                         if (isset($ecriture['id']) && $ecriture['id'] == $elementAequilibrer) {
  1923.                             $ecritures[$journalKey][$key]['equilibrage'] = 0;
  1924.                         }
  1925.                     }
  1926.                 }
  1927.             }
  1928.         }
  1929.         if ($donnees['debits'] != '' && $action != 'visualiser') {
  1930.             $result = ['date''codeJournal''compte''numPiece''libelle''debit''credit''monnaie''analytique''moyenPaiement'];
  1931.             fputcsv($handle$result$delimiter);
  1932.             $ecritures = [];
  1933.             foreach ($donnees['dates'] as $key => $value) {
  1934.                 $result = [];
  1935.                 $dateTmp        date_create_from_format('d/m/Y'$donnees['dates'][$key]);
  1936.                 $result['date'] = $dateTmp->format("Y-m-d");;
  1937.                 $result['codeJournal'] = $donnees['journaux'][$key];
  1938.                 $result['compte']      = $donnees['comptes'][$key];
  1939.                 //$result['numPiece'] = $donnees['numsPiece'][$key] . '-' . $donnees['fournisseurNumerauxFacture'][$key];
  1940.                 $result['numPiece']      = $donnees['numsPiece'][$key];
  1941.                 $result['libelle']       = $donnees['libelles'][$key];
  1942.                 $result['debit']         = $donnees['debits'][$key];
  1943.                 $result['credit']        = $donnees['credits'][$key];
  1944.                 $result['monnaie']       = $donnees['monnaies'][$key];
  1945.                 $result['analytique']    = $donnees['analytiques'][$key];
  1946.                 $result['moyenPaiement'] = $donnees['moyensPaiement'][$key];
  1947.                 $keyVerification $result["date"].'-'//$result['date']
  1948.                                    .$result["codeJournal"].'-'//$result['codeJournal']
  1949.                                    .$result["compte"].'-'//$result['compte']
  1950.                                    .$result['numPiece'].'-'//$result['numPiece']
  1951.                                    .$result['libelle'];
  1952.                 if (in_array($keyVerification$ecrituresNonexportees)) {
  1953.                     fputcsv($handle$result$delimiter);
  1954.                     $result['id']                            = $donnees['ids'][$key];
  1955.                     $result['id2']                           = $donnees['ids2'][$key];
  1956.                     $result['equilibrage']                   = $donnees['equilibrages'][$key];
  1957.                     $result['fournisseurNumerauxFacture']    = $donnees['equilibrages'][$key];
  1958.                     $ecritures[$donnees['journaux'][$key]][] = $result;
  1959.                     if ($result['equilibrage'] == 0) {
  1960.                         $elementsAequilibrer[] = $result['id'];
  1961.                         //$errors = 'Certaines écritures ne sont pas équilibrées!';
  1962.                     }
  1963.                 }
  1964.             }
  1965.         }
  1966.         rewind($handle);
  1967.         $content stream_get_contents($handle);
  1968.         fclose($handle);
  1969.         if ($action == "exporter" || $action == "exporterTxt") {
  1970.             //print_r($ecritures);
  1971.             foreach ($ecritures as $journalKey => $journaux) {
  1972.                 foreach ($journaux as $key => $ecriture) {
  1973.                     if (isset($ecriture['codeJournal'])) {
  1974.                         switch ($ecriture['codeJournal']) {
  1975.                             case 'ES':
  1976.                                 $objet $repo_mvt_caisse->find($ecriture['id2']);
  1977.                                 if (is_object($objet)) {
  1978.                                     $objet->setDateTransfertCompta($dateJour);
  1979.                                 }
  1980.                                 break;
  1981.                             case 'VE':
  1982.                                 $objet $repo_factures->find($ecriture['id2']);
  1983.                                 if (is_object($objet)) {
  1984.                                     $objet->setDateTransfertCompta($dateJour);
  1985.                                     $objet->setBasculeComptabilite(true);
  1986.                                 }
  1987.                                 break;
  1988.                             case 'AC':
  1989.                                 $objet $repo_commandes_fournisseur->find($ecriture['id2']);
  1990.                                 if (is_object($objet)) {
  1991.                                     $objet->setDateTransfertCompta($dateJour);
  1992.                                 }
  1993.                                 break;
  1994.                             default:
  1995.                                 $objet $repo_bordereau->find($ecriture['id2']);
  1996.                                 if (is_object($objet)) {
  1997.                                     $objet->setDateTransfertCompta($dateJour);
  1998.                                 }
  1999.                                 break;
  2000.                         }
  2001.                         if (is_object($objet)) {
  2002.                             $em->persist($objet);
  2003.                         }
  2004.                     }
  2005.                 }
  2006.             }
  2007.             $em->flush();
  2008.         }
  2009.         if ($action == "exporter") {
  2010.             $filename 'export_compta_'.date_format($date'Ymd_hms').'.csv';
  2011.             //$em->flush();
  2012.             return new Response($content200, [
  2013.                 'Content-Type'        => 'application/force-download; charset=ISO-8859-1',
  2014.                 'Content-Disposition' => 'attachment; filename="'.$filename.'"',
  2015.             ]);
  2016.         } elseif ($action == "exporterTxt") {
  2017.             $filename 'export_compta_'.date_format($date'Ymd_hms').'.txt';
  2018.             //$em->flush();
  2019.             //$url = $this->generateUrl('dtc_export_vers_compta',array(), true);
  2020.             //$this->redirectToRoute('dtc_export_vers_compta');
  2021.             return new Response($content200, [
  2022.                 'Content-Type'        => 'application/force-download; charset=ISO-8859-1',
  2023.                 'Content-Disposition' => 'attachment; filename="'.$filename.'"',
  2024.                 //'Refresh' => "2;url=".$url
  2025.                 //'Location' => $url
  2026.             ]);
  2027.         } else {
  2028.             if (is_file($file)) {
  2029.                 unlink($file);
  2030.             }
  2031.             if (count($elementsAequilibrer) > 0) {
  2032.                 $errors 'Certaines écritures ne sont pas equilibrées.';
  2033.                 $this->addFlash(
  2034.                     'warning',
  2035.                     $errors
  2036.                 );
  2037.             }
  2038.             return $this->render('Export/Comptabilite/index.html.twig', [
  2039.                 'ecritures'           => $ecritures,
  2040.                 'journal'             => $journal,
  2041.                 'action'              => $action,
  2042.                 'date'                => $date,
  2043.                 'comptesBancaires'    => $comptesBancaires,
  2044.                 'elementsAequilibrer' => $elementsAequilibrer,
  2045.                 'equilibrages'        => $equilibrages,
  2046.                 'errors'              => $errors,
  2047.             ]);
  2048.         }
  2049.     }
  2050.     private function getCodeClientCommande($client null$reglement null$commande null)
  2051.     {
  2052.         $codeComptableClient '';
  2053.         if (is_object($reglement)) {
  2054.             $client   $reglement->getClient();
  2055.             $commande $reglement->getCommande();
  2056.         }
  2057.         if (is_object($commande)) {
  2058.             $codeClientCommande $commande->getCodeClientCommande();
  2059.             if (is_object($codeClientCommande)) {
  2060.                 return $codeClientCommande;
  2061.             }
  2062.         }
  2063.         return '';
  2064.     }
  2065.     private function getCodeComptableClient($client null$reglement null$commande null)
  2066.     {
  2067.         $codeComptableClient '';
  2068.         if (is_object($reglement)) {
  2069.             $client   $reglement->getClient();
  2070.             $commande $reglement->getCommande();
  2071.         }
  2072.         if (is_object($commande)) {
  2073.             $codeClientCommande $commande->getCodeClientCommande();
  2074.             if (is_object($codeClientCommande)) {
  2075.                 return $codeClientCommande->getCompteComptable();
  2076.             }
  2077.         }
  2078.         if (is_object($client)) {
  2079.             $codeComptableClient $client->getCodeComptable();
  2080.             if ($codeComptableClient == '') {
  2081.                 $clientCategories $client->getClientCategorie();
  2082.                 if (count($clientCategories)) {
  2083.                     foreach ($clientCategories as $clientCategorie) {
  2084.                         $codeComptableTmp $clientCategorie->getCategorie()->getCodeComptable();
  2085.                         if ($codeComptableTmp != '') {
  2086.                             $codeComptableClient $codeComptableTmp;
  2087.                         }
  2088.                     }
  2089.                 }
  2090.             }
  2091.         }
  2092.         return $codeComptableClient;
  2093.     }
  2094.     /**
  2095.      * @Route("/export-vers-compta/", name="dtc_export_vers_compta")
  2096.      */
  2097.     public function exportVersComptaAction(Request $requestEntityManagerInterface $em)
  2098.     {
  2099.         $errors    '';
  2100.         $date     = new \Datetime();
  2101.         $interval = new \DateInterval('P1D');
  2102.         $date->sub($interval);
  2103.         $dateJour = new \Datetime();
  2104.         $repo_bordereau  $em->getRepository(Bordereau::class);
  2105.         $repo_reglements $em->getRepository(Acompte::class);
  2106.         $repo_factures   $em->getRepository(Commande::class);
  2107.         $repo_tva        $em->getRepository(Taxe::class);
  2108.         $repo_article    $em->getRepository(Article::class);
  2109.         //$repo_article_compta = $em->getRepository('DTCArticlesBundle:ArticleCompta');
  2110.         $repo_article_famille_compta_compta $em->getRepository(FamilleComptaCompta::class);
  2111.         $repo_commandes_fournisseur         $em->getRepository(CommandeFournisseur::class);
  2112.         $repo_mvt_caisse                    $em->getRepository(MouvementCaisse::class);
  2113.         $repo_compte_bancaire               $em->getRepository(CompteBancaire::class);
  2114.         $societe $em->getRepository(Societe::class)->find(1);
  2115.         $dir 'Export/comptabilite/'.date("Y").'/'.date("m").'/'.date("d").'/';
  2116.         if ( ! is_dir($dir)) {
  2117.             mkdir($dir755true);
  2118.         }
  2119.         //$file = $dir.'export.csv';
  2120.         $file $dir.'export_compta_'.date_format($date'Ymd_hms').'.csv';
  2121.         if (is_file($file)) {
  2122.             unlink($file);
  2123.         }
  2124.         //$handle = fopen('php://memory', 'r+');
  2125.         $handle fopen($file'w+');
  2126.         $header                = [];
  2127.         $ecritures             = [];
  2128.         $ecrituresNonexportees = [];
  2129.         $comptesBancaires $em->getRepository(CompteBancaire::class)->findAll();
  2130.         $journal $request->request->get('journal');
  2131.         if ($request->request->get('date') != '') {
  2132.             $date date_create_from_format('d/m/Y'$request->request->get('date'));
  2133.         }
  2134.         $action $request->request->get('action');
  2135.         if ($action == "exporter") {
  2136.             $delimiter ';';
  2137.         } else {
  2138.             $delimiter '|';
  2139.         }
  2140.         $donnees = [
  2141.             'ids'                        => $request->request->get('ids'),
  2142.             'ids2'                       => $request->request->get('ids2'),
  2143.             'journaux'                   => $request->request->get('journaux'),
  2144.             'dates'                      => $request->request->get('dates'),
  2145.             'codesJournal'               => $request->request->get('codesJournal'),
  2146.             'comptes'                    => $request->request->get('comptes'),
  2147.             'numsPiece'                  => $request->request->get('numsPiece'),
  2148.             'libelles'                   => $request->request->get('libelles'),
  2149.             'debits'                     => $request->request->get('debits'),
  2150.             'credits'                    => $request->request->get('credits'),
  2151.             'monnaies'                   => $request->request->get('monnaies'),
  2152.             'analytiques'                => $request->request->get('analytiques'),
  2153.             'equilibrages'               => $request->request->get('equilibrages'),
  2154.             'fournisseurNumerauxFacture' => $request->request->get('fournisseurNumerauxFacture'),
  2155.         ];
  2156.         $elementsAequilibrer = [];
  2157.         $equilibrages        = [];
  2158.         /*
  2159.         if ($donnees['debits'] != '' && $action != 'visualiser' ){
  2160.             $ecritures = array();
  2161.             foreach($donnees['dates'] as $key => $value){
  2162.                 $result = array();
  2163.                 $dateTmp = date_create_from_format('d/m/Y', $donnees['dates'][$key]);
  2164.                     $result['date'] = $dateTmp->format("Y-m-d");;
  2165.                     $result['codeJournal'] = $donnees['journaux'][$key];
  2166.                     $result['compte'] = $donnees['comptes'][$key];
  2167.                     //$result['numPiece'] = $donnees['numsPiece'][$key] . '-' . $donnees['fournisseurNumerauxFacture'][$key];
  2168.                     $result['numPiece'] = $donnees['numsPiece'][$key];
  2169.                     $result['libelle'] = $donnees['libelles'][$key];
  2170.                     $result['debit'] = $donnees['debits'][$key];
  2171.                     $result['credit'] = $donnees['credits'][$key];
  2172.                     $result['monnaie'] = $donnees['monnaies'][$key];
  2173.                     $result['analytique'] = $donnees['analytiques'][$key];
  2174.                 fputcsv($handle, $result, $delimiter);
  2175.                 $result['id'] = $donnees['ids'][$key];
  2176.                 $result['id2'] = $donnees['ids2'][$key];
  2177.                 $result['equilibrage'] = $donnees['equilibrages'][$key];
  2178.                 $result['fournisseurNumerauxFacture'] = $donnees['equilibrages'][$key];
  2179.                 $ecritures[$donnees['journaux'][$key]][] = $result;
  2180.                 if($result['equilibrage'] == 0){
  2181.                     $elementsAequilibrer[] = $result['id'];
  2182.                     //$errors = 'Certaines écritures ne sont pas équilibrées!';
  2183.                 }
  2184.             }
  2185.         }
  2186.          *
  2187.          */
  2188.         //Journal de trésorerie
  2189.         //---->Reglements
  2190.         $banqueEncaissements $repo_bordereau->getBordereauxAexporterVersCompta($journal$date);
  2191.         foreach ($banqueEncaissements as $donnee) {
  2192.             if ($journal == '' || $journal == $donnee['libelle']) {
  2193.                 if ($action == 'exporter' || $action == "exporterTxt") {
  2194.                     /*
  2195.                             $bordereau = $repo_bordereau->find($donnee['id']);
  2196.                             if(is_object($bordereau)) {
  2197.                                 $bordereau->setDateTransfertCompta($dateJour);
  2198.                                 $em->persist($bordereau);
  2199.                             }
  2200.                              *
  2201.                              */
  2202.                     $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2203.                     $codeJournal $donnee['libelle'];
  2204.                     $compte      $donnee['comptaCompta'];
  2205.                     $numPiece    $donnee['reference'];
  2206.                     $libelle     '';
  2207.                     $ecrituresNonexportees[] =
  2208.                         $dateTmp.'-'//$result['date']
  2209.                         .$codeJournal.'-'//$result['codeJournal']
  2210.                         .$compte.'-'//$result['compte']
  2211.                         .$numPiece.'-'//$result['numPiece']
  2212.                         .$libelle//$result['libelle']
  2213.                     ;
  2214.                 } else {
  2215.                     $result                = [];
  2216.                     $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2217.                     $result['codeJournal'] = $donnee['libelle'];
  2218.                     $result['compte']      = $donnee['comptaCompta'];
  2219.                     $result['numPiece']    = $donnee['reference'];
  2220.                     $result['libelle']     = '';
  2221.                     if ($donnee['total'] > 0) {
  2222.                         $result['debit']  = $donnee['total'];
  2223.                         $result['credit'] = '';
  2224.                     } else {
  2225.                         $result['debit']  = '';
  2226.                         $result['credit'] = abs($donnee['total']);
  2227.                     }
  2228.                     $result['monnaie']    = 'E';
  2229.                     $result['analytique'] = '';
  2230.                     fputcsv($handle$result$delimiter);
  2231.                     $result['lien']                      = $this->generateUrl('dtc_bordereau_modifier', ['id' => $donnee['id']]);
  2232.                     $result['id2']                       = $donnee['id'];
  2233.                     $ecritures[$result['codeJournal']][] = $result;
  2234.                 }
  2235.                 if ($action == 'exporter' || $action == "exporterTxt") {
  2236.                     //Recuperer chaque reglement
  2237.                     $reglements $repo_reglements->findBy(['bordereau' => $donnee['id']]);
  2238.                     foreach ($reglements as $reglement) {
  2239.                         if ($journal == '' || $journal == $donnee['libelle']) {
  2240.                             $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2241.                             $codeJournal $donnee['libelle'];
  2242.                             //Recuperer le compte comptable du client
  2243.                             $compte   $reglement->getClient()->getCodeComptable();
  2244.                             $numPiece $reglement->getNumPiece();
  2245.                             $libelle  '';
  2246.                             if ( ! is_object($reglement->getModeReglement())) {
  2247.                                 //echo "<div>R".$reglement->getId()."</div>";
  2248.                                 //exit;
  2249.                             } else {
  2250.                                 $libelle 'REG '.$reglement->getModeReglement()->getLibelle();
  2251.                                 if (is_object($reglement->getClient())) {
  2252.                                     $libelle $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  2253.                                 }
  2254.                             }
  2255.                             $ecrituresNonexportees[] =
  2256.                                 $dateTmp.'-'//$result['date']
  2257.                                 .$codeJournal.'-'//$result['codeJournal']
  2258.                                 .$compte.'-'//$result['compte']
  2259.                                 .$numPiece.'-'//$result['numPiece']
  2260.                                 .$libelle//$result['libelle']
  2261.                             ;
  2262.                         }
  2263.                         //OD
  2264.                         if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
  2265.                             $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2266.                             $codeJournal 'OD';
  2267.                             //Recuperer le compte comptable du client
  2268.                             $compte   $reglement->getClient()->getCodeComptable();
  2269.                             $numPiece $reglement->getNumPiece();
  2270.                             $libelle  'OD REG '.$reglement->getModeReglement()->getLibelle();
  2271.                             if (is_object($reglement->getClient())) {
  2272.                                 $libelle $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  2273.                             }
  2274.                             $ecrituresNonexportees[] =
  2275.                                 $dateTmp.'-'//$result['date']
  2276.                                 .$codeJournal.'-'//$result['codeJournal']
  2277.                                 .$compte.'-'//$result['compte']
  2278.                                 .$numPiece.'-'//$result['numPiece']
  2279.                                 .$libelle//$result['libelle']
  2280.                             ;
  2281.                             $dateTmp     $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2282.                             $codeJournal 'OD';
  2283.                             //Recuperer le compte comptable du client
  2284.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  2285.                                 $compte '658000';//Compte de charges
  2286.                             } else {
  2287.                                 $compte '758000';//Compte de produits divers
  2288.                             }
  2289.                             $numPiece $reglement->getNumPiece();
  2290.                             $libelle  'OD REG '.$reglement->getModeReglement()->getLibelle();
  2291.                             $ecrituresNonexportees[] =
  2292.                                 $dateTmp.'-'//$result['date']
  2293.                                 .$codeJournal.'-'//$result['codeJournal']
  2294.                                 .$compte.'-'//$result['compte']
  2295.                                 .$numPiece.'-'//$result['numPiece']
  2296.                                 .$libelle//$result['libelle']
  2297.                             ;
  2298.                         }
  2299.                     }
  2300.                 } else {
  2301.                     //Recuperer chaque reglement
  2302.                     $reglements $repo_reglements->findBy(['bordereau' => $donnee['id']]);
  2303.                     foreach ($reglements as $reglement) {
  2304.                         if ($journal == '' || $journal == $donnee['libelle']) {
  2305.                             $result                = [];
  2306.                             $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2307.                             $result['codeJournal'] = $donnee['libelle'];
  2308.                             //Recuperer le compte comptable du client
  2309.                             $result['compte']   = $reglement->getClient()->getCodeComptable();
  2310.                             $result['numPiece'] = $reglement->getNumPiece();
  2311.                             $result['libelle']  = '';
  2312.                             if ( ! is_object($reglement->getModeReglement())) {
  2313.                                 //echo "<div>R".$reglement->getId()."</div>";
  2314.                                 //exit;
  2315.                             } else {
  2316.                                 $result['libelle'] = 'REG '.$reglement->getModeReglement()->getLibelle();
  2317.                                 if (is_object($reglement->getClient())) {
  2318.                                     $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  2319.                                 }
  2320.                             }
  2321.                             /*
  2322.                                 $result['debit'] = '';
  2323.                                 $result['credit'] = $reglement->getMontant();
  2324.                                 *
  2325.                                 */
  2326.                             if (floatval($reglement->getMontant()) > 0) {
  2327.                                 $result['debit']  = '';
  2328.                                 $result['credit'] = abs($reglement->getMontant());//Peut etre en absolu
  2329.                             } else {
  2330.                                 $result['debit']  = abs($reglement->getMontant());//Peut etre en absolu
  2331.                                 $result['credit'] = '';
  2332.                             }
  2333.                             $result['monnaie']    = 'E';
  2334.                             $result['analytique'] = '';
  2335.                             fputcsv($handle$result$delimiter);
  2336.                             if (is_object($reglement->getCommande())) {
  2337.                                 $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  2338.                             } else {
  2339.                                 $result['lien'] = '';
  2340.                             }
  2341.                             $ecritures[$result['codeJournal']][] = $result;
  2342.                         }
  2343.                         //OD
  2344.                         if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
  2345.                             $result                = [];
  2346.                             $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2347.                             $result['codeJournal'] = 'OD';
  2348.                             //Recuperer le compte comptable du client
  2349.                             $result['compte']   = $reglement->getClient()->getCodeComptable();
  2350.                             $result['numPiece'] = $reglement->getNumPiece();
  2351.                             $result['libelle']  = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  2352.                             if (is_object($reglement->getClient())) {
  2353.                                 $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  2354.                             }
  2355.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  2356.                                 $result['debit']  = '';
  2357.                                 $result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
  2358.                             } else {
  2359.                                 $result['debit']  = abs($reglement->getOperationDiverse());//Peut etre en absolu
  2360.                                 $result['credit'] = '';
  2361.                             }
  2362.                             $result['monnaie']    = 'E';
  2363.                             $result['analytique'] = '';
  2364.                             fputcsv($handle$result$delimiter);
  2365.                             if (is_object($reglement->getCommande())) {
  2366.                                 $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  2367.                             } else {
  2368.                                 $result['lien'] = '';
  2369.                             }
  2370.                             $ecritures[$result['codeJournal']][] = $result;
  2371.                             $result                = [];
  2372.                             $result['date']        = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
  2373.                             $result['codeJournal'] = 'OD';
  2374.                             //Recuperer le compte comptable du client
  2375.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  2376.                                 $result['compte'] = '658000';//Compte de charges
  2377.                                 $result['debit']  = abs($reglement->getOperationDiverse());
  2378.                                 $result['credit'] = '';
  2379.                             } else {
  2380.                                 $result['compte'] = '758000';//Compte de produits divers
  2381.                                 $result['debit']  = '';
  2382.                                 $result['credit'] = abs($reglement->getOperationDiverse());
  2383.                             }
  2384.                             $result['numPiece'] = $reglement->getNumPiece();
  2385.                             $result['libelle']  = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  2386.                             /*
  2387.                                 if(is_object($reglement->getClient()))
  2388.                                           $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  2389.                                  *
  2390.                                  */
  2391.                             $result['monnaie']    = 'E';
  2392.                             $result['analytique'] = '';
  2393.                             fputcsv($handle$result$delimiter);
  2394.                             if (is_object($reglement->getCommande())) {
  2395.                                 $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  2396.                             } else {
  2397.                                 $result['lien'] = '';
  2398.                             }
  2399.                             $ecritures[$result['codeJournal']][] = $result;
  2400.                         }
  2401.                     }
  2402.                     //exit;
  2403.                 }
  2404.             }
  2405.         }
  2406.         //Journal des achats
  2407.         if ($journal == 'HA' || $journal == '') {
  2408.             //$facturesFids = $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date);
  2409.             $facturesF $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date)->getQuery()->getResult();
  2410.             //foreach($facturesFids as $factureFid){
  2411.             foreach ($facturesF as $factureF) {
  2412.                 //Facture dans une autre devise
  2413.                 $tauxChange floatval($factureF->getTauxChange());
  2414.                 //$montant = floatval($factureF->getTotalTtc())*$tauxChange;
  2415.                 $equilibrage2 0;
  2416.                 $montantTotal 0;
  2417.                 $fournisseur $factureF->getFournisseur();
  2418.                 if ($factureF->getFournisseurLibelle() != '') {
  2419.                     $libelle $factureF->getFournisseurLibelle();
  2420.                 } else {
  2421.                     $libelle $fournisseur->getLibelle();
  2422.                 }
  2423.                 $tvas            = [];
  2424.                 $famillesArticle = [];
  2425.                 $comptaObjet     $factureF->getFournisseur()->getCompta();
  2426.                 if (is_object($comptaObjet)) {
  2427.                     $compta $comptaObjet->getId();
  2428.                 } else {
  2429.                     $compta 1;
  2430.                 }
  2431.                 //Frais de port
  2432.                 $tauxTva $factureF->getTauxTvaFraisPort();
  2433.                 if ($tauxTva == '') {
  2434.                     $tauxTva 0;
  2435.                 }
  2436.                 $tva $repo_tva->findOneBy(['taux' => $tauxTva]);
  2437.                 if (is_object($tva)) {
  2438.                     $codeComptaTVA strval($tva->getComptaAchat());
  2439.                 } else {
  2440.                     $codeComptaTVA '';
  2441.                 }
  2442.                 $codeComptaFamille '0';
  2443.                 $familleCompta     $societe->getFamilleComptaFraisPort();
  2444.                 if (is_object($familleCompta)) {
  2445.                     $famille $repo_article_famille_compta_compta->findOneBy([
  2446.                                                                                   'familleCompta' => $familleCompta->getId(),//Article port
  2447.                                                                                   'compta'        => $compta,
  2448.                                                                               ]);
  2449.                     if (is_object($famille)) {
  2450.                         $codeComptaFamille $famille->getAchat();
  2451.                     }
  2452.                 }
  2453.                 //Frais de port supplementaire
  2454.                 $fraisPortHT floatval($factureF->getFraisPortSupplementaire());
  2455.                 if ($fraisPortHT != 0) {
  2456.                     $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  2457.                 }
  2458.                 $montantTva floatval($factureF->getTotalTvaFraisPort());
  2459.                 if ( ! (floatval($montantTva) == || floatval($montantTva) == '')) {
  2460.                     $tvas[$codeComptaTVA] = floatval($montantTva);
  2461.                 }
  2462.                 //Ajout de l'arrondi
  2463.                 $arrondiTVA $factureF->getArrondiTva();
  2464.                 if ($arrondiTVA != '') {
  2465.                     if (array_key_exists($codeComptaTVA$tvas)) {
  2466.                         $tvas[$codeComptaTVA] += floatval($arrondiTVA);
  2467.                     } else {
  2468.                         $tvas[$codeComptaTVA] = floatval($arrondiTVA);
  2469.                     }
  2470.                 }
  2471.                 //Frais fixe
  2472.                 $codeComptaFamille '0';
  2473.                 $familleCompta     $societe->getFamilleComptaFraisFixe();
  2474.                 if (is_object($familleCompta)) {
  2475.                     $famille $repo_article_famille_compta_compta->findOneBy([
  2476.                                                                                   'familleCompta' => $familleCompta->getId(),//Article port
  2477.                                                                                   'compta'        => $compta,
  2478.                                                                               ]);
  2479.                     if (is_object($famille)) {
  2480.                         $codeComptaFamille $famille->getAchat();
  2481.                     }
  2482.                 }
  2483.                 $fraisFixe $factureF->getFraisFixe();
  2484.                 if ($fraisFixe != 0) {
  2485.                     if (array_key_exists($codeComptaFamille$famillesArticle)) {
  2486.                         $famillesArticle[$codeComptaFamille] += $fraisFixe;
  2487.                     } else {
  2488.                         $famillesArticle[$codeComptaFamille] = $fraisFixe;
  2489.                     }
  2490.                     $tvaSurfraisFixe $fraisFixe $tauxTva 100;
  2491.                     if (array_key_exists($codeComptaTVA$tvas)) {
  2492.                         $tvas[$codeComptaTVA] += floatval($tvaSurfraisFixe);
  2493.                     } else {
  2494.                         $tvas[$codeComptaTVA] = floatval($tvaSurfraisFixe);
  2495.                     }
  2496.                 }
  2497.                 foreach ($factureF->getArticleCommande() as $ac) {
  2498.                     //TVA
  2499.                     $tauxTva floatval($ac->getTva());
  2500.                     $montantTva $ac->getTvaVente();
  2501.                     $codeComptaTVA '';
  2502.                     $tva           $repo_tva->findOneBy(['taux' => $tauxTva]);
  2503.                     if (is_object($tva)) {
  2504.                         $codeComptaTVA $tva->getComptaAchat();
  2505.                     }
  2506.                     $key strval($codeComptaTVA);
  2507.                     if ($montantTva != 0) {
  2508.                         if (array_key_exists($key$tvas)) {
  2509.                             $tvas[$key] += floatval($montantTva);
  2510.                         } else {
  2511.                             $tvas[$key] = floatval($montantTva);
  2512.                         }
  2513.                     }
  2514.                     //Famille d'articles
  2515.                     $codeComptaFamille '0';
  2516.                     $familleCompta     $ac->getArticle()->getFamilleCompta();
  2517.                     if (is_object($familleCompta)) {
  2518.                         $famille $repo_article_famille_compta_compta->findOneBy([
  2519.                                                                                       'familleCompta' => $familleCompta->getId(),
  2520.                                                                                       'compta'        => $compta,
  2521.                                                                                   ]);
  2522.                         if (is_object($famille)) {
  2523.                             $codeComptaFamille $famille->getAchat();
  2524.                         }
  2525.                     }
  2526.                     $montantHt $ac->getTotalHt(3);
  2527.                     //prendre en compte le coefficient de conditionnement
  2528.                     $coefficientConditionnement $ac->getCoefficientConditionnement();
  2529.                     if ($coefficientConditionnement != 0) {
  2530.                         $montantHt $montantHt $coefficientConditionnement;
  2531.                     }
  2532.                     if ($montantHt != 0) {
  2533.                         if (array_key_exists($codeComptaFamille$famillesArticle)) {
  2534.                             $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  2535.                         } else {
  2536.                             $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  2537.                         }
  2538.                     }
  2539.                     //Frais annexes
  2540.                     $montantHt $ac->getFraisAnnexes();
  2541.                     if ($montantHt != 0) {
  2542.                         $codeComptaFamille '0';
  2543.                         //$familleCompta = $ac->getArticle()->getFamilleCompta();
  2544.                         $familleCompta $societe->getFamilleComptaFraisAnnexes();
  2545.                         if (is_object($familleCompta)) {
  2546.                             $famille $repo_article_famille_compta_compta->findOneBy([
  2547.                                                                                           'familleCompta' => $familleCompta->getId(),
  2548.                                                                                           'compta'        => $compta,
  2549.                                                                                       ]);
  2550.                             if (is_object($famille)) {
  2551.                                 $codeComptaFamille $famille->getAchat();
  2552.                             }
  2553.                         }
  2554.                         if (array_key_exists($codeComptaFamille$famillesArticle)) {
  2555.                             $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  2556.                         } else {
  2557.                             $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  2558.                         }
  2559.                     }
  2560.                 }
  2561.                 if ($action == 'exporter' || $action == "exporterTxt") {
  2562.                     /*
  2563.                         $factureF->setDateTransfertCompta($dateJour);
  2564.                         $em->persist($factureF);
  2565.                          *
  2566.                          */
  2567.                     foreach ($tvas as $key => $montant) {
  2568.                         $dateTmp     $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  2569.                         $codeJournal 'HA';
  2570.                         //Recuperer le compte comptable du client
  2571.                         $compte $key;//$codeComptaTVA;
  2572.                         //$result['numPiece'] = $factureF->getReference();
  2573.                         $numPiece $factureF->getfournisseurNumeroFacture();
  2574.                         $ecrituresNonexportees[] =
  2575.                             $dateTmp.'-'//$result['date']
  2576.                             .$codeJournal.'-'//$result['codeJournal']
  2577.                             .$compte.'-'//$result['compte']
  2578.                             .$numPiece.'-'//$result['numPiece']
  2579.                             .$libelle//$result['libelle']
  2580.                         ;
  2581.                     }
  2582.                     foreach ($famillesArticle as $key => $montant) {
  2583.                         $dateTmp     $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  2584.                         $codeJournal 'HA';
  2585.                         //Recuperer le compte comptable du client
  2586.                         $compte $key;
  2587.                         //$result['numPiece'] = $factureF->getReference();
  2588.                         $numPiece $factureF->getfournisseurNumeroFacture();
  2589.                         $ecrituresNonexportees[] =
  2590.                             $dateTmp.'-'//$result['date']
  2591.                             .$codeJournal.'-'//$result['codeJournal']
  2592.                             .$compte.'-'//$result['compte']
  2593.                             .$numPiece.'-'//$result['numPiece']
  2594.                             .$libelle//$result['libelle']
  2595.                         ;
  2596.                     }
  2597.                     $dateTmp     $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  2598.                     $codeJournal 'HA';
  2599.                     //Recuperer le compte comptable du client
  2600.                     $compte   $fournisseur->getCodeComptable();
  2601.                     $numPiece $factureF->getfournisseurNumeroFacture();
  2602.                     $ecrituresNonexportees[] =
  2603.                         $dateTmp.'-'//$result['date']
  2604.                         .$codeJournal.'-'//$result['codeJournal']
  2605.                         .$compte.'-'//$result['compte']
  2606.                         .$numPiece.'-'//$result['numPiece']
  2607.                         .$libelle//$result['libelle']
  2608.                     ;
  2609.                 } else {
  2610.                     /*
  2611.                         //Facture dans une autre devise
  2612.                         $tauxChange = floatval($factureF->getTauxChange());
  2613.                         //$montant = floatval($factureF->getTotalTtc())*$tauxChange;
  2614.                         $equilibrage2 = 0;
  2615.                         $montantTotal = 0;
  2616.                         $fournisseur = $factureF->getFournisseur();
  2617.                         if($factureF->getFournisseurLibelle() != '' )
  2618.                             $libelle = $factureF->getFournisseurLibelle();
  2619.                         else
  2620.                             $libelle = $fournisseur->getLibelle();
  2621.                         $tvas = array();
  2622.                         $famillesArticle = array();
  2623.                         $comptaObjet = $factureF->getFournisseur()->getCompta();
  2624.                             if (is_object($comptaObjet))
  2625.                                 $compta = $comptaObjet->getId();
  2626.                             else
  2627.                                 $compta = 1;
  2628.                         //Frais de port
  2629.                         $tauxTva = $factureF->getTauxTvaFraisPort();
  2630.                         if($tauxTva == '') $tauxTva = 0;
  2631.                         $tva = $repo_tva->findOneBy(array('taux'=>$tauxTva));
  2632.                         if(is_object($tva)) {
  2633.                             $codeComptaTVA = strval($tva->getComptaAchat());
  2634.                         } else {
  2635.                             $codeComptaTVA = '';
  2636.                         }
  2637.                         $codeComptaFamille = '0';
  2638.                         $familleCompta = $societe->getFamilleComptaFraisPort();
  2639.                         if(is_object($familleCompta)){
  2640.                             $famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),//Article port
  2641.                                                                             'compta'=>$compta
  2642.                                     ));
  2643.                             if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
  2644.                         }
  2645.                         //Frais de port supplementaire
  2646.                         $fraisPortHT = floatval($factureF->getFraisPortSupplementaire());
  2647.                         if ($fraisPortHT != 0)
  2648.                             $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  2649.                         $montantTva = floatval($factureF->getTotalTvaFraisPort());
  2650.                         if(!(floatval($montantTva)== 0 || floatval($montantTva)== ''))
  2651.                             $tvas[$codeComptaTVA] = floatval($montantTva);
  2652.                         //Ajout de l'arrondi
  2653.                         $arrondiTVA = $factureF->getArrondiTva();
  2654.                         if($arrondiTVA != '')
  2655.                             if(array_key_exists($codeComptaTVA, $tvas)){
  2656.                                 $tvas[$codeComptaTVA] += floatval($arrondiTVA);
  2657.                             } else {
  2658.                                 $tvas[$codeComptaTVA] = floatval($arrondiTVA);
  2659.                             }
  2660.                         //Frais fixe
  2661.                         $codeComptaFamille = '0';
  2662.                         $familleCompta = $societe->getFamilleComptaFraisFixe();
  2663.                         if(is_object($familleCompta)){
  2664.                             $famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),//Article port
  2665.                                                                             'compta'=>$compta
  2666.                                     ));
  2667.                             if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
  2668.                         }
  2669.                         $fraisFixe = $factureF->getFraisFixe();
  2670.                         if($fraisFixe != 0){
  2671.                             if(array_key_exists($codeComptaFamille, $famillesArticle))
  2672.                                 $famillesArticle[$codeComptaFamille] += $fraisFixe;
  2673.                             else
  2674.                                 $famillesArticle[$codeComptaFamille] = $fraisFixe;
  2675.                             $tvaSurfraisFixe = $fraisFixe*$tauxTva/100;
  2676.                             if(array_key_exists($codeComptaTVA, $tvas)){
  2677.                                     $tvas[$codeComptaTVA] += floatval($tvaSurfraisFixe);
  2678.                                 } else {
  2679.                                     $tvas[$codeComptaTVA] = floatval($tvaSurfraisFixe);
  2680.                                 }
  2681.                         }
  2682.                         foreach($factureF->getArticleCommande() as $ac){
  2683.                             //TVA
  2684.                             $tauxTva = floatval($ac->getTva());
  2685.                             $montantTva = $ac->getTvaVente();
  2686.                             $codeComptaTVA = '';
  2687.                             $tva = $repo_tva->findOneBy(array('taux'=>$tauxTva));
  2688.                             if(is_object($tva))
  2689.                                 $codeComptaTVA = $tva->getComptaAchat();
  2690.                             $key = strval($codeComptaTVA);
  2691.                             if ($montantTva != 0 ){
  2692.                                 if (array_key_exists ( $key , $tvas ))
  2693.                                     $tvas[$key] += floatval($montantTva);
  2694.                                 else
  2695.                                     $tvas[$key] = floatval($montantTva);
  2696.                             }
  2697.                             //Famille d'articles
  2698.                             $codeComptaFamille = '0';
  2699.                             $familleCompta = $ac->getArticle()->getFamilleCompta();
  2700.                             if(is_object($familleCompta)){
  2701.                                 $famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
  2702.                                                                             'compta'=>$compta
  2703.                                     ));
  2704.                             if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
  2705.                             }
  2706.                             $montantHt = $ac->getTotalHt();
  2707.                             if($montantHt != 0){
  2708.                                 if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
  2709.                                     $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  2710.                                 else
  2711.                                     $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  2712.                             }
  2713.                             //Frais annexes
  2714.                             $codeComptaFamille = '0';
  2715.                             //$familleCompta = $ac->getArticle()->getFamilleCompta();
  2716.                             $familleCompta = $societe->getFamilleComptaFraisAnnexes();
  2717.                             if(is_object($familleCompta)){
  2718.                                 $famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
  2719.                                                                             'compta'=>$compta
  2720.                                     ));
  2721.                             if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
  2722.                             }
  2723.                             $montantHt = $ac->getFraisAnnexes();
  2724.                             if($montantHt != 0){
  2725.                                 if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
  2726.                                     $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  2727.                                 else
  2728.                                     $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  2729.                             }
  2730.                         }
  2731.                         */
  2732.                     if ($journal == '' || $journal == 'HA') {
  2733.                         foreach ($tvas as $key => $montant) {
  2734.                             $montant               round($montant $tauxChange2);
  2735.                             $montantTotal          += $montant;
  2736.                             $result                = [];
  2737.                             $result['date']        = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  2738.                             $result['codeJournal'] = 'HA';
  2739.                             //Recuperer le compte comptable du client
  2740.                             $result['compte'] = $key;//$codeComptaTVA;
  2741.                             //$result['numPiece'] = $factureF->getReference();
  2742.                             $result['numPiece'] = $factureF->getfournisseurNumeroFacture();
  2743.                             //$result['libelle'] = 'FAC Fourn - TVA ';
  2744.                             $result['libelle'] = $libelle;
  2745.                             if (floatval($montant) > 0) {
  2746.                                 $result['debit']  = abs($montant);
  2747.                                 $result['credit'] = '';
  2748.                             } else {
  2749.                                 $result['debit']  = '';
  2750.                                 $result['credit'] = abs($montant);
  2751.                             }
  2752.                             $equilibrage2 += $montant;
  2753.                             $result['monnaie']    = 'E';
  2754.                             $result['analytique'] = '';
  2755.                             fputcsv($handle$result$delimiter);
  2756.                             $result['fournisseurNumeroFacture']  = $factureF->getfournisseurNumeroFacture();
  2757.                             $result['lien']                      = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
  2758.                             $result['id2']                       = $factureF->getId();
  2759.                             $ecritures[$result['codeJournal']][] = $result;
  2760.                         }
  2761.                         foreach ($famillesArticle as $key => $montant) {
  2762.                             $montant               round($montant $tauxChange2PHP_ROUND_HALF_DOWN);
  2763.                             $montantTotal          += $montant;
  2764.                             $result                = [];
  2765.                             $result['date']        = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  2766.                             $result['codeJournal'] = 'HA';
  2767.                             //Recuperer le compte comptable du client
  2768.                             $result['compte'] = $key;
  2769.                             //$result['numPiece'] = $factureF->getReference();
  2770.                             $result['numPiece'] = $factureF->getfournisseurNumeroFacture();
  2771.                             //$result['libelle'] = 'FAC Fourn - Famille article ';
  2772.                             $result['libelle'] = $libelle;
  2773.                             if (floatval($montant) > 0) {
  2774.                                 $result['debit']  = abs($montant);
  2775.                                 $result['credit'] = '';
  2776.                             } else {
  2777.                                 $result['debit']  = '';
  2778.                                 $result['credit'] = abs($montant);
  2779.                             }
  2780.                             $equilibrage2 += $montant;
  2781.                             $result['monnaie']    = 'E';
  2782.                             $result['analytique'] = '';
  2783.                             fputcsv($handle$result$delimiter);
  2784.                             $result['fournisseurNumeroFacture']  = $factureF->getfournisseurNumeroFacture();
  2785.                             $result['lien']                      = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
  2786.                             $result['id2']                       = $factureF->getId();
  2787.                             $ecritures[$result['codeJournal']][] = $result;
  2788.                         }
  2789.                         //$fournisseur = $factureF->getFournisseur();
  2790.                         if ($fournisseur->getDivers() == && is_object($fournisseur->getParent())) {
  2791.                             $fournisseur $fournisseur->getParent();
  2792.                         }
  2793.                         $result                = [];
  2794.                         $result['date']        = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  2795.                         $result['codeJournal'] = 'HA';
  2796.                         //Recuperer le compte comptable du client
  2797.                         $result['compte'] = $fournisseur->getCodeComptable();
  2798.                         //$result['numPiece'] = $factureF->getReference();
  2799.                         $result['numPiece'] = $factureF->getfournisseurNumeroFacture();
  2800.                         /*
  2801.                         if($factureF->getFournisseurLibelle() != '' )
  2802.                             $result['libelle'] = $factureF->getFournisseurLibelle().'('.$fournisseur->getReference().')';
  2803.                         else
  2804.                             $result['libelle'] = $fournisseur->getLibelle().'('.$fournisseur->getReference().')';
  2805.                         $result['libelle'] = $fournisseur->getLibelle();
  2806.                          *
  2807.                          */
  2808.                         /*
  2809.                         if($factureF->getFournisseurLibelle() != '' )
  2810.                             $result['libelle'] = $factureF->getFournisseurLibelle();
  2811.                         else
  2812.                             $result['libelle'] = $fournisseur->getLibelle();
  2813.                          *
  2814.                          */
  2815.                         $result['libelle'] = $libelle;
  2816.                         if ($montantTotal 0) {
  2817.                             $result['debit']  = '';
  2818.                             $result['credit'] = abs($montantTotal);
  2819.                         } else {
  2820.                             $result['debit']  = abs($montantTotal);
  2821.                             $result['credit'] = '';
  2822.                         }
  2823.                         $equilibrage1 $montantTotal;
  2824.                         $result['monnaie']    = 'E';
  2825.                         $result['analytique'] = '';
  2826.                         fputcsv($handle$result$delimiter);
  2827.                         $result['fournisseurNumeroFacture']  = $factureF->getfournisseurNumeroFacture();
  2828.                         $result['lien']                      = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
  2829.                         $result['id2']                       = $factureF->getId();
  2830.                         $ecritures[$result['codeJournal']][] = $result;
  2831.                     }
  2832.                     if (strval($equilibrage1) != strval($equilibrage2)) {
  2833.                         $elementsAequilibrer[] = $factureF->getReference().'-'.$factureF->getId();
  2834.                     }
  2835.                 }
  2836.             }
  2837.         }
  2838.         //Journal des ventes
  2839.         if ($journal == 'VT' || $journal == '') {
  2840.             $ventes $repo_factures->getFacturesEtAvoirsAtransfererEnCompta($date);
  2841.             foreach ($ventes as $factureId) {
  2842.                 $equilibrage2 0;
  2843.                 $facture      $repo_factures->find($factureId);
  2844.                 if ($facture->getAvecTaxe() == 0) {
  2845.                     $montant floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
  2846.                 } else {
  2847.                     $montant floatval($facture->getTotalTtc());
  2848.                 }
  2849.                 $equilibrage1 $montant;
  2850.                 $tvas            = [];
  2851.                 $famillesArticle = [];
  2852.                 $comptaObjet     $facture->getClient()->getCompta();
  2853.                 if (is_object($comptaObjet)) {
  2854.                     $compta $comptaObjet->getId();
  2855.                 } else {
  2856.                     $compta 1;
  2857.                 }
  2858.                 //test si c'est une facture multi bl
  2859.                 if ($facture->getMultiBl() == 1) {
  2860.                     $bls $repo_factures->findByFacture($facture);
  2861.                     foreach ($bls as $bl) {
  2862.                         foreach ($bl->getArticleCommande() as $ac) {
  2863.                             if ($bl->getAvecTaxe() == 1) {
  2864.                                 //TVA
  2865.                                 $tauxTva    $ac->getTva();
  2866.                                 $montantTva $ac->getTvaVente();
  2867.                                 $codeComptaTVA '';
  2868.                                 $tva           $repo_tva->findOneByTaux($tauxTva);
  2869.                                 if (is_object($tva)) {
  2870.                                     $codeComptaTVA $tva->getComptaVente();
  2871.                                 }
  2872.                                 $key strval($codeComptaTVA);
  2873.                                 if (array_key_exists($key$tvas)) {
  2874.                                     $tvas[$key] += floatval($montantTva);
  2875.                                 } else {
  2876.                                     $tvas[$key] = floatval($montantTva);
  2877.                                 }
  2878.                             }
  2879.                             //Famille d'articles
  2880.                             /*
  2881.                                 $famille = $repo_article_compta->findOneBy(array('article'=>$ac->getArticle()->getId(),
  2882.                                                                                 'compta'=>$compta
  2883.                                         ));
  2884.                                 if(is_object($famille)) $codeComptaFamille = $famille->getVente(); else $codeComptaFamille = '0';
  2885.      *
  2886.      */
  2887.                             $codeComptaFamille '0';
  2888.                             $familleCompta     $ac->getArticle()->getFamilleCompta();
  2889.                             if (is_object($familleCompta)) {
  2890.                                 $famille $repo_article_famille_compta_compta->findOneBy([
  2891.                                                                                               'familleCompta' => $familleCompta->getId(),
  2892.                                                                                               'compta'        => $compta,
  2893.                                                                                           ]);
  2894.                                 if (is_object($famille)) {
  2895.                                     $codeComptaFamille $famille->getVente();
  2896.                                 }
  2897.                             }
  2898.                             $montantHt $ac->getTotalHt();
  2899.                             if (array_key_exists($codeComptaFamille$famillesArticle)) {
  2900.                                 $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  2901.                             } else {
  2902.                                 $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  2903.                             }
  2904.                         }
  2905.                     }
  2906.                 } else {
  2907.                     foreach ($facture->getArticleCommande() as $ac) {
  2908.                         if ($facture->getAvecTaxe() == 1) {
  2909.                             //TVA
  2910.                             $tauxTva $ac->getTva();
  2911.                             $montantTva $ac->getTvaVente();
  2912.                             $codeComptaTVA '';
  2913.                             $tva           $repo_tva->findOneByTaux($tauxTva);
  2914.                             if (is_object($tva)) {
  2915.                                 $codeComptaTVA $tva->getComptaVente();
  2916.                             }
  2917.                             $key strval($codeComptaTVA);
  2918.                             if (array_key_exists($key$tvas)) {
  2919.                                 $tvas[$key] += floatval($montantTva);
  2920.                             } else {
  2921.                                 $tvas[$key] = floatval($montantTva);
  2922.                             }
  2923.                         }
  2924.                         //Famille d'articles
  2925.                         /*
  2926.                                 $famille = $repo_article_compta->findOneBy(array('article'=>$ac->getArticle()->getId(),
  2927.                                                                                 'compta'=>$compta
  2928.                                         ));
  2929.                                 if(is_object($famille)) $codeComptaFamille = $famille->getVente(); else $codeComptaFamille = '0';
  2930.      *
  2931.      */
  2932.                         $codeComptaFamille '0';
  2933.                         $familleCompta     $ac->getArticle()->getFamilleCompta();
  2934.                         if (is_object($familleCompta)) {
  2935.                             $famille $repo_article_famille_compta_compta->findOneBy([
  2936.                                                                                           'familleCompta' => $familleCompta->getId(),
  2937.                                                                                           'compta'        => $compta,
  2938.                                                                                       ]);
  2939.                             if (is_object($famille)) {
  2940.                                 $codeComptaFamille $famille->getVente();
  2941.                             }
  2942.                         }
  2943.                         $montantHt $ac->getTotalHt();
  2944.                         if (array_key_exists($codeComptaFamille$famillesArticle)) {
  2945.                             $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  2946.                         } else {
  2947.                             $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  2948.                         }
  2949.                     }
  2950.                 }
  2951.                 //Frais de port
  2952.                 if (is_object($facture->getClient()->getCompta()) && $facture->getClient()->getCompta()->getId() == 1)//Taxable
  2953.                 {
  2954.                     $tva $repo_tva->find(1);
  2955.                 }//tva à 20%
  2956.                 else {
  2957.                     $tva $repo_tva->find(5);
  2958.                 }//Aucune taxe
  2959.                 if (is_object($tva)) {
  2960.                     $tauxTva       $tva->getTaux();
  2961.                     $codeComptaTVA strval($tva->getComptaVente());
  2962.                 } else {
  2963.                     $codeComptaTVA '';
  2964.                     $tauxTva       0;
  2965.                 }
  2966.                 /*
  2967.                         $famille = $repo_article_compta->findOneBy(array('article'=>1045389,//Article port
  2968.                                                                             'compta'=>$compta
  2969.                                     ));
  2970.                         if(is_object($famille)) $codeComptaFamille = $famille->getVente(); else $codeComptaFamille = '0';
  2971.                          *
  2972.                          */
  2973.                 $codeComptaFamille '0';
  2974.                 $familleCompta     $societe->getFamilleComptaFraisPort();
  2975.                 //$familleCompta = $ac->getArticle()->getFamilleCompta();
  2976.                 if (is_object($familleCompta)) {
  2977.                     $famille $repo_article_famille_compta_compta->findOneBy([
  2978.                                                                                   'familleCompta' => $familleCompta->getId(),
  2979.                                                                                   'compta'        => $compta,
  2980.                                                                               ]);
  2981.                     if (is_object($famille)) {
  2982.                         $codeComptaFamille $famille->getVente();
  2983.                     }
  2984.                 }
  2985.                 $fraisPortHT floatval($facture->getTotalFraisPort());
  2986.                 $montantTva  $fraisPortHT * ($tauxTva 100);
  2987.                 //$fraisPortHT = floatval($facture->getTotalFraisPort());
  2988.                 if ($fraisPortHT != 0) {
  2989.                     if (array_key_exists($codeComptaFamille$famillesArticle)) {
  2990.                         $famillesArticle[$codeComptaFamille] += $fraisPortHT;
  2991.                     } else {
  2992.                         $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  2993.                     }
  2994.                 }
  2995.                 //$montantTva = floatval($facture->getTotalFraisPort())-$fraisPortHT;
  2996.                 //$montantTva = floatval($facture->getTotalFraisPortTtc())-$fraisPortHT;
  2997.                 if ($montantTva != && $facture->getAvecTaxe() == 1) {
  2998.                     if (array_key_exists($codeComptaTVA$tvas)) {
  2999.                         $tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
  3000.                     } else {
  3001.                         $tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
  3002.                     }
  3003.                 }
  3004.                 //Frais de port supplementaire
  3005.                 $fraisPortHT floatval($facture->getFraisPortSupplementaire());
  3006.                 $montantTva  $fraisPortHT * ($tauxTva 100);
  3007.                 if ($fraisPortHT != 0) {
  3008.                     if (array_key_exists($codeComptaFamille$famillesArticle)) {
  3009.                         $famillesArticle[$codeComptaFamille] += $fraisPortHT;
  3010.                     } else {
  3011.                         $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  3012.                     }
  3013.                 }
  3014.                 //$montantTva = floatval($facture->getFraisPortSupplementaire())-$fraisPortHT;
  3015.                 if ($montantTva != && $facture->getAvecTaxe() == 1) {
  3016.                     if (array_key_exists($codeComptaTVA$tvas)) {
  3017.                         $tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
  3018.                     } else {
  3019.                         $tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
  3020.                     }
  3021.                 }
  3022.                 foreach ($tvas as $key => $montant) {
  3023.                     $equilibrage2 += $montant;
  3024.                 }
  3025.                 foreach ($famillesArticle as $key => $montant) {
  3026.                     $equilibrage2 += $montant;
  3027.                 }
  3028.                 $diffEquilibrage round($equilibrage12) - round($equilibrage22);
  3029.                 if (abs($diffEquilibrage) < 0.1) {
  3030.                     if (array_key_exists($codeComptaTVA$tvas)) {
  3031.                         $tvas[$codeComptaTVA] += $diffEquilibrage;
  3032.                     } else {
  3033.                         $tvas[$codeComptaTVA] = $diffEquilibrage;
  3034.                     }
  3035.                     $equilibrage2 += $diffEquilibrage;
  3036.                 }
  3037.                 if ($action == 'exporter' || $action == "exporterTxt") {
  3038.                     /*
  3039.                         $facture->setDateTransfertCompta($dateJour);
  3040.                         $facture->setBasculeComptabilite(true);
  3041.                         $em->persist($facture);
  3042.                          *
  3043.                          */
  3044.                     if ($facture->getAvecTaxe() == 0) {
  3045.                         $montant floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
  3046.                     } else {
  3047.                         $montant floatval($facture->getTotalTtc());
  3048.                     }
  3049.                     $dateTmp     $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3050.                     $codeJournal 'VT';
  3051.                     //Recuperer le compte comptable du client
  3052.                     $compte   $facture->getClient()->getCodeComptable();
  3053.                     $numPiece $facture->getReference();
  3054.                     if ($montant 0) {//Facture
  3055.                         //$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  3056.                         $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3057.                     } else {//Avoir
  3058.                         //$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  3059.                         $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3060.                     }
  3061.                     $ecrituresNonexportees[] =
  3062.                         $dateTmp.'-'//$result['date']
  3063.                         .$codeJournal.'-'//$result['codeJournal']
  3064.                         .$compte.'-'//$result['compte']
  3065.                         .$numPiece.'-'//$result['numPiece']
  3066.                         .$libelle//$result['libelle']
  3067.                     ;
  3068.                     foreach ($tvas as $key => $montant) {
  3069.                         if ($montant != 0) {
  3070.                             $dateTmp     $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3071.                             $codeJournal 'VT';
  3072.                             $compte      $key;
  3073.                             $numPiece    $facture->getReference();
  3074.                             /*
  3075.                                 if (floatval($montant) > 0 ){//Facture
  3076.                                     $libelle = 'FAC - TVA ';
  3077.                                 } else {//Avoir
  3078.                                     $libelle = 'AVOIR - TVA ';
  3079.                                 }
  3080.  *
  3081.  */
  3082.                             $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3083.                             $ecrituresNonexportees[] =
  3084.                                 $dateTmp.'-'//$result['date']
  3085.                                 .$codeJournal.'-'//$result['codeJournal']
  3086.                                 .$compte.'-'//$result['compte']
  3087.                                 .$numPiece.'-'//$result['numPiece']
  3088.                                 .$libelle//$result['libelle']
  3089.                             ;
  3090.                         }
  3091.                     }
  3092.                     foreach ($famillesArticle as $key => $montant) {
  3093.                         $dateTmp     $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3094.                         $codeJournal 'VT';
  3095.                         //Recuperer le compte comptable du client
  3096.                         $compte   $key;
  3097.                         $numPiece $facture->getReference();
  3098.                         /*
  3099.                             if (floatval($montant) > 0){//Facture
  3100.                                 $libelle = 'FAC - Famille article ';
  3101.                             } else {//Avoir
  3102.                                 $libelle = 'AVOIR - Famille article ';
  3103.                             }
  3104.  *
  3105.  */
  3106.                         $libelle $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3107.                         $ecrituresNonexportees[] =
  3108.                             $dateTmp.'-'//$result['date']
  3109.                             .$codeJournal.'-'//$result['codeJournal']
  3110.                             .$compte.'-'//$result['compte']
  3111.                             .$numPiece.'-'//$result['numPiece']
  3112.                             .$libelle//$result['libelle']
  3113.                         ;
  3114.                     }
  3115.                 } else {
  3116.                     if ($facture->getAvecTaxe() == 0) {
  3117.                         $montant floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
  3118.                     } else {
  3119.                         $montant floatval($facture->getTotalTtc());
  3120.                     }
  3121.                     //$equilibrage1 = $montant;
  3122.                     //$equilibrage2 = 0;
  3123.                     $result                = [];
  3124.                     $result['date']        = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3125.                     $result['codeJournal'] = 'VT';
  3126.                     //Recuperer le compte comptable du client
  3127.                     $result['compte']   = $facture->getClient()->getCodeComptable();
  3128.                     $result['numPiece'] = $facture->getReference();
  3129.                     if ($montant 0) {//Facture
  3130.                         //$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  3131.                         $result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3132.                         $result['debit']   = abs($montant);
  3133.                         $result['credit']  = '';
  3134.                     } else {//Avoir
  3135.                         //$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
  3136.                         $result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3137.                         $result['debit']   = '';
  3138.                         $result['credit']  = abs($montant);
  3139.                     }
  3140.                     $result['monnaie']    = 'E';
  3141.                     $result['analytique'] = '';
  3142.                     fputcsv($handle$result$delimiter);
  3143.                     if ($montant 0) {//Facture
  3144.                         $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
  3145.                     } else {//Avoir
  3146.                         $result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
  3147.                     }
  3148.                     $result['id']                        = $facture->getReference().'-'.$facture->getId();
  3149.                     $result['id2']                       = $facture->getId();
  3150.                     $ecritures[$result['codeJournal']][] = $result;
  3151.                     /*
  3152.                         $tvas = array();
  3153.                         $famillesArticle = array();
  3154.                         $comptaObjet = $facture->getClient()->getCompta();
  3155.                             if (is_object($comptaObjet))
  3156.                                 $compta = $comptaObjet->getId();
  3157.                             else
  3158.                                 $compta = 1;
  3159.                         //test si c'est une facture multi bl
  3160.                         if ($facture->getMultiBl() == 1)  {
  3161.                             $bls = $repo_factures->findByFacture($facture);
  3162.                             foreach($bls as $bl){
  3163.                                 foreach($bl->getArticleCommande() as $ac){
  3164.                                     if($bl->getAvecTaxe() == 1){
  3165.                                         //TVA
  3166.                                         $tauxTva = $ac->getTva();
  3167.                                         $montantTva = $ac->getTvaVente();
  3168.                                         $codeComptaTVA = '';
  3169.                                         $tva = $repo_tva->findOneByTaux($tauxTva);
  3170.                                         if(is_object($tva))
  3171.                                             $codeComptaTVA = $tva->getComptaVente();
  3172.                                         $key = strval($codeComptaTVA);
  3173.                                         if (array_key_exists ( $key , $tvas ))
  3174.                                             $tvas[$key] += floatval($montantTva);
  3175.                                         else
  3176.                                             $tvas[$key] = floatval($montantTva);
  3177.                                     }
  3178.                                 //Famille d'articles
  3179.                                 $codeComptaFamille = '0';
  3180.                                 $familleCompta = $ac->getArticle()->getFamilleCompta();
  3181.                                 if(is_object($familleCompta)){
  3182.                                     $famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
  3183.                                                                             'compta'=>$compta
  3184.                                     ));
  3185.                                     if(is_object($famille)) $codeComptaFamille = $famille->getVente();
  3186.                                 }
  3187.                                 $montantHt = $ac->getTotalHt();
  3188.                                 if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
  3189.                                     $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  3190.                                 else
  3191.                                     $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  3192.                             }
  3193.                             }
  3194.                         } else {
  3195.                             foreach($facture->getArticleCommande() as $ac){
  3196.                                 if($facture->getAvecTaxe() == 1){
  3197.                                     //TVA
  3198.                                     $tauxTva = $ac->getTva();
  3199.                                     $montantTva = $ac->getTvaVente();
  3200.                                     $codeComptaTVA = '';
  3201.                                     $tva = $repo_tva->findOneByTaux($tauxTva);
  3202.                                     if(is_object($tva)) {
  3203.                                         $codeComptaTVA = $tva->getComptaVente();
  3204.                                     }
  3205.                                     $key = strval($codeComptaTVA);
  3206.                                     if (array_key_exists ( $key , $tvas ))
  3207.                                         $tvas[$key] += floatval($montantTva);
  3208.                                     else
  3209.                                         $tvas[$key] = floatval($montantTva);
  3210.                                 }
  3211.                                 $codeComptaFamille = '0';
  3212.                                 $familleCompta = $ac->getArticle()->getFamilleCompta();
  3213.                                 if(is_object($familleCompta)){
  3214.                                     $famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
  3215.                                                                             'compta'=>$compta
  3216.                                     ));
  3217.                                     if(is_object($famille)) $codeComptaFamille = $famille->getVente();
  3218.                                 }
  3219.                                 $montantHt = $ac->getTotalHt();
  3220.                                 if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
  3221.                                     $famillesArticle[$codeComptaFamille] += floatval($montantHt);
  3222.                                 else
  3223.                                     $famillesArticle[$codeComptaFamille] = floatval($montantHt);
  3224.                             }
  3225.                         }
  3226.                         //Frais de port
  3227.                         if(is_object($facture->getClient()->getCompta()) && $facture->getClient()->getCompta()->getId() == 1)//Taxable
  3228.                             $tva = $repo_tva->find(1);//tva à 20%
  3229.                         else
  3230.                             $tva = $repo_tva->find(5);//Aucune taxe
  3231.                         if(is_object($tva)) {
  3232.                             $tauxTva = $tva->getTaux();
  3233.                             $codeComptaTVA = strval($tva->getComptaVente());
  3234.                         } else {
  3235.                             $codeComptaTVA = '';
  3236.                             $tauxTva = 0;
  3237.                         }
  3238.                         $codeComptaFamille = '0';
  3239.                         $familleCompta = $societe->getFamilleComptaFraisPort();
  3240.                         //$familleCompta = $ac->getArticle()->getFamilleCompta();
  3241.                         if(is_object($familleCompta)){
  3242.                             $famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
  3243.                                                                             'compta'=>$compta
  3244.                                     ));
  3245.                             if(is_object($famille)) $codeComptaFamille = $famille->getVente();
  3246.                         }
  3247.                         $fraisPortHT = floatval($facture->getTotalFraisPort());
  3248.                         $montantTva = $fraisPortHT*($tauxTva/100);
  3249.                         //$fraisPortHT = floatval($facture->getTotalFraisPort());
  3250.                         if ($fraisPortHT != 0){
  3251.                             if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
  3252.                                 $famillesArticle[$codeComptaFamille] += $fraisPortHT;
  3253.                             else
  3254.                                 $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  3255.                         }
  3256.                         //$montantTva = floatval($facture->getTotalFraisPort())-$fraisPortHT;
  3257.                         //$montantTva = floatval($facture->getTotalFraisPortTtc())-$fraisPortHT;
  3258.                         if ($montantTva != 0 && $facture->getAvecTaxe() == 1){
  3259.                             if (array_key_exists ( $codeComptaTVA , $tvas ))
  3260.                                 $tvas[$codeComptaTVA] += round(floatval($montantTva),2);
  3261.                             else
  3262.                                 $tvas[$codeComptaTVA] = round(floatval($montantTva),2);
  3263.                         }
  3264.                         //Frais de port supplementaire
  3265.                         $fraisPortHT = floatval($facture->getFraisPortSupplementaire());
  3266.                         $montantTva = $fraisPortHT*($tauxTva/100);
  3267.                         if ($fraisPortHT != 0){
  3268.                             if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
  3269.                                 $famillesArticle[$codeComptaFamille] += $fraisPortHT;
  3270.                             else
  3271.                                 $famillesArticle[$codeComptaFamille] = $fraisPortHT;
  3272.                         }
  3273.                         //$montantTva = floatval($facture->getFraisPortSupplementaire())-$fraisPortHT;
  3274.                         if ($montantTva != 0 && $facture->getAvecTaxe() == 1){
  3275.                             if (array_key_exists ( $codeComptaTVA , $tvas ))
  3276.                                 $tvas[$codeComptaTVA] += round(floatval($montantTva),2);
  3277.                             else
  3278.                                 $tvas[$codeComptaTVA] = round(floatval($montantTva),2);
  3279.                         }
  3280.                         foreach($tvas as $key=>$montant){
  3281.                             $equilibrage2 += $montant;
  3282.                         }
  3283.                         foreach($famillesArticle as $key=>$montant){
  3284.                             $equilibrage2 += $montant;
  3285.                         }
  3286.                         $diffEquilibrage = round($equilibrage1,2) - round($equilibrage2,2);
  3287.                         if(abs($diffEquilibrage) < 0.1){
  3288.                             if(array_key_exists($codeComptaTVA, $tvas)){
  3289.                                 $tvas[$codeComptaTVA] += $diffEquilibrage;
  3290.                             } else {
  3291.                                 $tvas[$codeComptaTVA] = $diffEquilibrage;
  3292.                             }
  3293.                             $equilibrage2 += $diffEquilibrage;
  3294.                         }
  3295.                         */
  3296.                     foreach ($tvas as $key => $montant) {
  3297.                         if ($montant != 0) {
  3298.                             //$equilibrage2 += $montant;
  3299.                             $result                = [];
  3300.                             $result['date']        = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3301.                             $result['codeJournal'] = 'VT';
  3302.                             //Recuperer le compte comptable du client
  3303.                             //$result['compte'] = $codeComptaTVA;
  3304.                             $result['compte']   = $key;
  3305.                             $result['numPiece'] = $facture->getReference();
  3306.                             if (floatval($montant) > 0) {//Facture
  3307.                                 //$result['libelle'] = 'FAC - TVA ';
  3308.                                 $result['debit']  = '';
  3309.                                 $result['credit'] = abs($montant);
  3310.                             } else {//Avoir
  3311.                                 //$result['libelle'] = 'AVOIR - TVA ';
  3312.                                 $result['debit']  = abs($montant);
  3313.                                 $result['credit'] = '';
  3314.                             }
  3315.                             $result['libelle']    = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3316.                             $result['monnaie']    = 'E';
  3317.                             $result['analytique'] = '';
  3318.                             fputcsv($handle$result$delimiter);
  3319.                             if (floatval($montant) > 0) {//Facture
  3320.                                 $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
  3321.                             } else {//Avoir
  3322.                                 $result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
  3323.                             }
  3324.                             $result['id']                        = $facture->getReference().'-'.$facture->getId();
  3325.                             $result['id2']                       = $facture->getId();
  3326.                             $ecritures[$result['codeJournal']][] = $result;
  3327.                         }
  3328.                     }
  3329.                     foreach ($famillesArticle as $key => $montant) {
  3330.                         //$equilibrage2 += $montant;
  3331.                         $result                = [];
  3332.                         $result['date']        = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3333.                         $result['codeJournal'] = 'VT';
  3334.                         //Recuperer le compte comptable du client
  3335.                         $result['compte']   = $key;
  3336.                         $result['numPiece'] = $facture->getReference();
  3337.                         if (floatval($montant) > 0) {//Facture
  3338.                             //$result['libelle'] = 'FAC - Famille article ';
  3339.                             $result['debit']  = '';
  3340.                             $result['credit'] = abs($montant);
  3341.                         } else {//Avoir
  3342.                             //$result['libelle'] = 'AVOIR - Famille article ';
  3343.                             $result['debit']  = abs($montant);
  3344.                             $result['credit'] = '';
  3345.                         }
  3346.                         $result['libelle']    = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
  3347.                         $result['monnaie']    = 'E';
  3348.                         $result['analytique'] = '';
  3349.                         fputcsv($handle$result$delimiter);
  3350.                         if (floatval($montant) > 0) {//Facture
  3351.                             $result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
  3352.                         } else {//Avoir
  3353.                             $result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
  3354.                         }
  3355.                         $result['id']                        = $facture->getReference().'-'.$facture->getId();
  3356.                         $result['id2']                       = $facture->getId();
  3357.                         $ecritures[$result['codeJournal']][] = $result;
  3358.                     }
  3359.                     if (strval(round($equilibrage12)) != strval(round($equilibrage22))) {
  3360.                         $elementsAequilibrer[] = $facture->getReference().'-'.$facture->getId();
  3361.                         $equilibrages[]        = $facture->getReference().'-id : '.$facture->getId().'-$equilibrage1 : '.$equilibrage1.'-$equilibrage2 : '.$equilibrage2;
  3362.                     }
  3363.                 }
  3364.             }
  3365.         }
  3366.         //Caisse
  3367.         if ($journal == 'ES' || $journal == '') {
  3368.             $journalCaisse $repo_compte_bancaire->findOneByLibelle('ES');
  3369.             $mvtsCaisse    $repo_mvt_caisse->getMouvementsCaisseAexporterEnCompta($date);
  3370.             foreach ($mvtsCaisse as $donnee) {
  3371.                 $exporter  false;
  3372.                 $mvtCaisse $repo_mvt_caisse->find($donnee['id']);
  3373.                 if (is_object($mvtCaisse)) {
  3374.                     if ($action == 'exporter' || $action == "exporterTxt") {
  3375.                         /*
  3376.                             $mvtCaisse->setDateTransfertCompta($dateJour);
  3377.                             $em->persist($mvtCaisse);
  3378.                              *
  3379.                              */
  3380.                         if (is_object($mvtCaisse->getReglement())) {
  3381.                             $reglement   $mvtCaisse->getReglement();
  3382.                             $codeJournal $journalCaisse->getLibelle();
  3383.                             $compte      '';
  3384.                             if (is_object($reglement->getClient())) {
  3385.                                 $compte $reglement->getClient()->getCodeComptable();
  3386.                             }
  3387.                             $numPiece $reglement->getNumPiece();
  3388.                             $libelle  $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
  3389.                         } elseif (is_object($mvtCaisse->getCompteBancaire())) {
  3390.                             $compteBancaire $mvtCaisse->getCompteBancaire();
  3391.                             $codeJournal    'ES';
  3392.                             if ($compteBancaire->getComptaCompta() != '') {
  3393.                                 $compte $compteBancaire->getComptaFond();
  3394.                             } else {
  3395.                                 $compte "58000000";
  3396.                             }
  3397.                             $numPiece 'MVTCAI'.$mvtCaisse->getId();
  3398.                             $libelle  'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
  3399.                         } else {
  3400.                             $codeJournal $journalCaisse->getLibelle();
  3401.                             $compte      $mvtCaisse->getCompta();
  3402.                             $numPiece    'MVTCAI'.$mvtCaisse->getId();
  3403.                             $libelle     $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
  3404.                         }
  3405.                         $ecrituresNonexportees[] =
  3406.                             $mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
  3407.                             .$codeJournal.'-'//$result['codeJournal']
  3408.                             .$compte.'-'//$result['compte']
  3409.                             .$numPiece.'-'//$result['numPiece']
  3410.                             .$libelle//$result['libelle']
  3411.                         ;
  3412.                         $ecrituresNonexportees[] =
  3413.                             $mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
  3414.                             .$codeJournal.'-'//$result['codeJournal']
  3415.                             .$journalCaisse->getComptaCompta().'-'//$result['compte']
  3416.                             .$numPiece.'-'//$result['numPiece']
  3417.                             .$libelle//$result['libelle']
  3418.                         ;
  3419.                         //OD
  3420.                         $reglement $mvtCaisse->getReglement();
  3421.                         if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
  3422.                             $dateTmp     $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3423.                             $codeJournal 'OD';
  3424.                             //Recuperer le compte comptable du client
  3425.                             $compte   $reglement->getClient()->getCodeComptable();
  3426.                             $numPiece $reglement->getNumPiece();
  3427.                             $libelle  'OD REG '.$reglement->getModeReglement()->getLibelle();
  3428.                             if (is_object($reglement)) {
  3429.                                 $libelle $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  3430.                             }
  3431.                             $ecrituresNonexportees[] =
  3432.                                 $dateTmp.'-'//$result['date']
  3433.                                 .$codeJournal.'-'//$result['codeJournal']
  3434.                                 .$compte.'-'//$result['compte']
  3435.                                 .$numPiece.'-'//$result['numPiece']
  3436.                                 .$libelle//$result['libelle']
  3437.                             ;
  3438.                             $dateTmp     $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3439.                             $codeJournal 'OD';
  3440.                             //Recuperer le compte comptable du client
  3441.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  3442.                                 $compte '658000';//Compte de charges
  3443.                             } else {
  3444.                                 $compte '758000';//Compte de produits divers
  3445.                             }
  3446.                             $numPiece $reglement->getNumPiece();
  3447.                             $libelle  'OD REG '.$reglement->getModeReglement()->getLibelle();
  3448.                             $ecrituresNonexportees[] =
  3449.                                 $dateTmp.'-'//$result['date']
  3450.                                 .$codeJournal.'-'//$result['codeJournal']
  3451.                                 .$compte.'-'//$result['compte']
  3452.                                 .$numPiece.'-'//$result['numPiece']
  3453.                                 .$libelle//$result['libelle']
  3454.                             ;
  3455.                         }
  3456.                     } else {
  3457.                         $result            = [];
  3458.                         $result2           = [];
  3459.                         $result['date']    = $mvtCaisse->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3460.                         $result2['date']   = $result['date'];
  3461.                         $result2['compte'] = $journalCaisse->getComptaCompta();
  3462.                         if (is_object($mvtCaisse->getReglement())) {
  3463.                             if ($journal == $journalCaisse->getLibelle()) {
  3464.                                 $exporter true;
  3465.                             }
  3466.                             $reglement             $mvtCaisse->getReglement();
  3467.                             $result['codeJournal'] = $journalCaisse->getLibelle();
  3468.                             $result['compte']      = '';
  3469.                             if (is_object($reglement->getClient())) {
  3470.                                 $result['compte'] = $reglement->getClient()->getCodeComptable();
  3471.                             }
  3472.                             $result['numPiece'] = $reglement->getNumPiece();
  3473.                             $result['libelle']  = $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
  3474.                             if ($reglement->getMontant() > 0) {
  3475.                                 $result['debit']  = '';
  3476.                                 $result['credit'] = $reglement->getMontant();
  3477.                             } else {
  3478.                                 $result['debit']  = abs($reglement->getMontant());
  3479.                                 $result['credit'] = '';
  3480.                             }
  3481.                         } elseif (is_object($mvtCaisse->getCompteBancaire())) {
  3482.                             $compteBancaire $mvtCaisse->getCompteBancaire();
  3483.                             if ($journal == $compteBancaire->getLibelle()) {
  3484.                                 $exporter true;
  3485.                             }
  3486.                             if ($journal == $journalCaisse->getLibelle()) {
  3487.                                 $exporter true;
  3488.                             }
  3489.                             //$result['codeJournal'] = $compteBancaire->getLibelle();
  3490.                             $result['codeJournal'] = 'ES';
  3491.                             if ($compteBancaire->getComptaCompta() != '') {
  3492.                                 $result['compte'] = $compteBancaire->getComptaFond();
  3493.                             } else {
  3494.                                 $result['compte'] = "58000000";
  3495.                             }
  3496.                             $result['numPiece'] = 'MVTCAI'.$mvtCaisse->getId();
  3497.                             $result['libelle']  = 'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
  3498.                             if ($mvtCaisse->getMontant() > 0) {
  3499.                                 $result['debit']  = $mvtCaisse->getMontant();
  3500.                                 $result['credit'] = '';
  3501.                             } else {
  3502.                                 $result['debit']  = '';
  3503.                                 $result['credit'] = abs($mvtCaisse->getMontant());
  3504.                             }
  3505.                         } else {
  3506.                             if ($journal == $journalCaisse->getLibelle()) {
  3507.                                 $exporter true;
  3508.                             }
  3509.                             $result['codeJournal'] = $journalCaisse->getLibelle();
  3510.                             $result['compte']      = $mvtCaisse->getCompta();
  3511.                             $result['numPiece']    = 'MVTCAI'.$mvtCaisse->getId();
  3512.                             $result['libelle']     = $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
  3513.                             if ($mvtCaisse->getEntreeSortie() == true) {
  3514.                                 $result['debit']  = $mvtCaisse->getMontant();
  3515.                                 $result['credit'] = '';
  3516.                             } else {
  3517.                                 $result['debit']  = '';
  3518.                                 $result['credit'] = $mvtCaisse->getMontant();
  3519.                             }
  3520.                         }
  3521.                         $result['monnaie']    = 'E';
  3522.                         $result['analytique'] = '';
  3523.                         if ($journal == '' || $exporter == true) {
  3524.                             fputcsv($handle$result$delimiter);
  3525.                             $result['id2']                       = $mvtCaisse->getId();
  3526.                             $ecritures[$result['codeJournal']][] = $result;
  3527.                         }
  3528.                         $result2['codeJournal'] = $result['codeJournal'];
  3529.                         $result2['numPiece']    = $result['numPiece'];
  3530.                         $result2['libelle']     = $result['libelle'];
  3531.                         $result2['debit']       = $result['credit'];
  3532.                         $result2['credit']      = $result['debit'];
  3533.                         $result2['monnaie']     = $result['monnaie'];
  3534.                         $result2['analytique']  = $result['analytique'];
  3535.                         if ($journal == '' || $exporter == true) {
  3536.                             fputcsv($handle$result2$delimiter);
  3537.                             $ecritures[$result2['codeJournal']][] = $result2;
  3538.                         }
  3539.                         //OD
  3540.                         $reglement $mvtCaisse->getReglement();
  3541.                         if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
  3542.                             $result                = [];
  3543.                             $result['date']        = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3544.                             $result['codeJournal'] = 'OD';
  3545.                             //Recuperer le compte comptable du client
  3546.                             $result['compte']   = $reglement->getClient()->getCodeComptable();
  3547.                             $result['numPiece'] = $reglement->getNumPiece();
  3548.                             $result['libelle']  = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  3549.                             if (is_object($reglement)) {
  3550.                                 $result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
  3551.                             }
  3552.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  3553.                                 $result['debit']  = '';
  3554.                                 $result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
  3555.                             } else {
  3556.                                 $result['debit']  = abs($reglement->getOperationDiverse());//Peut etre en absolu
  3557.                                 $result['credit'] = '';
  3558.                             }
  3559.                             $result['monnaie']    = 'E';
  3560.                             $result['analytique'] = '';
  3561.                             fputcsv($handle$result$delimiter);
  3562.                             $result['id2']                       = $reglement->getId();
  3563.                             $result['lien']                      = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  3564.                             $ecritures[$result['codeJournal']][] = $result;
  3565.                             $result                = [];
  3566.                             $result['date']        = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
  3567.                             $result['codeJournal'] = 'OD';
  3568.                             //Recuperer le compte comptable du client
  3569.                             if (floatval($reglement->getOperationDiverse()) > 0) {
  3570.                                 $result['compte'] = '658000';//Compte de charges
  3571.                                 $result['debit']  = abs($reglement->getOperationDiverse());
  3572.                                 $result['credit'] = '';
  3573.                             } else {
  3574.                                 $result['compte'] = '758000';//Compte de produits divers
  3575.                                 $result['debit']  = '';
  3576.                                 $result['credit'] = abs($reglement->getOperationDiverse());
  3577.                             }
  3578.                             $result['numPiece'] = $reglement->getNumPiece();
  3579.                             $result['libelle']  = 'OD REG '.$reglement->getModeReglement()->getLibelle();
  3580.                             $result['monnaie']    = 'E';
  3581.                             $result['analytique'] = '';
  3582.                             fputcsv($handle$result$delimiter);
  3583.                             $result['lien']                      = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
  3584.                             $result['id2']                       = $reglement->getId();
  3585.                             $ecritures[$result['codeJournal']][] = $result;
  3586.                         }
  3587.                     }
  3588.                 }
  3589.             }
  3590.         }
  3591.         /*
  3592.         foreach($ecritures as $journalKey => $journaux)
  3593.             foreach($journaux as $key => $ecriture){
  3594.                 $key = $ecriture["date"].'-'//$result['date']
  3595.                                     .$ecriture["codeJournal"].'-'//$result['codeJournal']
  3596.                                     .$ecriture["compte"].'-'//$result['compte']
  3597.                                     .$ecriture['numPiece'].'-'//$result['numPiece']
  3598.                                     .$ecriture['libelle'];
  3599.                 if(!array_key_exists($key, $ecrituresNonexportees)){
  3600.                     unset($ecritures[$journalKey][$key]);
  3601.                 }
  3602.             }
  3603.  *
  3604.  */
  3605.         if (count($elementsAequilibrer) > 0) {
  3606.             foreach ($elementsAequilibrer as $elementAequilibrer) {
  3607.                 foreach ($ecritures as $journalKey => $journaux) {
  3608.                     foreach ($journaux as $key => $ecriture) {
  3609.                         if (isset($ecriture['id']) && $ecriture['id'] == $elementAequilibrer) {
  3610.                             $ecritures[$journalKey][$key]['equilibrage'] = 0;
  3611.                         }
  3612.                     }
  3613.                 }
  3614.             }
  3615.         }
  3616.         if ($donnees['debits'] != '' && $action != 'visualiser') {
  3617.             $ecritures = [];
  3618.             /*
  3619.             fputcsv($handle, $ecrituresNonexportees, $delimiter);
  3620.              *
  3621.              */
  3622.             foreach ($donnees['dates'] as $key => $value) {
  3623.                 $result = [];
  3624.                 $dateTmp        date_create_from_format('d/m/Y'$donnees['dates'][$key]);
  3625.                 $result['date'] = $dateTmp->format("Y-m-d");;
  3626.                 $result['codeJournal'] = $donnees['journaux'][$key];
  3627.                 $result['compte']      = $donnees['comptes'][$key];
  3628.                 //$result['numPiece'] = $donnees['numsPiece'][$key] . '-' . $donnees['fournisseurNumerauxFacture'][$key];
  3629.                 $result['numPiece']   = $donnees['numsPiece'][$key];
  3630.                 $result['libelle']    = $donnees['libelles'][$key];
  3631.                 $result['debit']      = $donnees['debits'][$key];
  3632.                 $result['credit']     = $donnees['credits'][$key];
  3633.                 $result['monnaie']    = $donnees['monnaies'][$key];
  3634.                 $result['analytique'] = $donnees['analytiques'][$key];
  3635.                 $keyVerification $result["date"].'-'//$result['date']
  3636.                                    .$result["codeJournal"].'-'//$result['codeJournal']
  3637.                                    .$result["compte"].'-'//$result['compte']
  3638.                                    .$result['numPiece'].'-'//$result['numPiece']
  3639.                                    .$result['libelle'];
  3640.                 /*
  3641.                 fputcsv($handle, array($keyVerification), $delimiter);
  3642.  *
  3643.  */
  3644.                 if (in_array($keyVerification$ecrituresNonexportees)) {
  3645.                     fputcsv($handle$result$delimiter);
  3646.                     $result['id']                            = $donnees['ids'][$key];
  3647.                     $result['id2']                           = $donnees['ids2'][$key];
  3648.                     $result['equilibrage']                   = $donnees['equilibrages'][$key];
  3649.                     $result['fournisseurNumerauxFacture']    = $donnees['equilibrages'][$key];
  3650.                     $ecritures[$donnees['journaux'][$key]][] = $result;
  3651.                     if ($result['equilibrage'] == 0) {
  3652.                         $elementsAequilibrer[] = $result['id'];
  3653.                         //$errors = 'Certaines écritures ne sont pas équilibrées!';
  3654.                     }
  3655.                 }
  3656.             }
  3657.         }
  3658.         rewind($handle);
  3659.         $content stream_get_contents($handle);
  3660.         fclose($handle);
  3661.         if ($action == "exporter" || $action == "exporterTxt") {
  3662.             //print_r($ecritures);
  3663.             foreach ($ecritures as $journalKey => $journaux) {
  3664.                 foreach ($journaux as $key => $ecriture) {
  3665.                     if (isset($ecriture['codeJournal'])) {
  3666.                         switch ($ecriture['codeJournal']) {
  3667.                             case 'ES':
  3668.                                 $objet $repo_mvt_caisse->find($ecriture['id2']);
  3669.                                 if (is_object($objet)) {
  3670.                                     $objet->setDateTransfertCompta($dateJour);
  3671.                                 }
  3672.                                 break;
  3673.                             case 'VT':
  3674.                                 $objet $repo_factures->find($ecriture['id2']);
  3675.                                 if (is_object($objet)) {
  3676.                                     $objet->setDateTransfertCompta($dateJour);
  3677.                                     $objet->setBasculeComptabilite(true);
  3678.                                 }
  3679.                                 break;
  3680.                             case 'HA':
  3681.                                 $objet $repo_commandes_fournisseur->find($ecriture['id2']);
  3682.                                 if (is_object($objet)) {
  3683.                                     $objet->setDateTransfertCompta($dateJour);
  3684.                                 }
  3685.                                 break;
  3686.                             default:
  3687.                                 $objet $repo_bordereau->find($ecriture['id2']);
  3688.                                 if (is_object($objet)) {
  3689.                                     $objet->setDateTransfertCompta($dateJour);
  3690.                                 }
  3691.                                 break;
  3692.                         }
  3693.                         if (is_object($objet)) {
  3694.                             $em->persist($objet);
  3695.                         }
  3696.                         /*
  3697.                         $mvtCaisse = $repo_mvt_caisse->find()
  3698.                         $mvtCaisse->setDateTransfertCompta($dateJour);
  3699.                         $em->persist($mvtCaisse);
  3700.                          *
  3701.                          */
  3702.                     }
  3703.                 }
  3704.             }
  3705.             $em->flush();
  3706.         }
  3707.         if ($action == "exporter") {
  3708.             $filename 'export_compta_'.date_format($date'Ymd_hms').'.csv';
  3709.             //$em->flush();
  3710.             return new Response($content200, [
  3711.                 'Content-Type'        => 'application/force-download; charset=ISO-8859-1',
  3712.                 'Content-Disposition' => 'attachment; filename="'.$filename.'"',
  3713.             ]);
  3714.             /*
  3715.                 $url = $this->generateUrl('dtc_export_vers_compta');
  3716.                 return new JsonResponse(array('rendu'=>'','valide'=>'1','url'=>$url), 200, array('Content-Type'=>'application/json'));
  3717.                  *
  3718.                  */
  3719.         } elseif ($action == "exporterTxt") {
  3720.             $filename 'export_compta_'.date_format($date'Ymd_hms').'.txt';
  3721.             //$em->flush();
  3722.             //$url = $this->generateUrl('dtc_export_vers_compta',array(), true);
  3723.             //$this->redirectToRoute('dtc_export_vers_compta');
  3724.             return new Response($content200, [
  3725.                 'Content-Type'        => 'application/force-download; charset=ISO-8859-1',
  3726.                 'Content-Disposition' => 'attachment; filename="'.$filename.'"',
  3727.                 //'Refresh' => "2;url=".$url
  3728.                 //'Location' => $url
  3729.             ]);
  3730.         } else {
  3731.             if (is_file($file)) {
  3732.                 unlink($file);
  3733.             }
  3734.             if (count($elementsAequilibrer) > 0) {
  3735.                 $errors 'Certaines écritures ne sont pas equilibrées.';
  3736.                 $this->addFlash(
  3737.                     'warning',
  3738.                     $errors
  3739.                 );
  3740.             }
  3741.             return $this->render('Export/Comptabilite/index.html.twig', [
  3742.                 'ecritures'           => $ecritures,
  3743.                 'journal'             => $journal,
  3744.                 'action'              => $action,
  3745.                 'date'                => $date,
  3746.                 'comptesBancaires'    => $comptesBancaires,
  3747.                 'elementsAequilibrer' => $elementsAequilibrer,
  3748.                 'equilibrages'        => $equilibrages,
  3749.                 'errors'              => $errors,
  3750.             ]);
  3751.         }
  3752.         /*
  3753.         } else {
  3754.             return $this->render('Export/Comptabilite/index.html.twig', array('date'=>$date, 'comptesBancaires'=>$comptesBancaires));
  3755.         }
  3756.              *
  3757.              */
  3758.     }
  3759. }