<?php
namespace App\Controller\Export;
use App\Entity\Adresses\Adresse;
use App\Entity\Articles\Article;
use App\Entity\Articles\ConditionAchat;
use App\Entity\Articles\ConditionVente;
use App\Entity\Articles\FamilleComptaCompta;
use App\Entity\Articles\Marque;
use App\Entity\Articles\MouvementStock;
use App\Entity\Clients\Categorie;
use App\Entity\Clients\Client;
use App\Entity\Export\Export;
use App\Entity\Export\Export_champs_exportables;
use App\Entity\Export\Export_Entity_exportable;
use App\Entity\FO\CompteBancaire;
use App\Entity\FO\Societe;
use App\Entity\Fournisseurs\Fournisseur;
use App\Entity\GestionComerciale\Acompte;
use App\Entity\GestionComerciale\Bordereau;
use App\Entity\GestionComerciale\CodeClientCommande;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\CommandeFournisseur;
use App\Entity\GestionComerciale\MouvementCaisse;
use App\Entity\MarketPlace\ArticleMarketPlace;
use App\Entity\MarketPlace\CompteMarketPlace;
use App\Entity\Rangements\Emplacement;
use App\Entity\Taxes\Taxe;
use App\Entity\Utilisateur\Contact;
use App\Entity\Vehicules\Type;
use App\Form\Adresses\AdresseExportType;
use App\Form\Articles\ArticleEquivalenceExportType;
use App\Form\Articles\ArticleExportType;
use App\Form\Articles\ConditionAchatExportType;
use App\Form\Articles\ConditionVenteExportType;
use App\Form\Articles\MouvementStockExportType;
use App\Form\Clients\CategorieExportType;
use App\Form\Clients\CategorieType;
use App\Form\Clients\ClientType;
use App\Form\Export\ExportEntityType;
use App\Form\Fournisseurs\FournisseurType;
use App\Form\GestionComerciale\SuggestionCommandeFournisseurExportType;
use App\Form\MarketPlace\ArticleMarketPlaceExportType;
use App\Form\Rangements\EmplacementExportType;
use App\Form\Utilisateur\ContactExportType;
use App\Form\Vehicules\VehiculeExportType;
use App\Library\Datatable\Util\Datatable;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Process\Process;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class EntityController extends AbstractController
{
/**
* @Route("/export/entity/{name}", name="dtc_export_entity")
*/
public function indexAction(Request $request, $name, EntityManagerInterface $em, TranslatorInterface $translator, string $kernelPath)
{
$utilisateur = $this->getUser();
$typesUtilisateur = $utilisateur->getTypesUtilisateur();
$entities = $em->getRepository(Export_Entity_exportable::class)->findBy([], ["name" => "asc"]);
$repo_fournisseur = $em->getRepository(Fournisseur::class);
$repo_marque = $em->getRepository(Marque::class);
$repo_compte_market_place = $em->getRepository(CompteMarketPlace::class);
//$champs = $em->getRepository('DTCExportBundle:Export_champs_exportables')->findByEntityAndTypes($name, $typesUtilisateur);
$donnees = [];
$compteMarketPlace = $repo_compte_market_place->findBy(["statut" => true], ["libelle" => "ASC"]);
$champsSelectionnes = [];
if ($request->getMethod() === 'POST') {
$champsSelectionnes = $request->request->get('champs');
$post = $request->request->all();
$entity = $request->request->get('entityHidden');
$format = $request->request->get('formatHidden');
$entityName = $request->request->get('entityName');
if (count($champsSelectionnes) == 0) {
$this->addFlash('warning', $translator->trans('Merci de sélectionnez au moins un champs.'));
} else {
$export = new Export();
$export->setUtilisateur($utilisateur);
$export->setFormat($format);
$export->setExecute(0);
$export->setEntityName($entityName);
$export->setEntity($entity);
$fournisseurId = $request->request->get('fournisseurId');
if ($fournisseurId != '') {
$fournisseur = $repo_fournisseur->find($fournisseurId);
if (is_object($fournisseur)) {
$export->setFournisseur($fournisseur);
}
}
$marqueId = $request->request->get('marqueId');
if ($marqueId != '') {
$marque = $repo_marque->find($marqueId);
if (is_object($marque)) {
$export->setMarque($marque);
}
}
$compteMarketPlaceId = $request->request->get('compteMarketPlaceId');
if ($compteMarketPlaceId != '' && $entity == ArticleMarketPlace::class) {
$cpteMarketPlace = $repo_compte_market_place->find($compteMarketPlaceId);
if (is_object($cpteMarketPlace)) {
$export->setCompteMarketPlace($cpteMarketPlace);
}
}
$articlesComposes = $request->request->get('articleComposeHidden');
$defautCondHaHidden = $request->request->get('defautCondHaHidden');
$articleArchiveHidden = $request->request->get('articleArchiveHidden');
if ($articlesComposes != '' or $defautCondHaHidden != '') {
$export->setArticlesComposes(true);
}
if ($articleArchiveHidden != '') {
$export->setArchive(true);
}
foreach ($champsSelectionnes as $champsSelectionne) {
$champsExport = new Export_champs_exportables();
$champsExport->setName($champsSelectionne);
$export->addChampsAexporter($champsExport);
}
if ( ! empty($request->request->get('date_debut_hidden'))) {
$export->setDateFiltreDebut((\DateTime::createFromFormat('d/m/Y', $request->request->get('date_debut_hidden')))->setTime(0, 0, 0));
}
if ( ! empty($request->request->get('date_fin_hidden'))) {
$export->setDateFiltreFin((\Datetime::createFromFormat('d/m/Y', $request->request->get('date_fin_hidden')))->setTime(23, 59, 59));
}
$em->persist($export);
$em->flush();
$process = new Process(['php', 'bin/console', 'export:creer', $export->getId()]);
$process->setWorkingDirectory($kernelPath);
$process->setOptions(['create_new_console' => true]);
$process->start();
// dd($process->getErrorOutput(), $process->getOutput(), $process->getExitCode());
$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......'));
return $this->redirectToRoute('dtc_export_lister');
//$this->redirectToRoute('dtc_export_entity', array('name'=>$entityName));
}
}
return $this->render('Export/Entity/index.html.twig', [
'name' => $name,
'entityName' => $name,
'compteMarketPlace' => $compteMarketPlace,
//'champs'=>$champs,
'entities' => $entities,
'donnees' => $donnees,
//'form' => $form->createView(),
'champsSelectionnes' => $champsSelectionnes,
]);
}
/**
* @Route("/export/entity/ajouter", name="dtc_export_entity_exportable_ajouter")
*/
public function ajouterAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$utilisateur = $this->getUser();
$entity = new Export_Entity_exportable();
$date = new \DateTime();
$entity->setDateCreation($date);
$entity->setUtilisateur($utilisateur);
$form = $this->createForm(ExportEntityType::class, $entity);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->persist($entity);
$em->flush();
$id = $entity->getId();
$this->addFlash(
'notice',
$translator->trans('Champs ajouté avec succès!')
);
return $this->redirectToRoute('dtc_export_entity_exportable_modifier', ['id' => $id]);
} else {
$errors = $validator->validate($entity);
}
}
return $this->render('Export/Entity/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
}
/**
* @Route("/export/entity/modifier/{id}", name="dtc_export_entity_exportable_modifier")
*/
public function modifierAction(Request $request, $id, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$repoEntity = $em->getRepository(Export_Entity_exportable::class);
$entity = $repoEntity->find($id);
//$entity = $em->getRepository(Export_Entity_exportable::class)->find($id_entity);
$utilisateur = $this->getUser();
$form = $this->createForm(ExportEntityType::class, $entity);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$date = new \DateTime();
$entity->setDateMaj($date);
$entity->setUtilisateur($utilisateur);
$em->persist($entity);
$em->flush();
$id = $entity->getId();
$this->addFlash(
'notice',
$translator->trans('Champs mis à jour avec succès!')
);
return $this->redirectToRoute('dtc_export_entity_exportable_modifier', ['id' => $id]);
} else {
$errors = $validator->validate($entity);
}
}
return $this->render('Export/Entity/ajouter.html.twig', ['maj' => true, 'form' => $form->createView(), 'errors' => $errors]);
}
/**
* @Route("/export/entities", name="dtc_export_entities_exportables_lister")
*/
public function listerAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
$this->datatable($datatable, $translator);
return $this->render('Export/Entity/lister.html.twig', []);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setEntity(Export_Entity_exportable::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Entité") => "x.name",
$translator->trans("Type utilisateur") => "tu.libelle",
$translator->trans("Namespace") => 'x.namespace',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.typeUtilisateur', 'tu', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setRenderers(
[
4 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_export_entity_exportable_modifier',
//'dupliquer_route' => 'dtc_article_dupliquer'
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2]);
return $datatable;
}
/**
* @Route("/export/entities/grid", name="dtc_export_entities_exportables_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($datatable, $translator)->execute();
}
public function ExportProcess($champs, $entity, $entityName = 'entity', $format, EntityManagerInterface $em)
{
set_time_limit(0);
$resultats = $this->getJoin($champs);
$entityJoin = '';
foreach ($resultats[0] as $resultat) {
$entityJoin .= ' LEFT JOIN '.$resultat;
}
$select = '';
foreach ($resultats[1] as $resultat) {
if ($select != '') {
$select .= ', ';
}
$select .= $resultat;
}
$where = '';
//Requete
$requete = 'SELECT '.$select.'
FROM '.$entity.' e
'.$entityJoin.$where;
//echo $format;
$query = $em->createQuery($requete);
switch ($format) {
case 'xml':
$retour = $this->exportXml($query, $entityName);
return $retour;
break;
case 'csv':
$retour = $this->exportCsv($query, $entityName, $resultats[2]);
return $retour;
break;
case 'json':
$retour = $this->exportJson($query, $entityName);
return $retour;
break;
}
}
/**
* @Route("/export/entity/download", name="dtc_export_entity_download")
*/
public function exportAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
set_time_limit(0);
$donnees = [];
if ($request->getMethod() == 'POST') {
$donnees['entity'] = $request->request->get('entity');
$donnees['format'] = $request->request->get('format');
$donnees['champs'] = $request->request->get('champs');
$donnees['name'] = $request->request->get('entityName');
}
if ( ! array_key_exists('champs', $donnees) or $donnees['champs'] == '') {
$this->addFlash(
'warning',
$translator->trans('Merci de choisir au moins un champs à exporter!')
);
return $this->redirectToRoute('dtc_export_entity', ['name' => $donnees['name']]);
}
$champs2 = json_decode($donnees['champs']);
$resultats = $this->getJoin($champs2);
$entityJoin = '';
foreach ($resultats[0] as $resultat) {
/*
if ($entityJoin == '' && $resultat!='')
$entityJoin .= ' LEFT JOIN ';
elseif ($resultat!='')
$entityJoin .= ', ';
$entityJoin .= $resultat;
*
*/
$entityJoin .= ' LEFT JOIN '.$resultat;
}
$select = '';
foreach ($resultats[1] as $resultat) {
if ($select != '') {
$select .= ', ';
}
$select .= $resultat;
}
$where = '';
//Requete
$query = $em->createQuery(
'SELECT '.$select.'
FROM '.$donnees['entity'].' e
'.$entityJoin.$where
)
// ORDER BY p.price ASC
// WHERE p.price > :price
//->setParameter('price', '1');
;
switch ($donnees['format']) {
case 'xml':
$retour = $this->exportXml($query, $donnees['name']);
return $retour;
break;
case 'csv':
$retour = $this->exportCsv($query, $donnees['name'], $resultats[2]);
return $retour;
break;
case 'json':
$retour = $this->exportJson($query, $donnees['name']);
return $retour;
break;
}
}
private function exportXml($query, $entity)
{
$results = $query->getResult();
$rootNode = new \SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' standalone='yes'?><items></items>");
foreach ($results as $result) {
$itemNode = $rootNode->addChild($entity);
foreach ($result as $key => $value) {
$itemNode->addChild($key, $value);
}
}
$date = new \Datetime();
$filename = date_format($date, 'Ymd_').$entity.'.xml';
return new Response($rootNode->asXML(), 200, [
'Content-Type' => 'application/force-download',
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
]);
}
private function exportCsv($query, $entity, $titresColonnes)
{
set_time_limit(0);
$file = 'export-tmp.csv';
$dir = 'Export/'.$entity.'/'.date("Y").'/'.date("m").'/'.date("d").'/';
if ( ! is_dir($dir)) {
mkdir($dir, 755, true);
}
$file = $dir.'export.csv';
if (is_file($file)) {
unlink($file);
}
//$handle = fopen('php://memory', 'r+');
$handle = fopen($file, 'w+');
$delimiter = ';';
fputcsv($handle, $titresColonnes, $delimiter);
$results = $query
->setMaxResults(50000)
->iterate();
$i = 0;
foreach ($results as $row) {
$result = $row[$i];
fputcsv($handle, $result, $delimiter);
$i++;
}
fclose($handle);
}
private function exportJson($query, $entity)
{
$results = $query->getResult();
$date = new \Datetime();
$filename = date_format($date, 'Ymd_').$entity.'.json';
$response = new JsonResponse(['Entity' => $results]);
//$response->headers->set('Content-Type', 'application/json');
$response->headers->set('Content-Type', 'application/force-download');
$response->headers->set('Content-Disposition', 'attachment; filename="'.$filename.'"');
return $response;
}
private function getJoin($champs)
{
$entityJoin = [];
//$entityJoin['autres']='';
$select = [];
//$select['autres']='';
$titresColonnes = [];
foreach ($champs as $champ) {
$result = trim(preg_replace('#([A-Z])#', '_$1', $champ));
$key = strtolower($result).'_id';
switch ($champ) {
case 'marque':
//$select[$key] = 'e.'.$key;
$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
$titresColonnes[] = $key;
break;
case 'images':
//$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
//$titresColonnes[] = $key;
break;
case 'uniteMesure':
$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
$titresColonnes[] = $key;
break;
case 'familleCompta' :
$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
$titresColonnes[] = $key;
break;
case 'type' :
$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
$titresColonnes[] = $key;
break;
case 'regleTaxe' :
$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
$titresColonnes[] = $key;
break;
case 'categorieRemiseArticle' :
$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
$titresColonnes[] = $key;
break;
case 'articleRemplacement' :
$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
$titresColonnes[] = $key;
break;
case 'emplacements' :
//$select[$key] = '(e.'.$champ.') as '.$champ.'_id';
//$titresColonnes[] = $key;
break;
default:
$key = $champ;
$select[$key] = 'e.'.$champ;
$titresColonnes[] = $key;
}
}
return [$entityJoin, $select, $titresColonnes];
}
/**
* @Route("/export/entity/{name}/champs", name="dtc_export_entity_champs")
*/
public function champsAction(Request $request, $name, $champsSelectionnes = [], $isSelectionne = false)
{
$utilisateur = $this->getUser();
$typesUtilisateur = $utilisateur->getTypesUtilisateur();
//$entities = $em->getRepository(Export_Entity_exportable::class)->findAll();
//$champs = $em->getRepository('DTCExportBundle:Export_champs_exportables')->findByEntityAndTypes($name, $typesUtilisateur);
//$donnees = array();
switch ($name) {
case 'prixNetAchat':
$objet = new ConditionAchat();
$form = $this->createForm(ConditionAchatExportType::class, $objet);
break;
case 'equivalence':
$article = new Article();
$article->setLibelle('test');
$form = $this->createForm(ArticleEquivalenceExportType::class, $article);
break;
case 'offres':
$articleMarketPlace = new ArticleMarketPlace();
$articleMarketPlace->setLibelle('test');
$form = $this->createForm(ArticleMarketPlaceExportType::class, $articleMarketPlace);
break;
case 'article':
$article = new Article();
$article->setLibelle('test');
$form = $this->createForm(ArticleExportType::class, $article);
break;
case 'vehicule':
$vehicule = new Type();
$vehicule->setLibelle('test');
$form = $this->createForm(VehiculeExportType::class, $vehicule);
break;
case 'categorie':
$objet = new Categorie();
$form = $this->createForm(CategorieType::class, $objet);
break;
case 'client':
$objet = new Client();
$form = $this->createForm(ClientType::class, $objet);
break;
case 'fournisseur':
$objet = new Fournisseur();
$form = $this->createForm(FournisseurType::class, $objet);
break;
case 'CommandeFournisseur':
$objet = new CommandeFournisseur();
$form = $this->createForm(SuggestionCommandeFournisseurExportType::class, $objet);
break;
case 'conditionAchat':
$objet = new ConditionAchat();
$form = $this->createForm(ConditionAchatExportType::class, $objet);
break;
case 'conditionVente':
$objet = new ConditionVente();
$form = $this->createForm(ConditionVenteExportType::class, $objet);
break;
case 'exportCorrectionPump':
$objet = new ConditionAchat();
$form = $this->createForm(ConditionAchatExportType::class, $objet);
break;
case 'Contact':
$objet = new Contact();
$form = $this->createForm(ContactExportType::class, $objet);
break;
case 'categories_clients':
$objet = new Categorie();
$form = $this->createForm(CategorieExportType::class, $objet);
break;
case 'emplacementLibre':
$objet = new Emplacement();
$form = $this->createForm(EmplacementExportType::class, $objet);
break;
case 'adresses':
$objet = new Adresse();
$form = $this->createForm(AdresseExportType::class, $objet);
break;
case 'Mouvements de stock':
$objet = new MouvementStock();
$form = $this->createForm(MouvementStockExportType::class, $objet);
break;
default:
$article = new Article();
$article->setLibelle('test');
$form = $this->createForm(ArticleExportType::class, $article);
}
return $this->render(
'Export/Entity/champs.html.twig',
['form' => $form->createView(), 'champsSelectionnes' => $champsSelectionnes, 'isSelectionne' => $isSelectionne, 'name' => $name]
);
}
/**
* @Route("", name="")
*/
public function exportVersComptaOldAction(Request $request, EntityManagerInterface $em, ValidatorInterface $validator)
{
$errors = '';
$date = new \Datetime();
$interval = new \DateInterval('P1D');
$date->sub($interval);
$dateJour = new \Datetime();
$repo_bordereau = $em->getRepository(Bordereau::class);
$repo_reglements = $em->getRepository(Acompte::class);
$repo_factures = $em->getRepository(Commande::class);
$repo_tva = $em->getRepository(Taxe::class);
$repo_article = $em->getRepository(Article::class);
//$repo_article_compta = $em->getRepository('DTCArticlesBundle:ArticleCompta');
$repo_article_famille_compta_compta = $em->getRepository(FamilleComptaCompta::class);
$repo_commandes_fournisseur = $em->getRepository(CommandeFournisseur::class);
$repo_mvt_caisse = $em->getRepository(MouvementCaisse::class);
$repo_compte_bancaire = $em->getRepository(CompteBancaire::class);
$compteAmazon = $em->getRepository(CodeClientCommande::class)->find(1);
$societe = $em->getRepository(Societe::class)->find(1);
$dir = 'Export/comptabilite/'.date("Y").'/'.date("m").'/'.date("d").'/';
if ( ! is_dir($dir)) {
mkdir($dir, 755, true);
}
//$file = $dir.'export.csv';
$file = $dir.'export_compta_'.date_format($date, 'Ymd_hms').'.csv';
if (is_file($file)) {
unlink($file);
}
//$handle = fopen('php://memory', 'r+');
$handle = fopen($file, 'w+');
$header = [];
$ecritures = [];
$ecrituresEquilibrees = [];
$ecrituresNonexportees = [];
$comptesBancaires = $em->getRepository(CompteBancaire::class)->findAll();
$journal = $request->request->get('journal');
if ($request->request->get('date') != '') {
$date = date_create_from_format('d/m/Y', $request->request->get('date'));
}
$action = $request->request->get('action');
if ($action == "exporter") {
$delimiter = ';';
} else {
$delimiter = '|';
}
$donnees = [
'ids' => $request->request->get('ids'),
'ids2' => $request->request->get('ids2'),
'journaux' => $request->request->get('journaux'),
'dates' => $request->request->get('dates'),
'codesJournal' => $request->request->get('codesJournal'),
'comptes' => $request->request->get('comptes'),
'numsPiece' => $request->request->get('numsPiece'),
'libelles' => $request->request->get('libelles'),
'debits' => $request->request->get('debits'),
'credits' => $request->request->get('credits'),
'monnaies' => $request->request->get('monnaies'),
'analytiques' => $request->request->get('analytiques'),
'moyensPaiement' => $request->request->get('moyensPaiement'),
'equilibrages' => $request->request->get('equilibrages'),
'fournisseurNumerauxFacture' => $request->request->get('fournisseurNumerauxFacture'),
];
$elementsAequilibrer = [];
$equilibrages = [];
//Journal de trésorerie
//---->Reglements
$banqueEncaissements = $repo_bordereau->getBordereauxAexporterVersCompta($journal, $date);
foreach ($banqueEncaissements as $donnee) {
if ($journal == '' || $journal == $donnee['libelle']) {
if ($action == 'exporter' || $action == "exporterTxt") {
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = $donnee['libelle'];
$compte = $donnee['comptaCompta'];
$numPiece = $donnee['reference'];
$libelle = '';
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
} else {
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = $donnee['libelle'];
$result['compte'] = $donnee['comptaCompta'];
$result['numPiece'] = $donnee['reference'];
$result['libelle'] = '';
if ($donnee['total'] > 0) {
$result['debit'] = $donnee['total'];
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($donnee['total']);
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = $donnee['libelleCompta'];
fputcsv($handle, $result, $delimiter);
$result['lien'] = $this->generateUrl('dtc_bordereau_modifier', ['id' => $donnee['id']]);
$result['id2'] = $donnee['id'];
$ecritures[$result['codeJournal']][] = $result;
}
if ($action == 'exporter' || $action == "exporterTxt") {
if ($donnee['settlementId'] != '') {
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = $donnee['libelle'];
if (is_object($compteAmazon)) {
$compte = $compteAmazon->getCode();
$libelle = $compteAmazon->getLibelle();
} else {
$compte = 'amazon';
$libelle = 'amazon';
}
$reglements = $repo_reglements->findBy(['bordereau' => $donnee['id']]);
if (count($reglements) > 0) {
$codeClientCommande = $this->getCodeClientCommande('', $reglements[0], '');
if (is_object($codeClientCommande)) {
$compte = $codeClientCommande->getCompteComptable();
$libelle = $codeClientCommande->getLibelle();
} else {
$compte = $this->getCodeComptableClient('', $reglements[0], '');
}
}
$numPiece = '';
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
} else {
//Recuperer chaque reglement
$reglements = $repo_reglements->findBy(['bordereau' => $donnee['id']]);
foreach ($reglements as $reglement) {
if ($journal == '' || $journal == $donnee['libelle']) {
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = $donnee['libelle'];
//Recuperer le compte comptable du client
//$compte = $reglement->getClient()->getCodeComptable();
$numPiece = $reglement->getNumPiece();
$libelle = '';
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', $reglement, '');
if (is_object($codeClientCommande)) {
$compte = $codeClientCommande->getCompteComptable();
$libelle = $codeClientCommande->getLibelle();
} else {
$compte = $this->getCodeComptableClient('', $reglement, '');
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
//OD
if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
//Recuperer le compte comptable du client
//$compte = $reglement->getClient()->getCodeComptable();
//Recuperer le compte comptable du client ou de sa categorie
$compte = $this->getCodeComptableClient('', $reglement, '');
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement->getClient())) {
$libelle = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$compte = '658000';//Compte de charges
} else {
$compte = '758000';//Compte de produits divers
}
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
}
}
} else {
if ($donnee['settlementId'] != '') {
if (is_object($compteAmazon)) {
$result['compte'] = $compteAmazon->getCode();
$result['libelle'] = $compteAmazon->getLibelle();
} else {
$result['compte'] = 'amazon';
$result['libelle'] = 'amazon';
}
$reglements = $repo_reglements->findBy(['bordereau' => $donnee['id']]);
if (count($reglements) > 0) {
$codeClientCommande = $this->getCodeClientCommande('', $reglements[0], '');
if (is_object($codeClientCommande)) {
$result['compte'] = $codeClientCommande->getCompteComptable();
$result['libelle'] = $codeClientCommande->getLibelle();
} else {
$result['compte'] = $this->getCodeComptableClient('', $reglements[0], '');
}
}
$result['numPiece'] = '';
if ($donnee['totalReglements'] > 0) {
$result['debit'] = '';
$result['credit'] = abs($donnee['totalReglements']);
} else {
$result['debit'] = abs($donnee['totalReglements']);
$result['credit'] = '';
}
$ecritures[$result['codeJournal']][] = $result;
if ($donnee['autresCharges'] > 0) {
$result['debit'] = '';
$result['credit'] = abs($donnee['autresCharges']);
} else {
$result['debit'] = abs($donnee['autresCharges']);
$result['credit'] = '';
}
$result['analytique'] = '';
//$result['moyenPaiement'] = 'test';
$ecritures[$result['codeJournal']][] = $result;
} else {
//Recuperer chaque reglement
$reglements = $repo_reglements->findBy(['bordereau' => $donnee['id']]);
foreach ($reglements as $reglement) {
if ($journal == '' || $journal == $donnee['libelle']) {
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = $donnee['libelle'];
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = '';
if ( ! is_object($reglement->getModeReglement())) {
//echo "<div>R".$reglement->getId()."</div>";
//exit;
} else {
$result['libelle'] = 'REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement->getClient())) {
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
}
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', $reglement, '');
if (is_object($codeClientCommande)) {
$result['compte'] = $codeClientCommande->getCompteComptable();
$result['libelle'] = $codeClientCommande->getLibelle();
} else {
$result['compte'] = $this->getCodeComptableClient('', $reglement, '');
}
if (floatval($reglement->getMontant()) > 0) {
$result['debit'] = '';
$result['credit'] = abs($reglement->getMontant());//Peut etre en absolu
} else {
$result['debit'] = abs($reglement->getMontant());//Peut etre en absolu
$result['credit'] = '';
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
if (is_object($reglement->getModeReglement())) {
$result['moyenPaiement'] = $reglement->getModeReglement()->getLibelleCompta();
}
fputcsv($handle, $result, $delimiter);
if (is_object($reglement->getCommande())) {
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
} else {
$result['lien'] = '';
}
$ecritures[$result['codeJournal']][] = $result;
}
//OD
if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement->getClient())) {
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', $reglement, '');
if (is_object($codeClientCommande)) {
$result['compte'] = $codeClientCommande->getCompteComptable();
$result['libelle'] = $codeClientCommande->getLibelle();
} else {
$result['compte'] = $this->getCodeComptableClient('', $reglement, '');
}
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
} else {
$result['debit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
$result['credit'] = '';
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
if (is_object($reglement->getCommande())) {
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
} else {
$result['lien'] = '';
}
$ecritures[$result['codeJournal']][] = $result;
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['compte'] = '658000';//Compte de charges
$result['debit'] = abs($reglement->getOperationDiverse());
$result['credit'] = '';
} else {
$result['compte'] = '758000';//Compte de produits divers
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());
}
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
/*
if(is_object($reglement->getClient()))
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
*
*/
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
if (is_object($reglement->getCommande())) {
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
} else {
$result['lien'] = '';
}
$ecritures[$result['codeJournal']][] = $result;
}
}
} //exit;
}
}
}
//Journal des achats
if ($journal == 'AC' || $journal == '') {
//$facturesFids = $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date);
$facturesF = $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date)->getQuery()->getResult();
$taxe = $repo_tva->find(1);//20%
//foreach($facturesFids as $factureFid){
foreach ($facturesF as $factureF) {
//Facture dans une autre devise
$tauxChange = floatval($factureF->getTauxChange());
if ($tauxChange == 0) {
$tauxChange = 1;
}
//$montant = floatval($factureF->getTotalTtc())*$tauxChange;
$equilibrage2 = 0;
$montantTotal = 0;
$fournisseur = $factureF->getFournisseur();
if ($factureF->getFournisseurLibelle() != '') {
$libelle = $factureF->getFournisseurLibelle();
} else {
$libelle = $fournisseur->getLibelle();
}
$tvas = [];
$famillesArticle = [];
$comptaObjet = $factureF->getFournisseur()->getCompta();
if (is_object($comptaObjet)) {
$compta = $comptaObjet->getId();
} else {
$compta = 11;
}//FRANCE
//Frais de port
$tauxTva = $factureF->getTauxTvaFraisPort();
if ($tauxTva == '') {
$tauxTva = 0;
}
$tva = $repo_tva->findOneBy(['taux' => $tauxTva]);
if (is_object($tva)) {
$codeComptaTVA = strval($tva->getComptaAchat());
} else {
$codeComptaTVA = '';
}
$codeComptaFamille = '607';
$familleCompta = $societe->getFamilleComptaFraisPort();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),//Article port
'compta' => $compta,
'taxe' => $taxe,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
//Frais de port supplementaire
$fraisPortHT = floatval($factureF->getFraisPortSupplementaire());
if ($fraisPortHT != 0) {
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
$montantTva = floatval($factureF->getTotalTvaFraisPort());
if ( ! (floatval($montantTva) == 0 || floatval($montantTva) == '')) {
$tvas[$codeComptaTVA] = floatval($montantTva);
}
//Ajout de l'arrondi
$arrondiTVA = $factureF->getArrondiTva();
if ($arrondiTVA != '') {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += floatval($arrondiTVA);
} else {
$tvas[$codeComptaTVA] = floatval($arrondiTVA);
}
}
//Frais fixe
$codeComptaFamille = '0';
$familleCompta = $societe->getFamilleComptaFraisFixe();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),//Article port
'compta' => $compta,
'taxe' => $taxe,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
$fraisFixe = $factureF->getFraisFixe();
if ($fraisFixe != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += $fraisFixe;
} else {
$famillesArticle[$codeComptaFamille] = $fraisFixe;
}
$tvaSurfraisFixe = $fraisFixe * $tauxTva / 100;
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += floatval($tvaSurfraisFixe);
} else {
$tvas[$codeComptaTVA] = floatval($tvaSurfraisFixe);
}
}
foreach ($factureF->getArticleCommande() as $ac) {
//TVA
$tauxTva = floatval($ac->getTva());
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneBy(['taux' => $tauxTva]);
if (is_object($tva)) {
'tva trouvee';
}
if (is_object($tva)) {
$codeComptaTVA = $tva->getComptaAchat();
}
$key = strval($codeComptaTVA);
if ($montantTva != 0) {
if (array_key_exists($key, $tvas)) {
$tvas[$key] += floatval($montantTva);
} else {
$tvas[$key] = floatval($montantTva);
}
}
//Famille d'articles
$codeComptaFamille = '607';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
'taxe' => $taxe,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
$montantHt = $ac->getTotalHt(3);
//prendre en compte le coefficient de conditionnement
$coefficientConditionnement = $ac->getCoefficientConditionnement();
if ($coefficientConditionnement != 0) {
$montantHt = $montantHt / $coefficientConditionnement;
}
if ($montantHt != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
//Frais annexes
$montantHt = $ac->getFraisAnnexes();
if ($montantHt != 0) {
$codeComptaFamille = '0';
//$familleCompta = $ac->getArticle()->getFamilleCompta();
$familleCompta = $societe->getFamilleComptaFraisAnnexes();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
'taxe' => $taxe,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
}
if ($action == 'exporter' || $action == "exporterTxt") {
foreach ($tvas as $key => $montant) {
$dateTmp = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'AC';
//Recuperer le compte comptable du client
$compte = $key;//$codeComptaTVA;
//$result['numPiece'] = $factureF->getReference();
$numPiece = $factureF->getfournisseurNumeroFacture();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
foreach ($famillesArticle as $key => $montant) {
$dateTmp = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'AC';
//Recuperer le compte comptable du client
$compte = $key;
//$result['numPiece'] = $factureF->getReference();
$numPiece = $factureF->getfournisseurNumeroFacture();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
$dateTmp = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'AC';
//Recuperer le compte comptable du client
$compte = $fournisseur->getCodeComptable();
$numPiece = $factureF->getfournisseurNumeroFacture();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
} else {
if ($journal == '' || $journal == 'AC') {
foreach ($tvas as $key => $montant) {
$montant = round($montant * $tauxChange, 2);
$montantTotal += $montant;
$result = [];
$result['date'] = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'AC';
//Recuperer le compte comptable du client
$result['compte'] = $key;//$codeComptaTVA;
//$result['numPiece'] = $factureF->getReference();
$result['numPiece'] = $factureF->getfournisseurNumeroFacture();
//$result['libelle'] = 'FAC Fourn - TVA ';
$result['libelle'] = $libelle;
if (floatval($montant) > 0) {
$result['debit'] = abs($montant);
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($montant);
}
$equilibrage2 += $montant;
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
$result['fournisseurNumeroFacture'] = $factureF->getfournisseurNumeroFacture();
$result['lien'] = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
$result['id2'] = $factureF->getId();
$ecritures[$result['codeJournal']][] = $result;
}
foreach ($famillesArticle as $key => $montant) {
$montant = round($montant * $tauxChange, 2, PHP_ROUND_HALF_DOWN);
$montantTotal += $montant;
$result = [];
$result['date'] = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'AC';
//Recuperer le compte comptable du client
$result['compte'] = $key;
//$result['numPiece'] = $factureF->getReference();
$result['numPiece'] = $factureF->getfournisseurNumeroFacture();
//$result['libelle'] = 'FAC Fourn - Famille article ';
$result['libelle'] = $libelle;
if (floatval($montant) > 0) {
$result['debit'] = abs($montant);
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($montant);
}
$equilibrage2 += $montant;
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
$result['fournisseurNumeroFacture'] = $factureF->getfournisseurNumeroFacture();
$result['lien'] = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
$result['id2'] = $factureF->getId();
$ecritures[$result['codeJournal']][] = $result;
}
//$fournisseur = $factureF->getFournisseur();
if ($fournisseur->getDivers() == 1 && is_object($fournisseur->getParent())) {
$fournisseur = $fournisseur->getParent();
}
$result = [];
$result['date'] = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'AC';
//Recuperer le compte comptable du client
$result['compte'] = $fournisseur->getCodeComptable();
//$result['numPiece'] = $factureF->getReference();
$result['numPiece'] = $factureF->getfournisseurNumeroFacture();
$result['libelle'] = $libelle;
if ($montantTotal > 0) {
$result['debit'] = '';
$result['credit'] = abs($montantTotal);
} else {
$result['debit'] = abs($montantTotal);
$result['credit'] = '';
}
$equilibrage1 = $montantTotal;
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
$result['fournisseurNumeroFacture'] = $factureF->getfournisseurNumeroFacture();
$result['lien'] = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
$result['id2'] = $factureF->getId();
$ecritures[$result['codeJournal']][] = $result;
}
if (strval($equilibrage1) != strval($equilibrage2)) {
$elementsAequilibrer[] = $factureF->getReference().'-'.$factureF->getId();
}
}
}
}
//Journal des ventes
if ($journal == 'VE' || $journal == '') {
$ventes = $repo_factures->getFacturesEtAvoirsAtransfererEnCompta($date);
foreach ($ventes as $factureId) {
$equilibrage2 = 0;
$facture = $repo_factures->find($factureId);
if ($facture->getAvecTaxe() == 0) {
$montant = floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
$taxe = $repo_tva->find(6);//TVA à 0
} else {
$montant = floatval($facture->getTotalTtc());
$taxe = $repo_tva->find(1);//TVA à 20%
}
$equilibrage1 = $montant;
$tvas = [];
$famillesArticle = [];
$comptaObjet = $facture->getClient()->getCompta();
if (is_object($comptaObjet)) {
$compta = $comptaObjet->getId();
} else {
$compta = 11;
}//FRANCE
$codeClientCommande = $facture->getCodeClientCommande();
if (is_object($codeClientCommande)) {
$compta = $codeClientCommande->getCompta()->getId();
}
//test si c'est une facture multi bl
if ($facture->getMultiBl() == 1) {
$bls = $repo_factures->findByFacture($facture);
foreach ($bls as $bl) {
foreach ($bl->getArticleCommande() as $ac) {
if ($bl->getAvecTaxe() == 1) {
//TVA
$tauxTva = $ac->getTva();
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneByTaux($tauxTva);
if (is_object($tva)) {
$codeComptaTVA = $tva->getComptaVente();
}
$key = strval($codeComptaTVA);
if (array_key_exists($key, $tvas)) {
$tvas[$key] += floatval($montantTva);
} else {
$tvas[$key] = floatval($montantTva);
}
}
//Famille d'articles
$codeComptaFamille = '707';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
'taxe' => $taxe,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getVente();
}
}
$montantHt = $ac->getTotalHt();
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
}
} else {
foreach ($facture->getArticleCommande() as $ac) {
if ($facture->getAvecTaxe() == 1) {
//TVA
$tauxTva = $ac->getTva();
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneByTaux($tauxTva);
if (is_object($tva)) {
$codeComptaTVA = $tva->getComptaVente();
}
$key = strval($codeComptaTVA);
if (array_key_exists($key, $tvas)) {
$tvas[$key] += floatval($montantTva);
} else {
$tvas[$key] = floatval($montantTva);
}
}
//Famille d'articles
$codeComptaFamille = '707';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
'taxe' => $taxe,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getVente();
}
}
$montantHt = $ac->getTotalHt();
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
}
//Frais de port
if (is_object($facture->getClient()) && is_object($facture->getClient()->getCompta()) && $facture->getClient()->getCompta()->getId() != 1)// non Taxable
{
$tva = $repo_tva->find(6);
}//Aucune taxe
else {
$tva = $repo_tva->find(1);
}//tva à 20%
if (is_object($tva)) {
$tauxTva = $tva->getTaux();
$codeComptaTVA = strval($tva->getComptaVente());
} else {
$codeComptaTVA = '';
$tauxTva = 0;
}
$codeComptaFamille = '0';
//retrouver la famille compta compta en fonction du pays, de la tva et du transporteur
$transporteur = $facture->getTransporteur();
if (is_object($transporteur)) {
$familleCompta = $transporteur->getFamilleCompta();
}
$tauxTva = $facture->getTauxTvaFraisPort();
//Pas de tva sur frais de port pour les commandes amazon
//if($facture->getCompteMarketPlace()->getId() == 11) $tauxTva = 0;
if ($facture->getTotalTvaFraisPort() == 0) {
$tauxTva = 0;
}
$taxeTmp = '';
if ($tauxTva != '') {
$taxeTmp = $repo_tva->findOneBy(['taux' => $tauxTva]);
}
if ( ! is_object($taxeTmp)) {
$taxeTmp = $repo_tva->find(1);
}//taxable à 20%
$codeClientCommande = $facture->getCodeClientCommande();
if (is_object($codeClientCommande)) {
$compta = $codeClientCommande->getCompta()->getId();
}
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
'taxe' => $taxeTmp,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getVente();
}
}
$fraisPortHT = floatval($facture->getTotalFraisPort());
$montantTva = $fraisPortHT * ($tauxTva / 100);
//$montantTva = $facture->getTotalTvaFraisPort();
//$fraisPortHT = floatval($facture->getTotalFraisPort());
//$codeComptaFamille = 'familleCompta '.$familleCompta->getId();
if ($fraisPortHT != 0 && $montantTva != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += $fraisPortHT;
} else {
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
}
//$montantTva = floatval($facture->getTotalFraisPort())-$fraisPortHT;
//$montantTva = floatval($facture->getTotalFraisPortTtc())-$fraisPortHT;
if ($montantTva != 0 && $facture->getAvecTaxe() == 1) {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
} else {
$tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
}
}
//Frais de port supplementaire
$fraisPortHT = floatval($facture->getFraisPortSupplementaire());
$montantTva = $fraisPortHT * ($tauxTva / 100);
if ($fraisPortHT != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += $fraisPortHT;
} else {
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
}
//frais amazon
//62781
$fraisAmazon = floatval($facture->getFraisVenteAmazon()) + floatval($facture->getFraisExpedieAmazon()) + floatval($facture->getAutresFraisTransactionAmazon()) + floatval(
$facture->getAutreAmazon()
);
if ($fraisAmazon != 0) {
if ($fraisAmazon > 0) {
$equilibrage1 += abs($fraisAmazon);
$famillesArticle['62781'] = abs($fraisAmazon);
} else {
$equilibrage1 -= abs($fraisAmazon);
$famillesArticle['62781'] = -abs($fraisAmazon);
}
}
//$famillesArticle['test1'] = $tauxTva;
//$montantTva = floatval($facture->getFraisPortSupplementaire())-$fraisPortHT;
if ($montantTva != 0 && $facture->getAvecTaxe() == 1) {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
} else {
$tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
}
}
foreach ($tvas as $key => $montant) {
$equilibrage2 += $montant;
}
foreach ($famillesArticle as $key => $montant) {
$equilibrage2 += $montant;
}
$diffEquilibrage = round($equilibrage1, 2) - round($equilibrage2, 2);
if (abs($diffEquilibrage) < 0.1) {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += $diffEquilibrage;
} else {
$tvas[$codeComptaTVA] = $diffEquilibrage;
}
$equilibrage2 += $diffEquilibrage;
}
if ($action == 'exporter' || $action == "exporterTxt") {
if ($facture->getAvecTaxe() == 0) {
$montant = floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
} else {
$montant = floatval($facture->getTotalTtc());
}
$dateTmp = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'VE';
$numPiece = $facture->getReference();
if ($montant > 0) {//Facture
//$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
} else {//Avoir
//$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
}
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', '', $facture);
if (is_object($codeClientCommande)) {
$compte = $codeClientCommande->getCompteComptable();
$libelle = $codeClientCommande->getLibelle();
} else {
$compte = $this->getCodeComptableClient('', '', $facture);
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
//frais amazon
$compte = '62781';
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
$codeClientCommande = $facture->getCodeClientCommande();
foreach ($tvas as $key => $montant) {
if ($montant != 0) {
$dateTmp = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'VE';
$compte = $key;
$numPiece = $facture->getReference();
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
if (is_object($codeClientCommande)) {
$libelle = $codeClientCommande->getLibelle();
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
}
foreach ($famillesArticle as $key => $montant) {
$dateTmp = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'VE';
//Recuperer le compte comptable du client
$compte = $key;
$numPiece = $facture->getReference();
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
if (is_object($codeClientCommande)) {
$libelle = $codeClientCommande->getLibelle();
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
} else {
if ($facture->getAvecTaxe() == 0) {
$montant = floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
} else {
$montant = floatval($facture->getTotalTtc());
}
//$equilibrage1 = $montant;
//$equilibrage2 = 0;
$result = [];
$result['date'] = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'VE';
$result['numPiece'] = $facture->getReference();
if ($montant > 0) {//Facture
//$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$result['debit'] = abs($montant);
$result['credit'] = '';
} else {//Avoir
//$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$result['debit'] = '';
$result['credit'] = abs($montant);
}
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', '', $facture);
if (is_object($codeClientCommande)) {
$result['compte'] = $codeClientCommande->getCompteComptable();
$result['libelle'] = $codeClientCommande->getLibelle();
} else {
$result['compte'] = $this->getCodeComptableClient('', '', $facture);
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
if ($montant > 0) {//Facture
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
} else {//Avoir
$result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
}
$result['id'] = $facture->getReference().'-'.$facture->getId();
$result['id2'] = $facture->getId();
$ecritures[$result['codeJournal']][] = $result;
//frais Amazon
$fraisAmazon = floatval($facture->getFraisVenteAmazon()) + floatval($facture->getFraisExpedieAmazon()) + floatval($facture->getAutresFraisTransactionAmazon()) + floatval(
$facture->getAutreAmazon()
);
if ($fraisAmazon != 0) {
if ($fraisAmazon > 0) {
$result['debit'] = abs($fraisAmazon);
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($fraisAmazon);
}
$ecritures[$result['codeJournal']][] = $result;
}
foreach ($tvas as $key => $montant) {
if ($montant != 0) {
//$equilibrage2 += $montant;
$result = [];
$result['date'] = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'VE';
//Recuperer le compte comptable du client
//$result['compte'] = $codeComptaTVA;
$result['compte'] = $key;
$result['numPiece'] = $facture->getReference();
if (floatval($montant) > 0) {//Facture
//$result['libelle'] = 'FAC - TVA ';
$result['debit'] = '';
$result['credit'] = abs($montant);
} else {//Avoir
//$result['libelle'] = 'AVOIR - TVA ';
$result['debit'] = abs($montant);
$result['credit'] = '';
}
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
if (is_object($codeClientCommande)) {
$result['libelle'] = $codeClientCommande->getLibelle();
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
if (floatval($montant) > 0) {//Facture
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
} else {//Avoir
$result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
}
$result['id'] = $facture->getReference().'-'.$facture->getId();
$result['id2'] = $facture->getId();
$ecritures[$result['codeJournal']][] = $result;
}
}
foreach ($famillesArticle as $key => $montant) {
//$equilibrage2 += $montant;
$result = [];
$result['date'] = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'VE';
//Recuperer le compte comptable du client
$result['compte'] = $key;
$result['numPiece'] = $facture->getReference();
if (floatval($montant) > 0) {//Facture
//$result['libelle'] = 'FAC - Famille article ';
$result['debit'] = '';
$result['credit'] = abs($montant);
} else {//Avoir
//$result['libelle'] = 'AVOIR - Famille article ';
$result['debit'] = abs($montant);
$result['credit'] = '';
}
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
if (is_object($codeClientCommande)) {
$result['libelle'] = $codeClientCommande->getLibelle();
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
if (floatval($montant) > 0) {//Facture
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
} else {//Avoir
$result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
}
$result['id'] = $facture->getReference().'-'.$facture->getId();
$result['id2'] = $facture->getId();
$ecritures[$result['codeJournal']][] = $result;
}
if (strval(round($equilibrage1, 2)) != strval(round($equilibrage2, 2))) {
$elementsAequilibrer[] = $facture->getReference().'-'.$facture->getId();
$equilibrages[] = $facture->getReference().'-id : '.$facture->getId().'-$equilibrage1 : '.$equilibrage1.'-$equilibrage2 : '.$equilibrage2;
}
}
}
}
//Caisse
if ($journal == 'ES' || $journal == '') {
$journalCaisse = $repo_compte_bancaire->findOneByLibelle('ES');
$mvtsCaisse = $repo_mvt_caisse->getMouvementsCaisseAexporterEnCompta($date);
foreach ($mvtsCaisse as $donnee) {
$exporter = false;
$mvtCaisse = $repo_mvt_caisse->find($donnee['id']);
if (is_object($mvtCaisse)) {
if ($action == 'exporter' || $action == "exporterTxt") {
if (is_object($mvtCaisse->getReglement())) {
$reglement = $mvtCaisse->getReglement();
$codeJournal = $journalCaisse->getLibelle();
$compte = '';
$numPiece = $reglement->getNumPiece();
$libelle = $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', $reglement, '');
if (is_object($codeClientCommande)) {
$compte = $codeClientCommande->getCompteComptable();
$libelle = $codeClientCommande->getLibelle();
} else {
$compte = $this->getCodeComptableClient('', $reglement, '');
}
} elseif (is_object($mvtCaisse->getCompteBancaire())) {
$compteBancaire = $mvtCaisse->getCompteBancaire();
$codeJournal = 'ES';
if ($compteBancaire->getComptaCompta() != '') {
$compte = $compteBancaire->getComptaFond();
} else {
$compte = "58000000";
}
$numPiece = 'MVTCAI'.$mvtCaisse->getId();
$libelle = 'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
} else {
$codeJournal = $journalCaisse->getLibelle();
$compte = $mvtCaisse->getCompta();
$numPiece = 'MVTCAI'.$mvtCaisse->getId();
$libelle = $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
}
$ecrituresNonexportees[] =
$mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
$ecrituresNonexportees[] =
$mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$journalCaisse->getComptaCompta().'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
//OD
$reglement = $mvtCaisse->getReglement();
if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
$dateTmp = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement)) {
$libelle = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', $reglement, '');
if (is_object($codeClientCommande)) {
$compte = $codeClientCommande->getCompteComptable();
$libelle = $codeClientCommande->getLibelle();
} else {
$compte = $this->getCodeComptableClient('', $reglement, '');
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
$dateTmp = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$compte = '658000';//Compte de charges
} else {
$compte = '758000';//Compte de produits divers
}
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
} else {
$result = [];
$result2 = [];
$result['date'] = $mvtCaisse->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result2['date'] = $result['date'];
$result2['compte'] = $journalCaisse->getComptaCompta();
if (is_object($mvtCaisse->getReglement())) {
if ($journal == $journalCaisse->getLibelle()) {
$exporter = true;
}
$reglement = $mvtCaisse->getReglement();
$result['codeJournal'] = $journalCaisse->getLibelle();
$result['compte'] = '';
//if(is_object($reglement->getClient())) $result['compte'] = $reglement->getClient()->getCodeComptable();
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', $reglement, '');
if (is_object($codeClientCommande)) {
$result['compte'] = $codeClientCommande->getCompteComptable();
$result['libelle'] = $codeClientCommande->getLibelle();
} else {
$result['compte'] = $this->getCodeComptableClient('', $reglement, '');
}
if ($reglement->getMontant() > 0) {
$result['debit'] = '';
$result['credit'] = $reglement->getMontant();
} else {
$result['debit'] = abs($reglement->getMontant());
$result['credit'] = '';
}
} elseif (is_object($mvtCaisse->getCompteBancaire())) {
$compteBancaire = $mvtCaisse->getCompteBancaire();
if ($journal == $compteBancaire->getLibelle()) {
$exporter = true;
}
if ($journal == $journalCaisse->getLibelle()) {
$exporter = true;
}
//$result['codeJournal'] = $compteBancaire->getLibelle();
$result['codeJournal'] = 'ES';
if ($compteBancaire->getComptaCompta() != '') {
$result['compte'] = $compteBancaire->getComptaFond();
} else {
$result['compte'] = "58000000";
}
$result['numPiece'] = 'MVTCAI'.$mvtCaisse->getId();
$result['libelle'] = 'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
if ($mvtCaisse->getMontant() > 0) {
$result['debit'] = $mvtCaisse->getMontant();
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($mvtCaisse->getMontant());
}
} else {
if ($journal == $journalCaisse->getLibelle()) {
$exporter = true;
}
$result['codeJournal'] = $journalCaisse->getLibelle();
$result['compte'] = $mvtCaisse->getCompta();
$result['numPiece'] = 'MVTCAI'.$mvtCaisse->getId();
$result['libelle'] = $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
if ($mvtCaisse->getEntreeSortie() == true) {
$result['debit'] = $mvtCaisse->getMontant();
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = $mvtCaisse->getMontant();
}
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
if ($journal == '' || $exporter == true) {
fputcsv($handle, $result, $delimiter);
$result['id2'] = $mvtCaisse->getId();
$ecritures[$result['codeJournal']][] = $result;
}
$result2['codeJournal'] = $result['codeJournal'];
$result2['numPiece'] = $result['numPiece'];
$result2['libelle'] = $result['libelle'];
$result2['debit'] = $result['credit'];
$result2['credit'] = $result['debit'];
$result2['monnaie'] = $result['monnaie'];
$result2['analytique'] = '';
$result2['moyenPaiement'] = '';
if ($journal == '' || $exporter == true) {
fputcsv($handle, $result2, $delimiter);
$ecritures[$result2['codeJournal']][] = $result2;
}
//OD
$reglement = $mvtCaisse->getReglement();
if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
$result = [];
$result['date'] = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement)) {
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
} else {
$result['debit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
$result['credit'] = '';
}
//Recuperer le compte comptable du client ou de sa categorie
$codeClientCommande = $this->getCodeClientCommande('', $reglement, '');
if (is_object($codeClientCommande)) {
$compte = $codeClientCommande->getCompteComptable();
$libelle = $codeClientCommande->getLibelle();
} else {
$compte = $this->getCodeComptableClient('', $reglement, '');
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
$result['id2'] = $reglement->getId();
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
$ecritures[$result['codeJournal']][] = $result;
$result = [];
$result['date'] = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['compte'] = '658000';//Compte de charges
$result['debit'] = abs($reglement->getOperationDiverse());
$result['credit'] = '';
} else {
$result['compte'] = '758000';//Compte de produits divers
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());
}
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
$result['monnaie'] = 'E';
$result['analytique'] = '';
$result['moyenPaiement'] = '';
fputcsv($handle, $result, $delimiter);
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
$result['id2'] = $reglement->getId();
$ecritures[$result['codeJournal']][] = $result;
}
}
}
}
}
if (count($elementsAequilibrer) > 0) {
foreach ($elementsAequilibrer as $elementAequilibrer) {
foreach ($ecritures as $journalKey => $journaux) {
foreach ($journaux as $key => $ecriture) {
if (isset($ecriture['id']) && $ecriture['id'] == $elementAequilibrer) {
$ecritures[$journalKey][$key]['equilibrage'] = 0;
}
}
}
}
}
if ($donnees['debits'] != '' && $action != 'visualiser') {
$result = ['date', 'codeJournal', 'compte', 'numPiece', 'libelle', 'debit', 'credit', 'monnaie', 'analytique', 'moyenPaiement'];
fputcsv($handle, $result, $delimiter);
$ecritures = [];
foreach ($donnees['dates'] as $key => $value) {
$result = [];
$dateTmp = date_create_from_format('d/m/Y', $donnees['dates'][$key]);
$result['date'] = $dateTmp->format("Y-m-d");;
$result['codeJournal'] = $donnees['journaux'][$key];
$result['compte'] = $donnees['comptes'][$key];
//$result['numPiece'] = $donnees['numsPiece'][$key] . '-' . $donnees['fournisseurNumerauxFacture'][$key];
$result['numPiece'] = $donnees['numsPiece'][$key];
$result['libelle'] = $donnees['libelles'][$key];
$result['debit'] = $donnees['debits'][$key];
$result['credit'] = $donnees['credits'][$key];
$result['monnaie'] = $donnees['monnaies'][$key];
$result['analytique'] = $donnees['analytiques'][$key];
$result['moyenPaiement'] = $donnees['moyensPaiement'][$key];
$keyVerification = $result["date"].'-'//$result['date']
.$result["codeJournal"].'-'//$result['codeJournal']
.$result["compte"].'-'//$result['compte']
.$result['numPiece'].'-'//$result['numPiece']
.$result['libelle'];
if (in_array($keyVerification, $ecrituresNonexportees)) {
fputcsv($handle, $result, $delimiter);
$result['id'] = $donnees['ids'][$key];
$result['id2'] = $donnees['ids2'][$key];
$result['equilibrage'] = $donnees['equilibrages'][$key];
$result['fournisseurNumerauxFacture'] = $donnees['equilibrages'][$key];
$ecritures[$donnees['journaux'][$key]][] = $result;
if ($result['equilibrage'] == 0) {
$elementsAequilibrer[] = $result['id'];
//$errors = 'Certaines écritures ne sont pas équilibrées!';
}
}
}
}
rewind($handle);
$content = stream_get_contents($handle);
fclose($handle);
if ($action == "exporter" || $action == "exporterTxt") {
//print_r($ecritures);
foreach ($ecritures as $journalKey => $journaux) {
foreach ($journaux as $key => $ecriture) {
if (isset($ecriture['codeJournal'])) {
switch ($ecriture['codeJournal']) {
case 'ES':
$objet = $repo_mvt_caisse->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
}
break;
case 'VE':
$objet = $repo_factures->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
$objet->setBasculeComptabilite(true);
}
break;
case 'AC':
$objet = $repo_commandes_fournisseur->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
}
break;
default:
$objet = $repo_bordereau->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
}
break;
}
if (is_object($objet)) {
$em->persist($objet);
}
}
}
}
$em->flush();
}
if ($action == "exporter") {
$filename = 'export_compta_'.date_format($date, 'Ymd_hms').'.csv';
//$em->flush();
return new Response($content, 200, [
'Content-Type' => 'application/force-download; charset=ISO-8859-1',
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
]);
} elseif ($action == "exporterTxt") {
$filename = 'export_compta_'.date_format($date, 'Ymd_hms').'.txt';
//$em->flush();
//$url = $this->generateUrl('dtc_export_vers_compta',array(), true);
//$this->redirectToRoute('dtc_export_vers_compta');
return new Response($content, 200, [
'Content-Type' => 'application/force-download; charset=ISO-8859-1',
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
//'Refresh' => "2;url=".$url
//'Location' => $url
]);
} else {
if (is_file($file)) {
unlink($file);
}
if (count($elementsAequilibrer) > 0) {
$errors = 'Certaines écritures ne sont pas equilibrées.';
$this->addFlash(
'warning',
$errors
);
}
return $this->render('Export/Comptabilite/index.html.twig', [
'ecritures' => $ecritures,
'journal' => $journal,
'action' => $action,
'date' => $date,
'comptesBancaires' => $comptesBancaires,
'elementsAequilibrer' => $elementsAequilibrer,
'equilibrages' => $equilibrages,
'errors' => $errors,
]);
}
}
private function getCodeClientCommande($client = null, $reglement = null, $commande = null)
{
$codeComptableClient = '';
if (is_object($reglement)) {
$client = $reglement->getClient();
$commande = $reglement->getCommande();
}
if (is_object($commande)) {
$codeClientCommande = $commande->getCodeClientCommande();
if (is_object($codeClientCommande)) {
return $codeClientCommande;
}
}
return '';
}
private function getCodeComptableClient($client = null, $reglement = null, $commande = null)
{
$codeComptableClient = '';
if (is_object($reglement)) {
$client = $reglement->getClient();
$commande = $reglement->getCommande();
}
if (is_object($commande)) {
$codeClientCommande = $commande->getCodeClientCommande();
if (is_object($codeClientCommande)) {
return $codeClientCommande->getCompteComptable();
}
}
if (is_object($client)) {
$codeComptableClient = $client->getCodeComptable();
if ($codeComptableClient == '') {
$clientCategories = $client->getClientCategorie();
if (count($clientCategories)) {
foreach ($clientCategories as $clientCategorie) {
$codeComptableTmp = $clientCategorie->getCategorie()->getCodeComptable();
if ($codeComptableTmp != '') {
$codeComptableClient = $codeComptableTmp;
}
}
}
}
}
return $codeComptableClient;
}
/**
* @Route("/export-vers-compta/", name="dtc_export_vers_compta")
*/
public function exportVersComptaAction(Request $request, EntityManagerInterface $em)
{
$errors = '';
$date = new \Datetime();
$interval = new \DateInterval('P1D');
$date->sub($interval);
$dateJour = new \Datetime();
$repo_bordereau = $em->getRepository(Bordereau::class);
$repo_reglements = $em->getRepository(Acompte::class);
$repo_factures = $em->getRepository(Commande::class);
$repo_tva = $em->getRepository(Taxe::class);
$repo_article = $em->getRepository(Article::class);
//$repo_article_compta = $em->getRepository('DTCArticlesBundle:ArticleCompta');
$repo_article_famille_compta_compta = $em->getRepository(FamilleComptaCompta::class);
$repo_commandes_fournisseur = $em->getRepository(CommandeFournisseur::class);
$repo_mvt_caisse = $em->getRepository(MouvementCaisse::class);
$repo_compte_bancaire = $em->getRepository(CompteBancaire::class);
$societe = $em->getRepository(Societe::class)->find(1);
$dir = 'Export/comptabilite/'.date("Y").'/'.date("m").'/'.date("d").'/';
if ( ! is_dir($dir)) {
mkdir($dir, 755, true);
}
//$file = $dir.'export.csv';
$file = $dir.'export_compta_'.date_format($date, 'Ymd_hms').'.csv';
if (is_file($file)) {
unlink($file);
}
//$handle = fopen('php://memory', 'r+');
$handle = fopen($file, 'w+');
$header = [];
$ecritures = [];
$ecrituresNonexportees = [];
$comptesBancaires = $em->getRepository(CompteBancaire::class)->findAll();
$journal = $request->request->get('journal');
if ($request->request->get('date') != '') {
$date = date_create_from_format('d/m/Y', $request->request->get('date'));
}
$action = $request->request->get('action');
if ($action == "exporter") {
$delimiter = ';';
} else {
$delimiter = '|';
}
$donnees = [
'ids' => $request->request->get('ids'),
'ids2' => $request->request->get('ids2'),
'journaux' => $request->request->get('journaux'),
'dates' => $request->request->get('dates'),
'codesJournal' => $request->request->get('codesJournal'),
'comptes' => $request->request->get('comptes'),
'numsPiece' => $request->request->get('numsPiece'),
'libelles' => $request->request->get('libelles'),
'debits' => $request->request->get('debits'),
'credits' => $request->request->get('credits'),
'monnaies' => $request->request->get('monnaies'),
'analytiques' => $request->request->get('analytiques'),
'equilibrages' => $request->request->get('equilibrages'),
'fournisseurNumerauxFacture' => $request->request->get('fournisseurNumerauxFacture'),
];
$elementsAequilibrer = [];
$equilibrages = [];
/*
if ($donnees['debits'] != '' && $action != 'visualiser' ){
$ecritures = array();
foreach($donnees['dates'] as $key => $value){
$result = array();
$dateTmp = date_create_from_format('d/m/Y', $donnees['dates'][$key]);
$result['date'] = $dateTmp->format("Y-m-d");;
$result['codeJournal'] = $donnees['journaux'][$key];
$result['compte'] = $donnees['comptes'][$key];
//$result['numPiece'] = $donnees['numsPiece'][$key] . '-' . $donnees['fournisseurNumerauxFacture'][$key];
$result['numPiece'] = $donnees['numsPiece'][$key];
$result['libelle'] = $donnees['libelles'][$key];
$result['debit'] = $donnees['debits'][$key];
$result['credit'] = $donnees['credits'][$key];
$result['monnaie'] = $donnees['monnaies'][$key];
$result['analytique'] = $donnees['analytiques'][$key];
fputcsv($handle, $result, $delimiter);
$result['id'] = $donnees['ids'][$key];
$result['id2'] = $donnees['ids2'][$key];
$result['equilibrage'] = $donnees['equilibrages'][$key];
$result['fournisseurNumerauxFacture'] = $donnees['equilibrages'][$key];
$ecritures[$donnees['journaux'][$key]][] = $result;
if($result['equilibrage'] == 0){
$elementsAequilibrer[] = $result['id'];
//$errors = 'Certaines écritures ne sont pas équilibrées!';
}
}
}
*
*/
//Journal de trésorerie
//---->Reglements
$banqueEncaissements = $repo_bordereau->getBordereauxAexporterVersCompta($journal, $date);
foreach ($banqueEncaissements as $donnee) {
if ($journal == '' || $journal == $donnee['libelle']) {
if ($action == 'exporter' || $action == "exporterTxt") {
/*
$bordereau = $repo_bordereau->find($donnee['id']);
if(is_object($bordereau)) {
$bordereau->setDateTransfertCompta($dateJour);
$em->persist($bordereau);
}
*
*/
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = $donnee['libelle'];
$compte = $donnee['comptaCompta'];
$numPiece = $donnee['reference'];
$libelle = '';
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
} else {
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = $donnee['libelle'];
$result['compte'] = $donnee['comptaCompta'];
$result['numPiece'] = $donnee['reference'];
$result['libelle'] = '';
if ($donnee['total'] > 0) {
$result['debit'] = $donnee['total'];
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($donnee['total']);
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
$result['lien'] = $this->generateUrl('dtc_bordereau_modifier', ['id' => $donnee['id']]);
$result['id2'] = $donnee['id'];
$ecritures[$result['codeJournal']][] = $result;
}
if ($action == 'exporter' || $action == "exporterTxt") {
//Recuperer chaque reglement
$reglements = $repo_reglements->findBy(['bordereau' => $donnee['id']]);
foreach ($reglements as $reglement) {
if ($journal == '' || $journal == $donnee['libelle']) {
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = $donnee['libelle'];
//Recuperer le compte comptable du client
$compte = $reglement->getClient()->getCodeComptable();
$numPiece = $reglement->getNumPiece();
$libelle = '';
if ( ! is_object($reglement->getModeReglement())) {
//echo "<div>R".$reglement->getId()."</div>";
//exit;
} else {
$libelle = 'REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement->getClient())) {
$libelle = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
//OD
if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
//Recuperer le compte comptable du client
$compte = $reglement->getClient()->getCodeComptable();
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement->getClient())) {
$libelle = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
$dateTmp = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$compte = '658000';//Compte de charges
} else {
$compte = '758000';//Compte de produits divers
}
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
}
} else {
//Recuperer chaque reglement
$reglements = $repo_reglements->findBy(['bordereau' => $donnee['id']]);
foreach ($reglements as $reglement) {
if ($journal == '' || $journal == $donnee['libelle']) {
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = $donnee['libelle'];
//Recuperer le compte comptable du client
$result['compte'] = $reglement->getClient()->getCodeComptable();
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = '';
if ( ! is_object($reglement->getModeReglement())) {
//echo "<div>R".$reglement->getId()."</div>";
//exit;
} else {
$result['libelle'] = 'REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement->getClient())) {
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
}
/*
$result['debit'] = '';
$result['credit'] = $reglement->getMontant();
*
*/
if (floatval($reglement->getMontant()) > 0) {
$result['debit'] = '';
$result['credit'] = abs($reglement->getMontant());//Peut etre en absolu
} else {
$result['debit'] = abs($reglement->getMontant());//Peut etre en absolu
$result['credit'] = '';
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
if (is_object($reglement->getCommande())) {
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
} else {
$result['lien'] = '';
}
$ecritures[$result['codeJournal']][] = $result;
}
//OD
if ($reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == $donnee['libelle'])) {
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
//Recuperer le compte comptable du client
$result['compte'] = $reglement->getClient()->getCodeComptable();
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement->getClient())) {
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
} else {
$result['debit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
$result['credit'] = '';
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
if (is_object($reglement->getCommande())) {
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
} else {
$result['lien'] = '';
}
$ecritures[$result['codeJournal']][] = $result;
$result = [];
$result['date'] = $donnee['date']->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['compte'] = '658000';//Compte de charges
$result['debit'] = abs($reglement->getOperationDiverse());
$result['credit'] = '';
} else {
$result['compte'] = '758000';//Compte de produits divers
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());
}
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
/*
if(is_object($reglement->getClient()))
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
*
*/
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
if (is_object($reglement->getCommande())) {
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
} else {
$result['lien'] = '';
}
$ecritures[$result['codeJournal']][] = $result;
}
}
//exit;
}
}
}
//Journal des achats
if ($journal == 'HA' || $journal == '') {
//$facturesFids = $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date);
$facturesF = $repo_commandes_fournisseur->getFacturesFournisseurAexporterVersCompta($date)->getQuery()->getResult();
//foreach($facturesFids as $factureFid){
foreach ($facturesF as $factureF) {
//Facture dans une autre devise
$tauxChange = floatval($factureF->getTauxChange());
//$montant = floatval($factureF->getTotalTtc())*$tauxChange;
$equilibrage2 = 0;
$montantTotal = 0;
$fournisseur = $factureF->getFournisseur();
if ($factureF->getFournisseurLibelle() != '') {
$libelle = $factureF->getFournisseurLibelle();
} else {
$libelle = $fournisseur->getLibelle();
}
$tvas = [];
$famillesArticle = [];
$comptaObjet = $factureF->getFournisseur()->getCompta();
if (is_object($comptaObjet)) {
$compta = $comptaObjet->getId();
} else {
$compta = 1;
}
//Frais de port
$tauxTva = $factureF->getTauxTvaFraisPort();
if ($tauxTva == '') {
$tauxTva = 0;
}
$tva = $repo_tva->findOneBy(['taux' => $tauxTva]);
if (is_object($tva)) {
$codeComptaTVA = strval($tva->getComptaAchat());
} else {
$codeComptaTVA = '';
}
$codeComptaFamille = '0';
$familleCompta = $societe->getFamilleComptaFraisPort();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),//Article port
'compta' => $compta,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
//Frais de port supplementaire
$fraisPortHT = floatval($factureF->getFraisPortSupplementaire());
if ($fraisPortHT != 0) {
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
$montantTva = floatval($factureF->getTotalTvaFraisPort());
if ( ! (floatval($montantTva) == 0 || floatval($montantTva) == '')) {
$tvas[$codeComptaTVA] = floatval($montantTva);
}
//Ajout de l'arrondi
$arrondiTVA = $factureF->getArrondiTva();
if ($arrondiTVA != '') {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += floatval($arrondiTVA);
} else {
$tvas[$codeComptaTVA] = floatval($arrondiTVA);
}
}
//Frais fixe
$codeComptaFamille = '0';
$familleCompta = $societe->getFamilleComptaFraisFixe();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),//Article port
'compta' => $compta,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
$fraisFixe = $factureF->getFraisFixe();
if ($fraisFixe != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += $fraisFixe;
} else {
$famillesArticle[$codeComptaFamille] = $fraisFixe;
}
$tvaSurfraisFixe = $fraisFixe * $tauxTva / 100;
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += floatval($tvaSurfraisFixe);
} else {
$tvas[$codeComptaTVA] = floatval($tvaSurfraisFixe);
}
}
foreach ($factureF->getArticleCommande() as $ac) {
//TVA
$tauxTva = floatval($ac->getTva());
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneBy(['taux' => $tauxTva]);
if (is_object($tva)) {
$codeComptaTVA = $tva->getComptaAchat();
}
$key = strval($codeComptaTVA);
if ($montantTva != 0) {
if (array_key_exists($key, $tvas)) {
$tvas[$key] += floatval($montantTva);
} else {
$tvas[$key] = floatval($montantTva);
}
}
//Famille d'articles
$codeComptaFamille = '0';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
$montantHt = $ac->getTotalHt(3);
//prendre en compte le coefficient de conditionnement
$coefficientConditionnement = $ac->getCoefficientConditionnement();
if ($coefficientConditionnement != 0) {
$montantHt = $montantHt / $coefficientConditionnement;
}
if ($montantHt != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
//Frais annexes
$montantHt = $ac->getFraisAnnexes();
if ($montantHt != 0) {
$codeComptaFamille = '0';
//$familleCompta = $ac->getArticle()->getFamilleCompta();
$familleCompta = $societe->getFamilleComptaFraisAnnexes();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getAchat();
}
}
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
}
if ($action == 'exporter' || $action == "exporterTxt") {
/*
$factureF->setDateTransfertCompta($dateJour);
$em->persist($factureF);
*
*/
foreach ($tvas as $key => $montant) {
$dateTmp = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'HA';
//Recuperer le compte comptable du client
$compte = $key;//$codeComptaTVA;
//$result['numPiece'] = $factureF->getReference();
$numPiece = $factureF->getfournisseurNumeroFacture();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
foreach ($famillesArticle as $key => $montant) {
$dateTmp = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'HA';
//Recuperer le compte comptable du client
$compte = $key;
//$result['numPiece'] = $factureF->getReference();
$numPiece = $factureF->getfournisseurNumeroFacture();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
$dateTmp = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'HA';
//Recuperer le compte comptable du client
$compte = $fournisseur->getCodeComptable();
$numPiece = $factureF->getfournisseurNumeroFacture();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
} else {
/*
//Facture dans une autre devise
$tauxChange = floatval($factureF->getTauxChange());
//$montant = floatval($factureF->getTotalTtc())*$tauxChange;
$equilibrage2 = 0;
$montantTotal = 0;
$fournisseur = $factureF->getFournisseur();
if($factureF->getFournisseurLibelle() != '' )
$libelle = $factureF->getFournisseurLibelle();
else
$libelle = $fournisseur->getLibelle();
$tvas = array();
$famillesArticle = array();
$comptaObjet = $factureF->getFournisseur()->getCompta();
if (is_object($comptaObjet))
$compta = $comptaObjet->getId();
else
$compta = 1;
//Frais de port
$tauxTva = $factureF->getTauxTvaFraisPort();
if($tauxTva == '') $tauxTva = 0;
$tva = $repo_tva->findOneBy(array('taux'=>$tauxTva));
if(is_object($tva)) {
$codeComptaTVA = strval($tva->getComptaAchat());
} else {
$codeComptaTVA = '';
}
$codeComptaFamille = '0';
$familleCompta = $societe->getFamilleComptaFraisPort();
if(is_object($familleCompta)){
$famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),//Article port
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
}
//Frais de port supplementaire
$fraisPortHT = floatval($factureF->getFraisPortSupplementaire());
if ($fraisPortHT != 0)
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
$montantTva = floatval($factureF->getTotalTvaFraisPort());
if(!(floatval($montantTva)== 0 || floatval($montantTva)== ''))
$tvas[$codeComptaTVA] = floatval($montantTva);
//Ajout de l'arrondi
$arrondiTVA = $factureF->getArrondiTva();
if($arrondiTVA != '')
if(array_key_exists($codeComptaTVA, $tvas)){
$tvas[$codeComptaTVA] += floatval($arrondiTVA);
} else {
$tvas[$codeComptaTVA] = floatval($arrondiTVA);
}
//Frais fixe
$codeComptaFamille = '0';
$familleCompta = $societe->getFamilleComptaFraisFixe();
if(is_object($familleCompta)){
$famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),//Article port
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
}
$fraisFixe = $factureF->getFraisFixe();
if($fraisFixe != 0){
if(array_key_exists($codeComptaFamille, $famillesArticle))
$famillesArticle[$codeComptaFamille] += $fraisFixe;
else
$famillesArticle[$codeComptaFamille] = $fraisFixe;
$tvaSurfraisFixe = $fraisFixe*$tauxTva/100;
if(array_key_exists($codeComptaTVA, $tvas)){
$tvas[$codeComptaTVA] += floatval($tvaSurfraisFixe);
} else {
$tvas[$codeComptaTVA] = floatval($tvaSurfraisFixe);
}
}
foreach($factureF->getArticleCommande() as $ac){
//TVA
$tauxTva = floatval($ac->getTva());
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneBy(array('taux'=>$tauxTva));
if(is_object($tva))
$codeComptaTVA = $tva->getComptaAchat();
$key = strval($codeComptaTVA);
if ($montantTva != 0 ){
if (array_key_exists ( $key , $tvas ))
$tvas[$key] += floatval($montantTva);
else
$tvas[$key] = floatval($montantTva);
}
//Famille d'articles
$codeComptaFamille = '0';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if(is_object($familleCompta)){
$famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
}
$montantHt = $ac->getTotalHt();
if($montantHt != 0){
if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
else
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
//Frais annexes
$codeComptaFamille = '0';
//$familleCompta = $ac->getArticle()->getFamilleCompta();
$familleCompta = $societe->getFamilleComptaFraisAnnexes();
if(is_object($familleCompta)){
$famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getAchat();
}
$montantHt = $ac->getFraisAnnexes();
if($montantHt != 0){
if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
else
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
*/
if ($journal == '' || $journal == 'HA') {
foreach ($tvas as $key => $montant) {
$montant = round($montant * $tauxChange, 2);
$montantTotal += $montant;
$result = [];
$result['date'] = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'HA';
//Recuperer le compte comptable du client
$result['compte'] = $key;//$codeComptaTVA;
//$result['numPiece'] = $factureF->getReference();
$result['numPiece'] = $factureF->getfournisseurNumeroFacture();
//$result['libelle'] = 'FAC Fourn - TVA ';
$result['libelle'] = $libelle;
if (floatval($montant) > 0) {
$result['debit'] = abs($montant);
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($montant);
}
$equilibrage2 += $montant;
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
$result['fournisseurNumeroFacture'] = $factureF->getfournisseurNumeroFacture();
$result['lien'] = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
$result['id2'] = $factureF->getId();
$ecritures[$result['codeJournal']][] = $result;
}
foreach ($famillesArticle as $key => $montant) {
$montant = round($montant * $tauxChange, 2, PHP_ROUND_HALF_DOWN);
$montantTotal += $montant;
$result = [];
$result['date'] = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'HA';
//Recuperer le compte comptable du client
$result['compte'] = $key;
//$result['numPiece'] = $factureF->getReference();
$result['numPiece'] = $factureF->getfournisseurNumeroFacture();
//$result['libelle'] = 'FAC Fourn - Famille article ';
$result['libelle'] = $libelle;
if (floatval($montant) > 0) {
$result['debit'] = abs($montant);
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($montant);
}
$equilibrage2 += $montant;
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
$result['fournisseurNumeroFacture'] = $factureF->getfournisseurNumeroFacture();
$result['lien'] = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
$result['id2'] = $factureF->getId();
$ecritures[$result['codeJournal']][] = $result;
}
//$fournisseur = $factureF->getFournisseur();
if ($fournisseur->getDivers() == 1 && is_object($fournisseur->getParent())) {
$fournisseur = $fournisseur->getParent();
}
$result = [];
$result['date'] = $factureF->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'HA';
//Recuperer le compte comptable du client
$result['compte'] = $fournisseur->getCodeComptable();
//$result['numPiece'] = $factureF->getReference();
$result['numPiece'] = $factureF->getfournisseurNumeroFacture();
/*
if($factureF->getFournisseurLibelle() != '' )
$result['libelle'] = $factureF->getFournisseurLibelle().'('.$fournisseur->getReference().')';
else
$result['libelle'] = $fournisseur->getLibelle().'('.$fournisseur->getReference().')';
$result['libelle'] = $fournisseur->getLibelle();
*
*/
/*
if($factureF->getFournisseurLibelle() != '' )
$result['libelle'] = $factureF->getFournisseurLibelle();
else
$result['libelle'] = $fournisseur->getLibelle();
*
*/
$result['libelle'] = $libelle;
if ($montantTotal > 0) {
$result['debit'] = '';
$result['credit'] = abs($montantTotal);
} else {
$result['debit'] = abs($montantTotal);
$result['credit'] = '';
}
$equilibrage1 = $montantTotal;
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
$result['fournisseurNumeroFacture'] = $factureF->getfournisseurNumeroFacture();
$result['lien'] = $this->generateUrl('dtc_facture_fournisseur_modifier', ['id' => $factureF->getId(), 'modal' => false]);
$result['id2'] = $factureF->getId();
$ecritures[$result['codeJournal']][] = $result;
}
if (strval($equilibrage1) != strval($equilibrage2)) {
$elementsAequilibrer[] = $factureF->getReference().'-'.$factureF->getId();
}
}
}
}
//Journal des ventes
if ($journal == 'VT' || $journal == '') {
$ventes = $repo_factures->getFacturesEtAvoirsAtransfererEnCompta($date);
foreach ($ventes as $factureId) {
$equilibrage2 = 0;
$facture = $repo_factures->find($factureId);
if ($facture->getAvecTaxe() == 0) {
$montant = floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
} else {
$montant = floatval($facture->getTotalTtc());
}
$equilibrage1 = $montant;
$tvas = [];
$famillesArticle = [];
$comptaObjet = $facture->getClient()->getCompta();
if (is_object($comptaObjet)) {
$compta = $comptaObjet->getId();
} else {
$compta = 1;
}
//test si c'est une facture multi bl
if ($facture->getMultiBl() == 1) {
$bls = $repo_factures->findByFacture($facture);
foreach ($bls as $bl) {
foreach ($bl->getArticleCommande() as $ac) {
if ($bl->getAvecTaxe() == 1) {
//TVA
$tauxTva = $ac->getTva();
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneByTaux($tauxTva);
if (is_object($tva)) {
$codeComptaTVA = $tva->getComptaVente();
}
$key = strval($codeComptaTVA);
if (array_key_exists($key, $tvas)) {
$tvas[$key] += floatval($montantTva);
} else {
$tvas[$key] = floatval($montantTva);
}
}
//Famille d'articles
/*
$famille = $repo_article_compta->findOneBy(array('article'=>$ac->getArticle()->getId(),
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getVente(); else $codeComptaFamille = '0';
*
*/
$codeComptaFamille = '0';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getVente();
}
}
$montantHt = $ac->getTotalHt();
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
}
} else {
foreach ($facture->getArticleCommande() as $ac) {
if ($facture->getAvecTaxe() == 1) {
//TVA
$tauxTva = $ac->getTva();
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneByTaux($tauxTva);
if (is_object($tva)) {
$codeComptaTVA = $tva->getComptaVente();
}
$key = strval($codeComptaTVA);
if (array_key_exists($key, $tvas)) {
$tvas[$key] += floatval($montantTva);
} else {
$tvas[$key] = floatval($montantTva);
}
}
//Famille d'articles
/*
$famille = $repo_article_compta->findOneBy(array('article'=>$ac->getArticle()->getId(),
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getVente(); else $codeComptaFamille = '0';
*
*/
$codeComptaFamille = '0';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getVente();
}
}
$montantHt = $ac->getTotalHt();
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
} else {
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
}
//Frais de port
if (is_object($facture->getClient()->getCompta()) && $facture->getClient()->getCompta()->getId() == 1)//Taxable
{
$tva = $repo_tva->find(1);
}//tva à 20%
else {
$tva = $repo_tva->find(5);
}//Aucune taxe
if (is_object($tva)) {
$tauxTva = $tva->getTaux();
$codeComptaTVA = strval($tva->getComptaVente());
} else {
$codeComptaTVA = '';
$tauxTva = 0;
}
/*
$famille = $repo_article_compta->findOneBy(array('article'=>1045389,//Article port
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getVente(); else $codeComptaFamille = '0';
*
*/
$codeComptaFamille = '0';
$familleCompta = $societe->getFamilleComptaFraisPort();
//$familleCompta = $ac->getArticle()->getFamilleCompta();
if (is_object($familleCompta)) {
$famille = $repo_article_famille_compta_compta->findOneBy([
'familleCompta' => $familleCompta->getId(),
'compta' => $compta,
]);
if (is_object($famille)) {
$codeComptaFamille = $famille->getVente();
}
}
$fraisPortHT = floatval($facture->getTotalFraisPort());
$montantTva = $fraisPortHT * ($tauxTva / 100);
//$fraisPortHT = floatval($facture->getTotalFraisPort());
if ($fraisPortHT != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += $fraisPortHT;
} else {
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
}
//$montantTva = floatval($facture->getTotalFraisPort())-$fraisPortHT;
//$montantTva = floatval($facture->getTotalFraisPortTtc())-$fraisPortHT;
if ($montantTva != 0 && $facture->getAvecTaxe() == 1) {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
} else {
$tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
}
}
//Frais de port supplementaire
$fraisPortHT = floatval($facture->getFraisPortSupplementaire());
$montantTva = $fraisPortHT * ($tauxTva / 100);
if ($fraisPortHT != 0) {
if (array_key_exists($codeComptaFamille, $famillesArticle)) {
$famillesArticle[$codeComptaFamille] += $fraisPortHT;
} else {
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
}
//$montantTva = floatval($facture->getFraisPortSupplementaire())-$fraisPortHT;
if ($montantTva != 0 && $facture->getAvecTaxe() == 1) {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += round(floatval($montantTva), 2);
} else {
$tvas[$codeComptaTVA] = round(floatval($montantTva), 2);
}
}
foreach ($tvas as $key => $montant) {
$equilibrage2 += $montant;
}
foreach ($famillesArticle as $key => $montant) {
$equilibrage2 += $montant;
}
$diffEquilibrage = round($equilibrage1, 2) - round($equilibrage2, 2);
if (abs($diffEquilibrage) < 0.1) {
if (array_key_exists($codeComptaTVA, $tvas)) {
$tvas[$codeComptaTVA] += $diffEquilibrage;
} else {
$tvas[$codeComptaTVA] = $diffEquilibrage;
}
$equilibrage2 += $diffEquilibrage;
}
if ($action == 'exporter' || $action == "exporterTxt") {
/*
$facture->setDateTransfertCompta($dateJour);
$facture->setBasculeComptabilite(true);
$em->persist($facture);
*
*/
if ($facture->getAvecTaxe() == 0) {
$montant = floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
} else {
$montant = floatval($facture->getTotalTtc());
}
$dateTmp = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'VT';
//Recuperer le compte comptable du client
$compte = $facture->getClient()->getCodeComptable();
$numPiece = $facture->getReference();
if ($montant > 0) {//Facture
//$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
} else {//Avoir
//$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
foreach ($tvas as $key => $montant) {
if ($montant != 0) {
$dateTmp = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'VT';
$compte = $key;
$numPiece = $facture->getReference();
/*
if (floatval($montant) > 0 ){//Facture
$libelle = 'FAC - TVA ';
} else {//Avoir
$libelle = 'AVOIR - TVA ';
}
*
*/
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
}
foreach ($famillesArticle as $key => $montant) {
$dateTmp = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'VT';
//Recuperer le compte comptable du client
$compte = $key;
$numPiece = $facture->getReference();
/*
if (floatval($montant) > 0){//Facture
$libelle = 'FAC - Famille article ';
} else {//Avoir
$libelle = 'AVOIR - Famille article ';
}
*
*/
$libelle = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
} else {
if ($facture->getAvecTaxe() == 0) {
$montant = floatval($facture->getTotal()) + floatval($facture->getTotalFraisPort()) + floatval($facture->getFraisPortSupplementaire());
} else {
$montant = floatval($facture->getTotalTtc());
}
//$equilibrage1 = $montant;
//$equilibrage2 = 0;
$result = [];
$result['date'] = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'VT';
//Recuperer le compte comptable du client
$result['compte'] = $facture->getClient()->getCodeComptable();
$result['numPiece'] = $facture->getReference();
if ($montant > 0) {//Facture
//$result['libelle'] = 'FAC - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$result['debit'] = abs($montant);
$result['credit'] = '';
} else {//Avoir
//$result['libelle'] = 'AVOIR - '.$facture->getClient()->getNom().'('.$facture->getClient()->getReference().')';
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$result['debit'] = '';
$result['credit'] = abs($montant);
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
if ($montant > 0) {//Facture
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
} else {//Avoir
$result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
}
$result['id'] = $facture->getReference().'-'.$facture->getId();
$result['id2'] = $facture->getId();
$ecritures[$result['codeJournal']][] = $result;
/*
$tvas = array();
$famillesArticle = array();
$comptaObjet = $facture->getClient()->getCompta();
if (is_object($comptaObjet))
$compta = $comptaObjet->getId();
else
$compta = 1;
//test si c'est une facture multi bl
if ($facture->getMultiBl() == 1) {
$bls = $repo_factures->findByFacture($facture);
foreach($bls as $bl){
foreach($bl->getArticleCommande() as $ac){
if($bl->getAvecTaxe() == 1){
//TVA
$tauxTva = $ac->getTva();
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneByTaux($tauxTva);
if(is_object($tva))
$codeComptaTVA = $tva->getComptaVente();
$key = strval($codeComptaTVA);
if (array_key_exists ( $key , $tvas ))
$tvas[$key] += floatval($montantTva);
else
$tvas[$key] = floatval($montantTva);
}
//Famille d'articles
$codeComptaFamille = '0';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if(is_object($familleCompta)){
$famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getVente();
}
$montantHt = $ac->getTotalHt();
if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
else
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
} else {
foreach($facture->getArticleCommande() as $ac){
if($facture->getAvecTaxe() == 1){
//TVA
$tauxTva = $ac->getTva();
$montantTva = $ac->getTvaVente();
$codeComptaTVA = '';
$tva = $repo_tva->findOneByTaux($tauxTva);
if(is_object($tva)) {
$codeComptaTVA = $tva->getComptaVente();
}
$key = strval($codeComptaTVA);
if (array_key_exists ( $key , $tvas ))
$tvas[$key] += floatval($montantTva);
else
$tvas[$key] = floatval($montantTva);
}
$codeComptaFamille = '0';
$familleCompta = $ac->getArticle()->getFamilleCompta();
if(is_object($familleCompta)){
$famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getVente();
}
$montantHt = $ac->getTotalHt();
if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
$famillesArticle[$codeComptaFamille] += floatval($montantHt);
else
$famillesArticle[$codeComptaFamille] = floatval($montantHt);
}
}
//Frais de port
if(is_object($facture->getClient()->getCompta()) && $facture->getClient()->getCompta()->getId() == 1)//Taxable
$tva = $repo_tva->find(1);//tva à 20%
else
$tva = $repo_tva->find(5);//Aucune taxe
if(is_object($tva)) {
$tauxTva = $tva->getTaux();
$codeComptaTVA = strval($tva->getComptaVente());
} else {
$codeComptaTVA = '';
$tauxTva = 0;
}
$codeComptaFamille = '0';
$familleCompta = $societe->getFamilleComptaFraisPort();
//$familleCompta = $ac->getArticle()->getFamilleCompta();
if(is_object($familleCompta)){
$famille = $repo_article_famille_compta_compta->findOneBy(array('familleCompta'=>$familleCompta->getId(),
'compta'=>$compta
));
if(is_object($famille)) $codeComptaFamille = $famille->getVente();
}
$fraisPortHT = floatval($facture->getTotalFraisPort());
$montantTva = $fraisPortHT*($tauxTva/100);
//$fraisPortHT = floatval($facture->getTotalFraisPort());
if ($fraisPortHT != 0){
if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
$famillesArticle[$codeComptaFamille] += $fraisPortHT;
else
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
//$montantTva = floatval($facture->getTotalFraisPort())-$fraisPortHT;
//$montantTva = floatval($facture->getTotalFraisPortTtc())-$fraisPortHT;
if ($montantTva != 0 && $facture->getAvecTaxe() == 1){
if (array_key_exists ( $codeComptaTVA , $tvas ))
$tvas[$codeComptaTVA] += round(floatval($montantTva),2);
else
$tvas[$codeComptaTVA] = round(floatval($montantTva),2);
}
//Frais de port supplementaire
$fraisPortHT = floatval($facture->getFraisPortSupplementaire());
$montantTva = $fraisPortHT*($tauxTva/100);
if ($fraisPortHT != 0){
if (array_key_exists ( $codeComptaFamille , $famillesArticle ))
$famillesArticle[$codeComptaFamille] += $fraisPortHT;
else
$famillesArticle[$codeComptaFamille] = $fraisPortHT;
}
//$montantTva = floatval($facture->getFraisPortSupplementaire())-$fraisPortHT;
if ($montantTva != 0 && $facture->getAvecTaxe() == 1){
if (array_key_exists ( $codeComptaTVA , $tvas ))
$tvas[$codeComptaTVA] += round(floatval($montantTva),2);
else
$tvas[$codeComptaTVA] = round(floatval($montantTva),2);
}
foreach($tvas as $key=>$montant){
$equilibrage2 += $montant;
}
foreach($famillesArticle as $key=>$montant){
$equilibrage2 += $montant;
}
$diffEquilibrage = round($equilibrage1,2) - round($equilibrage2,2);
if(abs($diffEquilibrage) < 0.1){
if(array_key_exists($codeComptaTVA, $tvas)){
$tvas[$codeComptaTVA] += $diffEquilibrage;
} else {
$tvas[$codeComptaTVA] = $diffEquilibrage;
}
$equilibrage2 += $diffEquilibrage;
}
*/
foreach ($tvas as $key => $montant) {
if ($montant != 0) {
//$equilibrage2 += $montant;
$result = [];
$result['date'] = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'VT';
//Recuperer le compte comptable du client
//$result['compte'] = $codeComptaTVA;
$result['compte'] = $key;
$result['numPiece'] = $facture->getReference();
if (floatval($montant) > 0) {//Facture
//$result['libelle'] = 'FAC - TVA ';
$result['debit'] = '';
$result['credit'] = abs($montant);
} else {//Avoir
//$result['libelle'] = 'AVOIR - TVA ';
$result['debit'] = abs($montant);
$result['credit'] = '';
}
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
if (floatval($montant) > 0) {//Facture
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
} else {//Avoir
$result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
}
$result['id'] = $facture->getReference().'-'.$facture->getId();
$result['id2'] = $facture->getId();
$ecritures[$result['codeJournal']][] = $result;
}
}
foreach ($famillesArticle as $key => $montant) {
//$equilibrage2 += $montant;
$result = [];
$result['date'] = $facture->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'VT';
//Recuperer le compte comptable du client
$result['compte'] = $key;
$result['numPiece'] = $facture->getReference();
if (floatval($montant) > 0) {//Facture
//$result['libelle'] = 'FAC - Famille article ';
$result['debit'] = '';
$result['credit'] = abs($montant);
} else {//Avoir
//$result['libelle'] = 'AVOIR - Famille article ';
$result['debit'] = abs($montant);
$result['credit'] = '';
}
$result['libelle'] = $facture->getClient()->getNom().' '.$facture->getClient()->getPrenom();
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
if (floatval($montant) > 0) {//Facture
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $facture->getId()]);//, 'modal'=>true
} else {//Avoir
$result['lien'] = $this->generateUrl('dtc_avoir_modifier', ['id' => $facture->getId()]);//, 'modal'=>true
}
$result['id'] = $facture->getReference().'-'.$facture->getId();
$result['id2'] = $facture->getId();
$ecritures[$result['codeJournal']][] = $result;
}
if (strval(round($equilibrage1, 2)) != strval(round($equilibrage2, 2))) {
$elementsAequilibrer[] = $facture->getReference().'-'.$facture->getId();
$equilibrages[] = $facture->getReference().'-id : '.$facture->getId().'-$equilibrage1 : '.$equilibrage1.'-$equilibrage2 : '.$equilibrage2;
}
}
}
}
//Caisse
if ($journal == 'ES' || $journal == '') {
$journalCaisse = $repo_compte_bancaire->findOneByLibelle('ES');
$mvtsCaisse = $repo_mvt_caisse->getMouvementsCaisseAexporterEnCompta($date);
foreach ($mvtsCaisse as $donnee) {
$exporter = false;
$mvtCaisse = $repo_mvt_caisse->find($donnee['id']);
if (is_object($mvtCaisse)) {
if ($action == 'exporter' || $action == "exporterTxt") {
/*
$mvtCaisse->setDateTransfertCompta($dateJour);
$em->persist($mvtCaisse);
*
*/
if (is_object($mvtCaisse->getReglement())) {
$reglement = $mvtCaisse->getReglement();
$codeJournal = $journalCaisse->getLibelle();
$compte = '';
if (is_object($reglement->getClient())) {
$compte = $reglement->getClient()->getCodeComptable();
}
$numPiece = $reglement->getNumPiece();
$libelle = $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
} elseif (is_object($mvtCaisse->getCompteBancaire())) {
$compteBancaire = $mvtCaisse->getCompteBancaire();
$codeJournal = 'ES';
if ($compteBancaire->getComptaCompta() != '') {
$compte = $compteBancaire->getComptaFond();
} else {
$compte = "58000000";
}
$numPiece = 'MVTCAI'.$mvtCaisse->getId();
$libelle = 'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
} else {
$codeJournal = $journalCaisse->getLibelle();
$compte = $mvtCaisse->getCompta();
$numPiece = 'MVTCAI'.$mvtCaisse->getId();
$libelle = $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
}
$ecrituresNonexportees[] =
$mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
$ecrituresNonexportees[] =
$mvtCaisse->getDate()->format("Y-m-d").'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$journalCaisse->getComptaCompta().'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
//OD
$reglement = $mvtCaisse->getReglement();
if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
$dateTmp = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
//Recuperer le compte comptable du client
$compte = $reglement->getClient()->getCodeComptable();
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement)) {
$libelle = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
$dateTmp = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$codeJournal = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$compte = '658000';//Compte de charges
} else {
$compte = '758000';//Compte de produits divers
}
$numPiece = $reglement->getNumPiece();
$libelle = 'OD REG '.$reglement->getModeReglement()->getLibelle();
$ecrituresNonexportees[] =
$dateTmp.'-'//$result['date']
.$codeJournal.'-'//$result['codeJournal']
.$compte.'-'//$result['compte']
.$numPiece.'-'//$result['numPiece']
.$libelle//$result['libelle']
;
}
} else {
$result = [];
$result2 = [];
$result['date'] = $mvtCaisse->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result2['date'] = $result['date'];
$result2['compte'] = $journalCaisse->getComptaCompta();
if (is_object($mvtCaisse->getReglement())) {
if ($journal == $journalCaisse->getLibelle()) {
$exporter = true;
}
$reglement = $mvtCaisse->getReglement();
$result['codeJournal'] = $journalCaisse->getLibelle();
$result['compte'] = '';
if (is_object($reglement->getClient())) {
$result['compte'] = $reglement->getClient()->getCodeComptable();
}
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = $mvtCaisse->getLibelle();//'REG '.$reglement->getModeReglement()->getLibelle();
if ($reglement->getMontant() > 0) {
$result['debit'] = '';
$result['credit'] = $reglement->getMontant();
} else {
$result['debit'] = abs($reglement->getMontant());
$result['credit'] = '';
}
} elseif (is_object($mvtCaisse->getCompteBancaire())) {
$compteBancaire = $mvtCaisse->getCompteBancaire();
if ($journal == $compteBancaire->getLibelle()) {
$exporter = true;
}
if ($journal == $journalCaisse->getLibelle()) {
$exporter = true;
}
//$result['codeJournal'] = $compteBancaire->getLibelle();
$result['codeJournal'] = 'ES';
if ($compteBancaire->getComptaCompta() != '') {
$result['compte'] = $compteBancaire->getComptaFond();
} else {
$result['compte'] = "58000000";
}
$result['numPiece'] = 'MVTCAI'.$mvtCaisse->getId();
$result['libelle'] = 'Remise en bq '.$compteBancaire->getLibelle().' / '.$mvtCaisse->getId();
if ($mvtCaisse->getMontant() > 0) {
$result['debit'] = $mvtCaisse->getMontant();
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = abs($mvtCaisse->getMontant());
}
} else {
if ($journal == $journalCaisse->getLibelle()) {
$exporter = true;
}
$result['codeJournal'] = $journalCaisse->getLibelle();
$result['compte'] = $mvtCaisse->getCompta();
$result['numPiece'] = 'MVTCAI'.$mvtCaisse->getId();
$result['libelle'] = $mvtCaisse->getLibelle();//'Mouvement de caisse '.$mvtCaisse->getId();
if ($mvtCaisse->getEntreeSortie() == true) {
$result['debit'] = $mvtCaisse->getMontant();
$result['credit'] = '';
} else {
$result['debit'] = '';
$result['credit'] = $mvtCaisse->getMontant();
}
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
if ($journal == '' || $exporter == true) {
fputcsv($handle, $result, $delimiter);
$result['id2'] = $mvtCaisse->getId();
$ecritures[$result['codeJournal']][] = $result;
}
$result2['codeJournal'] = $result['codeJournal'];
$result2['numPiece'] = $result['numPiece'];
$result2['libelle'] = $result['libelle'];
$result2['debit'] = $result['credit'];
$result2['credit'] = $result['debit'];
$result2['monnaie'] = $result['monnaie'];
$result2['analytique'] = $result['analytique'];
if ($journal == '' || $exporter == true) {
fputcsv($handle, $result2, $delimiter);
$ecritures[$result2['codeJournal']][] = $result2;
}
//OD
$reglement = $mvtCaisse->getReglement();
if (is_object($reglement) && $reglement->getOperationDiverse() != '' && ($journal == '' || $journal == 'OD' || $journal == 'ES')) {
$result = [];
$result['date'] = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
//Recuperer le compte comptable du client
$result['compte'] = $reglement->getClient()->getCodeComptable();
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
if (is_object($reglement)) {
$result['libelle'] = $reglement->getClient()->getNom().' '.$reglement->getClient()->getPrenom();
}
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
} else {
$result['debit'] = abs($reglement->getOperationDiverse());//Peut etre en absolu
$result['credit'] = '';
}
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
$result['id2'] = $reglement->getId();
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
$ecritures[$result['codeJournal']][] = $result;
$result = [];
$result['date'] = $reglement->getDate()->format("Y-m-d");//->format("Y-m-d H:i:s");
$result['codeJournal'] = 'OD';
//Recuperer le compte comptable du client
if (floatval($reglement->getOperationDiverse()) > 0) {
$result['compte'] = '658000';//Compte de charges
$result['debit'] = abs($reglement->getOperationDiverse());
$result['credit'] = '';
} else {
$result['compte'] = '758000';//Compte de produits divers
$result['debit'] = '';
$result['credit'] = abs($reglement->getOperationDiverse());
}
$result['numPiece'] = $reglement->getNumPiece();
$result['libelle'] = 'OD REG '.$reglement->getModeReglement()->getLibelle();
$result['monnaie'] = 'E';
$result['analytique'] = '';
fputcsv($handle, $result, $delimiter);
$result['lien'] = $this->generateUrl('dtc_facture_afficher', ['id' => $reglement->getCommande()->getId()]);
$result['id2'] = $reglement->getId();
$ecritures[$result['codeJournal']][] = $result;
}
}
}
}
}
/*
foreach($ecritures as $journalKey => $journaux)
foreach($journaux as $key => $ecriture){
$key = $ecriture["date"].'-'//$result['date']
.$ecriture["codeJournal"].'-'//$result['codeJournal']
.$ecriture["compte"].'-'//$result['compte']
.$ecriture['numPiece'].'-'//$result['numPiece']
.$ecriture['libelle'];
if(!array_key_exists($key, $ecrituresNonexportees)){
unset($ecritures[$journalKey][$key]);
}
}
*
*/
if (count($elementsAequilibrer) > 0) {
foreach ($elementsAequilibrer as $elementAequilibrer) {
foreach ($ecritures as $journalKey => $journaux) {
foreach ($journaux as $key => $ecriture) {
if (isset($ecriture['id']) && $ecriture['id'] == $elementAequilibrer) {
$ecritures[$journalKey][$key]['equilibrage'] = 0;
}
}
}
}
}
if ($donnees['debits'] != '' && $action != 'visualiser') {
$ecritures = [];
/*
fputcsv($handle, $ecrituresNonexportees, $delimiter);
*
*/
foreach ($donnees['dates'] as $key => $value) {
$result = [];
$dateTmp = date_create_from_format('d/m/Y', $donnees['dates'][$key]);
$result['date'] = $dateTmp->format("Y-m-d");;
$result['codeJournal'] = $donnees['journaux'][$key];
$result['compte'] = $donnees['comptes'][$key];
//$result['numPiece'] = $donnees['numsPiece'][$key] . '-' . $donnees['fournisseurNumerauxFacture'][$key];
$result['numPiece'] = $donnees['numsPiece'][$key];
$result['libelle'] = $donnees['libelles'][$key];
$result['debit'] = $donnees['debits'][$key];
$result['credit'] = $donnees['credits'][$key];
$result['monnaie'] = $donnees['monnaies'][$key];
$result['analytique'] = $donnees['analytiques'][$key];
$keyVerification = $result["date"].'-'//$result['date']
.$result["codeJournal"].'-'//$result['codeJournal']
.$result["compte"].'-'//$result['compte']
.$result['numPiece'].'-'//$result['numPiece']
.$result['libelle'];
/*
fputcsv($handle, array($keyVerification), $delimiter);
*
*/
if (in_array($keyVerification, $ecrituresNonexportees)) {
fputcsv($handle, $result, $delimiter);
$result['id'] = $donnees['ids'][$key];
$result['id2'] = $donnees['ids2'][$key];
$result['equilibrage'] = $donnees['equilibrages'][$key];
$result['fournisseurNumerauxFacture'] = $donnees['equilibrages'][$key];
$ecritures[$donnees['journaux'][$key]][] = $result;
if ($result['equilibrage'] == 0) {
$elementsAequilibrer[] = $result['id'];
//$errors = 'Certaines écritures ne sont pas équilibrées!';
}
}
}
}
rewind($handle);
$content = stream_get_contents($handle);
fclose($handle);
if ($action == "exporter" || $action == "exporterTxt") {
//print_r($ecritures);
foreach ($ecritures as $journalKey => $journaux) {
foreach ($journaux as $key => $ecriture) {
if (isset($ecriture['codeJournal'])) {
switch ($ecriture['codeJournal']) {
case 'ES':
$objet = $repo_mvt_caisse->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
}
break;
case 'VT':
$objet = $repo_factures->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
$objet->setBasculeComptabilite(true);
}
break;
case 'HA':
$objet = $repo_commandes_fournisseur->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
}
break;
default:
$objet = $repo_bordereau->find($ecriture['id2']);
if (is_object($objet)) {
$objet->setDateTransfertCompta($dateJour);
}
break;
}
if (is_object($objet)) {
$em->persist($objet);
}
/*
$mvtCaisse = $repo_mvt_caisse->find()
$mvtCaisse->setDateTransfertCompta($dateJour);
$em->persist($mvtCaisse);
*
*/
}
}
}
$em->flush();
}
if ($action == "exporter") {
$filename = 'export_compta_'.date_format($date, 'Ymd_hms').'.csv';
//$em->flush();
return new Response($content, 200, [
'Content-Type' => 'application/force-download; charset=ISO-8859-1',
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
]);
/*
$url = $this->generateUrl('dtc_export_vers_compta');
return new JsonResponse(array('rendu'=>'','valide'=>'1','url'=>$url), 200, array('Content-Type'=>'application/json'));
*
*/
} elseif ($action == "exporterTxt") {
$filename = 'export_compta_'.date_format($date, 'Ymd_hms').'.txt';
//$em->flush();
//$url = $this->generateUrl('dtc_export_vers_compta',array(), true);
//$this->redirectToRoute('dtc_export_vers_compta');
return new Response($content, 200, [
'Content-Type' => 'application/force-download; charset=ISO-8859-1',
'Content-Disposition' => 'attachment; filename="'.$filename.'"',
//'Refresh' => "2;url=".$url
//'Location' => $url
]);
} else {
if (is_file($file)) {
unlink($file);
}
if (count($elementsAequilibrer) > 0) {
$errors = 'Certaines écritures ne sont pas equilibrées.';
$this->addFlash(
'warning',
$errors
);
}
return $this->render('Export/Comptabilite/index.html.twig', [
'ecritures' => $ecritures,
'journal' => $journal,
'action' => $action,
'date' => $date,
'comptesBancaires' => $comptesBancaires,
'elementsAequilibrer' => $elementsAequilibrer,
'equilibrages' => $equilibrages,
'errors' => $errors,
]);
}
/*
} else {
return $this->render('Export/Comptabilite/index.html.twig', array('date'=>$date, 'comptesBancaires'=>$comptesBancaires));
}
*
*/
}
}