<?php
/**
* Created by PhpStorm.
*/
namespace App\Services;
use App\Entity\Avoir;
use App\Entity\AvoirFactureFinance;
use App\Entity\CommentFactureFinance;
use App\Entity\CompteurErpiEcriture;
use App\Entity\CompteurErpiEcritureReglement;
use App\Entity\DocUpload;
use App\Entity\Etap1;
use App\Entity\Etap160;
use App\Entity\Etap2;
use App\Entity\Etap3;
use App\Entity\Etap4;
use App\Entity\Etap5;
use App\Entity\Etap6;
use App\Entity\Etap7;
use App\Entity\Etap8;
use App\Entity\Etap9;
use App\Entity\Etap10;
use App\Entity\Etap11;
use App\Entity\Etap12;
use App\Entity\Etap13;
use App\Entity\Etap14;
use App\Entity\Etap15;
use App\Entity\Etap16;
use App\Entity\Etap17;
use App\Entity\Etap18;
use App\Entity\Etap19;
use App\Entity\Etap20;
use App\Entity\Etap21;
use App\Entity\Etap22;
use App\Entity\Etaps;
use App\Entity\EtapsCategory;
use App\Entity\Facture;
use App\Entity\FactureFinance;
use App\Entity\FactureFinanceBrouillon;
use App\Entity\FactureFinanceMontantTva;
use App\Entity\FactureFinanceMontantTvaProject;
use App\Entity\FactureFinancePaiement;
use App\Entity\FactureFinancePaiementDetail;
use App\Entity\Fournisseur;
use App\Entity\LogSendFichier;
use App\Entity\Project;
use App\Entity\ProjectAvoir;
use App\Entity\ProjectEdit;
use App\Entity\ProjectFactureFinance;
use App\Entity\Rib;
use App\Entity\Spv;
use App\Entity\User;
use App\Form\FactureFinanceBrouillonType;
use App\Form\FactureFinanceClassificationType;
use App\Form\FactureFinanceType;
use App\Form\FactureFinanceV2Type;
use App\Form\ProjectEditType;
use App\Form\ProjectType;
use App\Form\UserType;
use Kunnu\Dropbox\Dropbox;
use Kunnu\Dropbox\DropboxApp;
use Kunnu\Dropbox\Exceptions\DropboxClientException;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Spipu\Html2Pdf\Html2Pdf;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Twig\Environment;
use App\Entity\Centrale;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Mindee\Client;
use Mindee\Product\Invoice\InvoiceV4;
use Digitick\Sepa\TransferFile\Factory\TransferFileFacadeFactory;
use Digitick\Sepa\PaymentInformation;
use App\Services\HistoryService;
use PhpOffice\PhpSpreadsheet\IOFactory;
class FactureFinanceService
{
private $em;
private $trans;
private $params;
private $security;
private $session;
private $twig;
private $notification;
private $fournisseurService;
const API_KEY_MINDEE = '3e387daa959dc24c042d11c37bd76db5';
const CHARGE_INVESTISSEMENT_DEPENSE = [
'CAPEX - Connection' => 'I',
'CAPEX - EPC' => 'I',
'CAPEX – Rent' => 'I',
'CAPEX - Insurance' => 'I',
'CAPEX – Monitoring' => 'I',
'CAPEX - Soulte' => 'I',
'CAPEX - Sponsor fee' => 'I',
'DEVEX - Architect' => 'I',
'DEVEX - DD legal' => 'I',
'DEVEX - DD technical' => 'I',
'DEVEX - Developer' => 'I',
'DEVEX - Geology' => 'I',
'DEVEX - Surveying' => 'I',
'DEVEX - Notary' => 'I',
'DEVEX - Baillif' => 'I',
'OPEX - Accounting' => 'C',
'OPEX - Bank account management' => 'C',
'OPEX - Corporation tax' => 'C',
'OPEX - EDF / Enedis / Gérédis' => 'C',
'OPEX - Expense account' => 'C',
'OPEX - Insurance' => 'C',
'OPEX - Legal' => 'C',
'OPEX - Local taxes' => 'C',
'OPEX - NICs & pensions' => 'C',
'OPEX - NDF' => 'C',
'OPEX - O&M' => 'C',
'OPEX - Other' => 'C',
'OPEX - Rent' => 'C',
'OPEX - Salaries' => 'C',
'OPEX - Tax' => 'C',
'OPEX - Tax - IFER' => 'C',
'OPEX - Tax - CFE' => 'C',
'OPEX - Tax - CVAE' => '-',
'OPEX - Telecom' => 'C',
'OTHER - Centralised cash management' => 'C',
'OTHER - Financial costs - Bank - Interest/Margin' => 'C',
'OTHER - Intraco' => 'C',
'OTHER - Management fees' => 'C',
'OTHER - Rebilling' => 'C',
'OTHER - SHL' => 'C',
'OTHER - Swap costs' => 'C',
'OTHER - VAT bridging loan' => 'C',
'OTHER - VAT payment' => 'C',
'OTHER - VAT refund' => 'C',
'CAPEX - AUTRES' => 'I',
'CAPEX - RACCORDEMENT' => 'I',
'CAPEX IMMO - TRAVAUX' => 'I',
'CAPEX STOCK - TRAVAUX' => 'C',
'CAPEX - ASSURANCES' => 'I',
'CAPEX - LOCATION' => 'I',
'CAPEX - STOCK' => 'C',
'DEVEX IMMO - HONORAIRES EXTERNES' => 'I',
'DEVEX STOCK - HONORAIRES EXTERNES' => 'C',
'DEVEX IMMO - HUISSIER' => 'I',
'DEVEX STOCK - HUISSIER' => 'C',
'DEVEX IMMO - CONSEILS LEGAUX' => 'I',
'DEVEX STOCK - CONSEILS LEGAUX' => 'C',
'DEVEX IMMO - DD TECHNIQUE' => 'I',
'DEVEX STOCK - DD TECHNIQUE' => 'C',
'DEVEX IMMO - DEVELOPPEUR' => 'I',
'DEVEX STOCK - DEVELOPPEUR' => 'C',
'DEVEX IMMO - NOTAIRE' => 'I',
'DEVEX STOCK - NOTAIRE' => 'C',
'OPEX - COMPTABILITE' => 'C',
'OPEX - ADMINISTRATIF' => 'C',
'OPEX - FRAIS BANCAIRES' => 'C',
'OPEX - EDF / Enedis / Gérédis' => 'C',
'OPEX - ASSURANCES' => 'C',
'OPEX - JURIDIQUE' => 'C',
'OPEX - O&M' => 'C',
'OPEX - AUTRES' => 'C',
'OPEX - LOYERS' => 'C',
'OPEX - TELECOM' => 'C',
'CAPEX IMMO - ACQUISITION TERRAIN' => 'I'
];
public function __construct(
Environment $twig,
SessionInterface $session,
Security $security,
ParameterBagInterface $params,
EntityManagerInterface $em,
TranslatorInterface $trans,
ValidatorInterface $validator,
FlashBagInterface $flashBag,
UserPasswordEncoderInterface $passwordEncoder,
Notifications $notifications,
EtapsService $etapsService,
FormFactoryInterface $form,
HistoryService $historyService,
RouterInterface $router,
FournisseurService $fournisseurService
) {
$this->em = $em;
$this->trans = $trans;
$this->params = $params;
$this->security = $security;
$this->session = $session;
$this->twig = $twig;
$this->validator = $validator;
$this->form = $form;
$this->flashBag = $flashBag;
$this->passwordEncoder = $passwordEncoder;
$this->notification = $notifications;
$this->etapsService = $etapsService;
$this->router = $router;
$this->historyService = $historyService;
$this->fournisseurService = $fournisseurService;
}
public function addFactureFinance($request,$user)
{
$facture = new FactureFinance();
$form = $this->form->create(FactureFinanceType::class, $facture);
$form->add('datePaiement', DateType::class, [
'widget' => 'single_text',
'attr' => ['class' => 'js-datepicker d-none'],
'format' => 'yyyy-MM-dd',
'html5' => true,
'empty_data' => '',
'required' => false
]) ;
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$userCurrent = $this->security->getUser();
$spv = $form->get('spv')->getData();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFactureSpv()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à créer la facture</p>',
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
if ($spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFacturePrejeance()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à créer la facture</p>',
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
}
$projectFactureFinance = $form->get('projectFactureFinance')->getData();
$montantHt = $form->get('monatantHt')->getData();
$montantHtProject = 0;
$isProjectAltarea = false;
if(count($projectFactureFinance)> 0){
foreach ($projectFactureFinance as $value){
$montantHtProject = $montantHtProject + floatval(str_replace([','], ".", str_replace([' '], "", $value->getMontantHt())));
if($value->getProject() && $value->getProject()->getEntreprise() && $value->getProject()->getEntreprise()->getIsAlteria()){
// $isProjectAltarea = true;
}
}
if($montantHtProject != 0){
if((string)$montantHtProject != (string)floatval($montantHt)){
return [
'form' => $form->createView(),
'messageErreur' => '<p>Veuillez verifier les prix des projets</p><p>Il faut que le prix du projet corresponde au prix global</p>',
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
}
if($isProjectAltarea){
return [
'form' => $form->createView(),
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">Les projets Altarea sont actuellement indisponibles sur le module Finance.</p><p class="blockCheckProjectAltarea2"> Seuls les projets Préjeance Industrial restent accessibles pour le moment.</p></div>',
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
}else{
return [
'form' => $form->createView(),
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champs projet est obligatoire !</p></div>',
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
$facture->setUserCreated($user);
$facture->setStatus(FactureFinance::STATUS_EN_ATTENT_VALIDATION);
$fileFactureToken = $request->get('fileFactureFinance');
if($fileFactureToken){
$fileFacture = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileFactureToken]);
$nomenclature = $this->getNomenclature($facture,$fileFacture);
$facture->setFileFacture($fileFacture);
}
$ribInput = $request->get('ribInput');
if($ribInput){
$rib = $this->em->getRepository(Rib::class)->find($ribInput);
$facture->setRib($rib);
}
$ribInputSpv = $request->get('ribInputSpv');
if($ribInputSpv){
$ribSpv = $this->em->getRepository(Rib::class)->find($ribInputSpv);
$facture->setRibSpv($ribSpv);
}
// if(!$ribInput || !$ribInputSpv || $ribInput == 0 || $ribInputSpv == 0){
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">les champs rib fournisseur et rib spv sont obligatoires !</p></div>',
// 'success' => false,
// 'action' => $this->router->generate('admin_facture_finance_submit'),
// ];
// }else{
// if($ribInputSpv != 0){
// $ribSpv = $this->em->getRepository(Rib::class)->find($ribInputSpv);
// if($ribSpv){
// if (preg_match('/^[a-zA-Z0-9]+$/', $ribSpv->getIban())) {
//
// } else {
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champ rib spv n\'est pas valide !</p></div>',
// 'success' => false,
// 'action' => $this->router->generate('admin_facture_finance_submit'),
// ];
// }
// }
// }
// }
$this->em->persist($facture);
$this->em->flush();
$this->notification->setCompteurErpiPiece($facture);
$this->notification->setCompteurErpiEcriture($facture);
if(in_array('ROLE_OPERATEUR_FINANCIER', $user->getRoles())){
$usersTo = $this->em->getRepository(User::class)->getUserByRole('ROLE_ADMINISTRATEUR_FINANCIER');
if($usersTo){
foreach ($usersTo as $userTo){
$this->notification->addNotificationFacture($userTo,$user,$facture,'La facture n°'.$facture->getNumeroFacture30Max().' est en attente de validation');
}
}
}
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => true
];
}
return [
'form' => $form->createView(),
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
public function addFactureFinanceOld($request,$user)
{
$facture = new FactureFinance();
$form = $this->form->create(FactureFinanceType::class, $facture);
$form->add('datePaiement', DateType::class, [
'widget' => 'single_text',
'attr' => ['class' => 'js-datepicker d-none'],
'format' => 'yyyy-MM-dd',
'html5' => true,
'empty_data' => '',
'required' => false
]) ;
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$userCurrent = $this->security->getUser();
$spv = $form->get('spv')->getData();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFactureSpv()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à créer la facture</p>',
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
if ($spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFacturePrejeance()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à créer la facture</p>',
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit'),
];
}
}
$facture->setUserCreated($user);
$facture->setStatus(FactureFinance::STATUS_VERFIFIER_ANCIENT);
$fileFactureToken = $request->get('fileFactureFinance');
if($fileFactureToken){
$fileFacture = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileFactureToken]);
$nomenclature = $this->getNomenclature($facture,$fileFacture);
$facture->setFileFacture($fileFacture);
}
$this->em->persist($facture);
$this->em->flush();
$this->notification->setCompteurErpiPiece($facture);
$this->notification->setCompteurErpiEcriture($facture);
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => true
];
}
return [
'form' => $form->createView(),
'success' => false,
'action' => $this->router->generate('admin_facture_finance_old_submit'),
];
}
public function convertFactureFinanceOld($facture)
{
if ($facture->getStatus() == FactureFinance::STATUS_EN_ATTENT_VALIDATION) {
$facture->setStatus(FactureFinance::STATUS_VERFIFIER_ANCIENT);
$this->em->persist($facture);
$this->em->flush();
return true;
}
return false;
}
public function getNomenclature($facture,$file){
if(is_object($facture) && is_object($file)){
$numFacture = $facture->getNumeroFacture()?$facture->getNumeroFacture():'' ;
$nameSpv = $facture->getSpv() ? $facture->getSpv()->getName() : '';
$nameFournisseur = $facture->getFournisseur() ? $facture->getFournisseur()->getName() : '';
$date = $facture->getDateFacture() ? $facture->getDateFacture()->format('ymd') : '';
$montant = $facture->getMonatantTtc() ? $facture->getMonatantTtc().'€' : '';
$extension = substr($file->getPath(), strrpos($file->getPath(), ".",-1) + 1);
$nomenclature = $nameFournisseur.' - '.$nameSpv.' - '.$numFacture.' - '.$date.' - '.$montant.'.'.$extension;
$file->setNomenclature($nomenclature);
$this->em->persist($file);
$this->em->flush();
return $nomenclature;
}
return false;
}
public function editFactureFinance($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$prjectIds = null ;
if($facture->getSpv()){
$projects = $this->em->getRepository(Project::class)->findBy(['spv'=>$facture->getSpv()->getId()]);
foreach ($projects as $project ){
$prjectIds[] = $project->getId();
}
}
if($facture){
$form = $this->form->create(FactureFinanceType::class, $facture,['projectIds'=>$prjectIds]);
// if($facture->getStatus() == FactureFinance::STATUS_PAYER or $facture->getStatus() == FactureFinance::STATUS_DATE_PAIEMENT_PAYER or $facture->getStatus() == FactureFinance::STATUS_PAYER_NEW or $facture->getStatus() == FactureFinance::STATUS_DATE_PAIEMENT_PAYER_NEW or $facture->getStatus() == FactureFinance::STATUS_VERFIFIER_ANCIENT ){
$form->add('datePaiement', DateType::class, [
'widget' => 'single_text',
'attr' => ['class' => 'js-datepicker d-none'],
'format' => 'yyyy-MM-dd',
'html5' => true,
'empty_data' => '',
'required' => false
]) ;
// }
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$userCurrent = $this->security->getUser();
$spv = $form->get('spv')->getData();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFactureSpv()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à modifier la facture</p>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
];
}
if ($spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFacturePrejeance()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à modifier la facture</p>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
];
}
}
$projectFactureFinance = $form->get('projectFactureFinance')->getData();
$montantHt = $form->get('monatantHt')->getData();
$montantHtProject = 0;
$isProjectAltarea = false;
if(count($projectFactureFinance)> 0){
foreach ($projectFactureFinance as $value){
$montantHtProject = $montantHtProject + floatval(str_replace([','], ".", str_replace([' '], "", $value->getMontantHt())));
if($value->getProject() && $value->getProject()->getEntreprise() && $value->getProject()->getEntreprise()->getIsAlteria()){
// $isProjectAltarea = true;
}
}
if($montantHtProject != 0){
if((string)$montantHtProject != (string)floatval($montantHt)){
return [
'form' => $form->createView(),
'messageErreur' => '<p>Veuillez verifier les prix des projets</p><p>Il faut que le prix du projet corresponde au prix global</p>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
];
}
}
// if($isProjectAltarea){
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">Les projets Altarea sont actuellement indisponibles sur le module Finance.</p><p class="blockCheckProjectAltarea2"> Seuls les projets Préjeance Industrial restent accessibles pour le moment.</p></div>',
// 'success' => false,
// 'factureFinance' => $facture,
// 'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
// ];
// }
}else{
return [
'form' => $form->createView(),
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champs projet est obligatoire !</p></div>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
];
}
$fileFactureToken = $request->get('fileFactureFinance');
if($fileFactureToken){
$fileFacture = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileFactureToken]);
$nomenclature = $this->getNomenclature($facture,$fileFacture);
$facture->setFileFacture($fileFacture);
}
if($facture->getStatus() == FactureFinance::STATUS_DEMANDE_MODIFICATION){
$facture->setStatus(FactureFinance::STATUS_A_VERIFIER);
}elseif ($facture->getStatus() == FactureFinance::STATUS_A_COMPLETER){
$facture->setStatus(FactureFinance::STATUS_EN_ATTENT_VALIDATION);
}
$ribInput = $request->get('ribInput');
if($ribInput){
$rib = $this->em->getRepository(Rib::class)->find($ribInput);
$facture->setRib($rib);
}
$ribInputSpv = $request->get('ribInputSpv');
if($ribInputSpv){
$ribSpv = $this->em->getRepository(Rib::class)->find($ribInputSpv);
$facture->setRibSpv($ribSpv);
}
// if(!$ribInput || !$ribInputSpv || $ribInput == 0 || $ribInputSpv == 0){
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">les champs rib fournisseur et rib spv sont obligatoires !</p></div>',
// 'success' => false,
// 'factureFinance' => $facture,
// 'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
// ];
// }else{
// if($ribInputSpv != 0){
// $ribSpv = $this->em->getRepository(Rib::class)->find($ribInputSpv);
// if($ribSpv){
// if (preg_match('/^[a-zA-Z0-9]+$/', $ribSpv->getIban())) {
//
// } else {
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champ rib spv n\'est pas valide !</p></div>',
// 'success' => false,
// 'factureFinance' => $facture,
// 'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
// ];
// }
// }
// }
// }
$this->em->persist($facture);
$this->em->flush();
// add project in Produit(s)/Service(s)
$tvaFactureFinancePriceService = $request->get('tvaFactureFinancePriceService');
$tvaFactureFinancePriceServiceOld = $this->em->getRepository(FactureFinanceMontantTvaProject::class)->getByFacture($facture);
if($tvaFactureFinancePriceServiceOld){
foreach ($tvaFactureFinancePriceServiceOld as $value){
$this->em->remove($value);
}
$this->em->flush();
}
if($tvaFactureFinancePriceService){
foreach ($tvaFactureFinancePriceService as $tvaFactureFinancePriceServiceItem) {
foreach ($tvaFactureFinancePriceServiceItem as $item) {
if(isset($item['project'])){
$tvaFactureFinance = $this->em->getRepository(FactureFinanceMontantTva::class)->find($item['idService']);
$project = $this->em->getRepository(Project::class)->find($item['project']);
$tvaFactureFinancePriceServiceEntity = new FactureFinanceMontantTvaProject();
$tvaFactureFinancePriceServiceEntity->setFactureFinanceMontantTva($tvaFactureFinance);
$tvaFactureFinancePriceServiceEntity->setProject($project);
$tvaFactureFinancePriceServiceEntity->setMontantHt($item['montantHt']);
$tvaFactureFinancePriceServiceEntity->setMontantTtc($item['montantTtc']);
$this->em->persist($tvaFactureFinancePriceServiceEntity);
$this->em->flush();
}
}
}
}
$this->notification->setCompteurErpiEcriture($facture);
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => true
];
}
}
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit_edit',['token'=>$token]),
];
}
public function editFactureFinanceV2($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$prjectIds = null ;
if($facture->getSpv()){
$projects = $this->em->getRepository(Project::class)->findBy(['spv'=>$facture->getSpv()->getId()]);
foreach ($projects as $project ){
$prjectIds[] = $project->getId();
}
}
if($facture){
$form = $this->form->create(FactureFinanceV2Type::class, $facture,['projectIds'=>$prjectIds]);
$form->add('datePaiement', DateType::class, [
'widget' => 'single_text',
'attr' => ['class' => 'js-datepicker d-none'],
'format' => 'yyyy-MM-dd',
'html5' => true,
'empty_data' => '',
'required' => false
]) ;
$form->handleRequest($request);
if($facture->getStatus() == FactureFinance::STATUS_REFUS){
$this->flashBag->add(
'danger',
'Facture refusée'
);
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => false,
'redirect' => true,
'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
];
}
if ($form->isSubmitted() && $form->isValid()) {
$userCurrent = $this->security->getUser();
$spv = $form->get('spv')->getData();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFactureSpv()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à modifier la facture</p>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
];
}
if ($spv->getIsPrejeance() && !$userCurrent->getIsAccesCreateFacturePrejeance()) {
return [
'form' => $form->createView(),
'messageErreur' => '<p>vous n\'êtes pas autorisé à modifier la facture</p>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
];
}
}
$projectFactureFinance = $form->get('projectFactureFinance')->getData();
$montantHt = $form->get('monatantHt')->getData();
$montantHtProject = 0;
$isProjectAltarea = false;
if(count($projectFactureFinance)> 0){
foreach ($projectFactureFinance as $value){
$montantHtProject = $montantHtProject + floatval(str_replace([','], ".", str_replace([' '], "", $value->getMontantHt())));
if($value->getProject() && $value->getProject()->getEntreprise() && $value->getProject()->getEntreprise()->getIsAlteria()){
$isProjectAltarea = true;
}
}
if($montantHtProject != 0){
if((string)$montantHtProject != (string)floatval($montantHt)){
return [
'form' => $form->createView(),
'messageErreur' => '<p>Veuillez verifier les prix des projets</p><p>Il faut que le prix du projet corresponde au prix global</p>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
];
}
}
// if($isProjectAltarea){
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">Les projets Altarea sont actuellement indisponibles sur le module Finance.</p><p class="blockCheckProjectAltarea2"> Seuls les projets Préjeance Industrial restent accessibles pour le moment.</p></div>',
// 'success' => false,
// 'factureFinance' => $facture,
// 'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
// ];
// }
}else{
return [
'form' => $form->createView(),
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champs projet est obligatoire !</p></div>',
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
];
}
// Si Taux de TVA = "Autre" (0) : les sommes des lignes de TVA doivent correspondre aux montants globaux
if($facture->getAutoliquidation()){
$facture->setTauxTva(20);
}elseif(count($facture->getTvaFactureFinance()) > 0 && $facture->getTauxTva() !== null && $facture->getTauxTva() !== '' && floatval($facture->getTauxTva()) == 0){
$sumTvaAutre = 0; $sumHtAutre = 0; $sumTtcAutre = 0;
foreach ($facture->getTvaFactureFinance() as $ligneTva){
$sumTvaAutre += floatval(str_replace(',', '.', str_replace(' ', '', (string)$ligneTva->getTva())));
$sumHtAutre += floatval(str_replace(',', '.', str_replace(' ', '', (string)$ligneTva->getMontantHt())));
$sumTtcAutre += floatval(str_replace(',', '.', str_replace(' ', '', (string)$ligneTva->getMontantTtc())));
}
$tvaGlobal = floatval(str_replace(',', '.', str_replace(' ', '', (string)$facture->getTva())));
$htGlobal = floatval(str_replace(',', '.', str_replace(' ', '', (string)$facture->getMonatantHt())));
$ttcGlobal = floatval(str_replace(',', '.', str_replace(' ', '', (string)$facture->getMonatantTtc())));
if(round($sumTvaAutre, 2) != round($tvaGlobal, 2)
|| round($sumHtAutre, 2) != round($htGlobal, 2)
|| round($sumTtcAutre, 2) != round($ttcGlobal, 2)){
$erreurs = '';
if(round($sumTvaAutre, 2) != round($tvaGlobal, 2)){
$erreurs .= '<p>La somme des montants TVA des lignes ('.$sumTvaAutre.') ne correspond pas au Montant TVA ('.$tvaGlobal.').</p>';
}
if(round($sumHtAutre, 2) != round($htGlobal, 2)){
$erreurs .= '<p>La somme des montants HT des lignes ('.$sumHtAutre.') ne correspond pas au Montant HT ('.$htGlobal.').</p>';
}
if(round($sumTtcAutre, 2) != round($ttcGlobal, 2)){
$erreurs .= '<p>La somme des montants TTC des lignes ('.$sumTtcAutre.') ne correspond pas au Montant TTC ('.$ttcGlobal.').</p>';
}
return [
'form' => $form->createView(),
'messageErreur' => $erreurs,
'success' => false,
'factureFinance' => $facture,
'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
];
}
}
$fileFactureToken = $request->get('fileFactureFinance');
if($fileFactureToken){
$fileFacture = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileFactureToken]);
$nomenclature = $this->getNomenclature($facture,$fileFacture);
$facture->setFileFacture($fileFacture);
}
if($facture->getStatus() == FactureFinance::STATUS_DEMANDE_MODIFICATION){
$facture->setStatus(FactureFinance::STATUS_A_VERIFIER);
}elseif ($facture->getStatus() == FactureFinance::STATUS_A_COMPLETER){
$facture->setStatus(FactureFinance::STATUS_EN_ATTENT_VALIDATION);
}
$ribInput = $request->get('ribInput');
if($ribInput){
$rib = $this->em->getRepository(Rib::class)->find($ribInput);
$facture->setRib($rib);
}
$ribInputSpv = $request->get('ribInputSpv');
if($ribInputSpv){
$ribSpv = $this->em->getRepository(Rib::class)->find($ribInputSpv);
$facture->setRibSpv($ribSpv);
}
$this->em->persist($facture);
$this->em->flush();
$this->notification->setCompteurErpiEcriture($facture);
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => true
];
}
}
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => false,
'action' => $this->router->generate('admin_facture_finance_v2_submit_edit',['token'=>$token]),
];
}
public function checkRibSpv($request,$token){
$factureFinance = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$ribInput = $factureFinance->getRib();
$ribInputSpv = $factureFinance->getRibSpv();
if(!$ribInput || !$ribInputSpv){
return [
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">les champs rib fournisseur et rib spv sont obligatoires !</p></div>',
'success' => false,
'status' => 1,
];
}else{
if($ribInputSpv){
if (preg_match('/^[a-zA-Z0-9]+$/', $ribInputSpv->getIban())) {
} else {
return [
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champ rib spv n\'est pas valide !</p></div>',
'success' => false,
'status' => 2,
];
}
}
}
return [
'messageErreur' => '',
'success' => true,
];
}
public function editFactureFinanceBrouillon($request,$token)
{
$facture = $this->em->getRepository(FactureFinanceBrouillon::class)->findOneBy(['token'=>$token]);
if($facture){
$form = $this->form->create(FactureFinanceBrouillonType::class, $facture);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$fileFactureToken = $request->get('fileFactureFinance');
if($fileFactureToken){
$fileFacture = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$fileFactureToken]);
$facture->setFileFacture($fileFacture);
}
if($facture->getCategory() == 'Avoir'){
$this->em->persist($facture);
$this->em->flush();
$factureFinance = new Avoir();
$factureFinance->setFileAvoir($facture->getFileFacture());
$factureFinance->setStatus(Avoir::STATUS_EN_ATTENT_VALIDATION);
$factureFinance->setDateAvoir($facture->getDateFacture());
$factureFinance->setDeveloppeur($facture->getDeveloppeur());
$factureFinance->setEpc($facture->getEpc());
$factureFinance->setFournisseur($facture->getFournisseur());
$factureFinance->setMonatantTtc($facture->getMonatantTtc());
$factureFinance->setMonatantHt($facture->getMonatantHt());
$factureFinance->setNote($facture->getNote());
$factureFinance->setNumeroAvoir($facture->getNumeroFacture());
$factureFinance->setSpv($facture->getSpv());
$factureFinance->setTauxTva($facture->getTauxTva());
$factureFinance->setTva($facture->getTva());
$factureFinance->setUserCreated($facture->getUserCreated());
if (count($facture->getProjectFactureFinanceBrouillon())) {
foreach ($facture->getProjectFactureFinanceBrouillon() as $projectBrouillon) {
$projectFactureFinance = new ProjectAvoir();
$projectFactureFinance->setTva($projectBrouillon->getTva());
$projectFactureFinance->setCategory($projectBrouillon->getCategory());
$projectFactureFinance->setProject($projectBrouillon->getProject());
$projectFactureFinance->setEtap($projectBrouillon->getEtap());
$projectFactureFinance->setMontantHt($projectBrouillon->getMontantHt());
$projectFactureFinance->setMontantTtc($projectBrouillon->getMontantTtc());
$projectFactureFinance->setAvoir($factureFinance);
$this->em->persist($projectFactureFinance);
}
}
$this->em->persist($factureFinance);
$this->em->flush();
$this->notification->setCompteurErpiPiece(null,$factureFinance);
$this->notification->setCompteurErpiEcriture(null,$facture);
$facture->setStatus(FactureFinance::STATUS_Brouillon_valide);
$this->em->persist($facture);
$this->em->flush();
if($factureFinance->getFileFacture()){
$this->getNomenclatureAvoir($factureFinance,$factureFinance->getFileFacture());
}
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'avoir' => $factureFinance,
'success' => true
];
}else {
$projectFactureFinance = $form->get('projectFactureFinanceBrouillon')->getData();
$montantHt = $form->get('monatantHt')->getData();
$montantHtProject = 0;
$isProjectAltarea = false;
if(count($projectFactureFinance)> 0){
foreach ($projectFactureFinance as $value){
$montantHtProject = $montantHtProject + floatval(str_replace([','], ".", str_replace([' '], "", $value->getMontantHt())));
if($value->getProject() && $value->getProject()->getEntreprise() && $value->getProject()->getEntreprise()->getIsAlteria()){
// $isProjectAltarea = true;
}
}
if($montantHtProject != 0){
if((string)$montantHtProject != (string)floatval($montantHt)){
return [
'form' => $form->createView(),
'messageErreur' => '<p>Veuillez verifier les prix des projets</p><p>Il faut que le prix du projet corresponde au prix global</p>',
'factureFinance' => $facture,
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit_brouillon', ['token' => $token]),
];
}
}
if($isProjectAltarea){
return [
'form' => $form->createView(),
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">Les projets Altarea sont actuellement indisponibles sur le module Finance.</p><p class="blockCheckProjectAltarea2"> Seuls les projets Préjeance Industrial restent accessibles pour le moment.</p></div>',
'factureFinance' => $facture,
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit_brouillon', ['token' => $token]),
];
}
}else{
return [
'form' => $form->createView(),
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champs projet est obligatoire !</p></div>',
'factureFinance' => $facture,
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit_brouillon', ['token' => $token]),
];
}
$factureFinanceOld = $this->em->getRepository(FactureFinance::class)->findOneBy(['numeroFacture' => $facture->getNumeroFacture(), 'fournisseur' => $facture->getFournisseur()]);
if ($factureFinanceOld) {
return [
'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">facture existe déja!</p></div>',
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit_brouillon', ['token' => $token]),
];
}
$facture->setStatus(FactureFinance::STATUS_EN_ATTENT_VALIDATION);
$this->em->persist($facture);
$this->em->flush();
$factureFinance = new FactureFinance();
$facture->setFileFacture($fileFacture);
$factureFinance->setFileFacture($facture->getFileFacture());
$factureFinance->setStatus($facture->getStatus());
$factureFinance->setCategory($facture->getCategory());
$factureFinance->setClassification($facture->getClassification());
$factureFinance->setDate($facture->getDate());
$factureFinance->setDateFacture($facture->getDateFacture());
$factureFinance->setDatePaiement($facture->getDatePaiement());
$factureFinance->setDelaiPaiementDate($facture->getDelaiPaiementDate());
$factureFinance->setDeveloppeur($facture->getDeveloppeur());
$factureFinance->setEpc($facture->getEpc());
$factureFinance->setFournisseur($facture->getFournisseur());
$factureFinance->setMonatantTtc($facture->getMonatantTtc());
$factureFinance->setMonatantHt($facture->getMonatantHt());
$factureFinance->setNote($facture->getNote());
$factureFinance->setNumeroFacture($facture->getNumeroFacture());
$factureFinance->setSpv($facture->getSpv());
$factureFinance->setTauxTva($facture->getTauxTva());
$factureFinance->setTva($facture->getTva());
$factureFinance->setUserCreated($facture->getUserCreated());
if (count($facture->getProjectFactureFinanceBrouillon()) > 0) {
foreach ($facture->getProjectFactureFinanceBrouillon() as $projectBrouillon) {
$projectFactureFinance = new ProjectFactureFinance();
$projectFactureFinance->setTva($projectBrouillon->getTva());
$projectFactureFinance->setCategory($projectBrouillon->getCategory());
$projectFactureFinance->setProject($projectBrouillon->getProject());
$projectFactureFinance->setEtap($projectBrouillon->getEtap());
$projectFactureFinance->setMontantHt($projectBrouillon->getMontantHt());
$projectFactureFinance->setMontantTtc($projectBrouillon->getMontantTtc());
$projectFactureFinance->setFactureFinance($factureFinance);
$this->em->persist($projectFactureFinance);
}
}else{
}
$ribInput = $request->get('ribInput');
if($ribInput){
$rib = $this->em->getRepository(Rib::class)->find($ribInput);
$facture->setRib($rib);
}
$ribInputSpv = $request->get('ribInputSpv');
if($ribInputSpv){
$ribSpv = $this->em->getRepository(Rib::class)->find($ribInputSpv);
$facture->setRibSpv($ribSpv);
}
// if(!$ribInput || !$ribInputSpv || $ribInput == 0 || $ribInputSpv == 0){
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">les champs rib fournisseur et rib spv sont obligatoires !</p></div>',
// 'factureFinance' => $facture,
// 'success' => false,
// 'action' => $this->router->generate('admin_facture_finance_submit_brouillon', ['token' => $token]),
// ];
// }else{
// if($ribInputSpv != 0){
// $ribSpv = $this->em->getRepository(Rib::class)->find($ribInputSpv);
// if($ribSpv){
// if (preg_match('/^[a-zA-Z0-9]+$/', $ribSpv->getIban())) {
//
// } else {
// return [
// 'form' => $form->createView(),
// 'messageErreur' => '<div class="blockCheckProjectAltarea"><p class="blockCheckProjectAltarea1">le champ rib spv n\'est pas valide !</p></div>',
// 'factureFinance' => $facture,
// 'success' => false,
// 'action' => $this->router->generate('admin_facture_finance_submit_brouillon', ['token' => $token]),
// ];
// }
// }
// }
// }
$this->em->persist($factureFinance);
$this->em->flush();
$this->notification->setCompteurErpiPiece($factureFinance);
$this->notification->setCompteurErpiEcriture($factureFinance);
$facture->setStatus(FactureFinance::STATUS_Brouillon_valide);
$this->em->persist($facture);
$this->em->flush();
if($facture->getCommentaire()) {
$commentFactureFinance = new CommentFactureFinance();
$commentFactureFinance->setFactureFinance($factureFinance);
$commentFactureFinance->setComment($facture->getCommentaire());
$commentFactureFinance->setUser($this->security->getUser());
$this->em->persist($commentFactureFinance);
$this->em->flush();
}
if($factureFinance->getFileFacture()){
$this->getNomenclature($factureFinance,$factureFinance->getFileFacture());
}
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'facture' => $factureFinance,
'success' => true
];
}
}
}
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => false,
'action' => $this->router->generate('admin_facture_finance_submit_brouillon',['token'=>$token]),
];
}
public function paginateFacture($request,$isAfaire = false,$isPayer = false){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$spv = $request->get('spv');
$fournisseur = $request->get('fournisseur');
$status = $request->get('statusFactureFinance');
$btnTypeTab = $request->get('btnTypeTab');
$arraySession = [];
$arraySession['search'] = trim(@$search['value']);
$arraySession['spv'] = $spv;
$arraySession['fournisseur'] = $fournisseur;
$arraySession['statusFactureFinance'] = $status;
$arraySession['length'] = $length;
$arraySession['btnTypeTab'] = $btnTypeTab;
$this->session->set('arraySessionFilterFactureFinance',$arraySession);
$searchTabDate = $request->get('searchTabDate');
$responsableProject = $request->get('responsableProject');
$responsableDevProject = $request->get('responsableDevProject');
$classificationFactureFinance = $request->get('classificationFactureFinance');
$paiementFactureDate = $request->get('paiementFactureDate');
$paiementFactureDate1 = $request->get('paiementFactureDate1') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate1')) : null ;
$paiementFactureDate2 = $request->get('paiementFactureDate2') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate2')) : null;
$filters = [
'query' => trim(@$search['value']),
'spv' => $spv,
'fournisseur' => $fournisseur,
'status' => $status,
'isAfaire' => $isAfaire,
'isPayer' => $isPayer,
'paiementFactureDate' => $paiementFactureDate,
'btnTypeTab' => $btnTypeTab,
'paiementFactureDate1' => $paiementFactureDate1,
'paiementFactureDate2' => $paiementFactureDate2,
'responsableProject' => $responsableProject,
'classificationFactureFinance' => $classificationFactureFinance,
'responsableDevProject' => $responsableDevProject
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\FactureFinance::class)->search(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
foreach ($factureFinances as $factureFinance) {
$action =
$this->twig->render(
'admin/facture-finance/default/bouton.html.twig', array(
'factureFinance' => $factureFinance
));
$action2 =
$this->twig->render(
'admin/facture-finance/default/bouton-valid.html.twig', array(
'factureFinance' => $factureFinance
));
$action3 =
$this->twig->render(
'admin/facture-finance/default/bouton3.html.twig', array(
'factureFinance' => $factureFinance
));
$statut =
$this->twig->render(
'admin/facture-finance/default/status.html.twig', array(
'status' => $factureFinance->getStatus(),
'factureFinance' => $factureFinance,
));
$dateValid =
$this->twig->render(
'admin/facture-finance/default/input-date-valid.html.twig', array(
'factureFinance' => $factureFinance
));
$btnSelect =
$this->twig->render(
'admin/facture-finance/default/btnSelect.html.twig', array(
'factureFinance' => $factureFinance
));
$fluxBancaireSpv = '';
$banqueSpvStr = '';
if($factureFinance->getSpv()){
$fluxBancaireSpv = $factureFinance->getSpv()->getFluxBancaire() ? 'Exabanque' : 'Manuel';
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId(), 'isDefault' => true]);
if(!$spvBanque){
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId()]);
}
if($spvBanque){
$banqueSpvStr = $spvBanque->getBanque();
}
}
$banqueFourniseurStr = '';
if($factureFinance->getFournisseur()){
if($factureFinance->getRib()) {
$fournisseurBanque = $factureFinance->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $factureFinance->getFournisseur()->getId(), 'isDefault' => true]);
}
if(!$fournisseurBanque){
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $factureFinance->getFournisseur()->getId()]);
}
if($fournisseurBanque){
$banqueFourniseurStr = $fournisseurBanque->getBanque();
}
}
if($factureFinance->getIsAvoir()){
$avoir = $factureFinance->getMonatantAvoirTtc();
if($factureFinance->getMonatantRestantTtc() == '0' ){
$isBanque = false;
}else{
$isBanque = true;
}
}else{
$avoir = 0;
$isBanque = true;
}
$projects = '';
if(count($factureFinance->getProjectFactureFinance())>0){
$projectsArray = [];
foreach ($factureFinance->getProjectFactureFinance() as $item){
if($item->getProject()){
$projectsArray[strtolower($item->getProject()->getName())] = $item;
}
}
ksort($projectsArray);
$project = reset($projectsArray);
if(count($factureFinance->getProjectFactureFinance()) == 1){
$projects = $project && $project->getProject() ? $project->getProject()->getName() : ' ' ;
}else{
$projects = $project && $project->getProject() ? $project->getProject()->getName().'...' : ' ' ;
}
}
$output['data'][] = [
'responsive_id' => '',
'id' => $factureFinance->getId(),
'numeroFacture' => $factureFinance->getNumeroFacture(),
'numeroFactureDiaposon' => $factureFinance->getNumeroFactureDiaposon(),
'compteurErpiPiece' => $factureFinance->getCompteurErpiPiece(),
'monatantTtc' => $factureFinance->getMonatantTtc() ? $this->espaceNumber($factureFinance->getMonatantTtc()).'€' : '',
'monatantHt' => $factureFinance->getMonatantHt() ? $this->espaceNumber($factureFinance->getMonatantHt()).'€' : '',
'tva' => $factureFinance->getTva() ? $factureFinance->getTva().'€' : '',
'category' => $factureFinance->getCategory() ? $factureFinance->getCategory() : '',
'fluxBancaireSpv' => $fluxBancaireSpv,
'fournisseur' => $factureFinance->getFournisseur() ? $factureFinance->getFournisseur()->getName() : '',
'developpeur' => $factureFinance->getDeveloppeur() ? $factureFinance->getDeveloppeur()->getFirstname().' '.$factureFinance->getDeveloppeur()->getLastname() : '',
'spv' => $factureFinance->getSpv() ? $factureFinance->getSpv()->getName() : '',
'date' => $factureFinance->getDelaiPaiementDate() ? $factureFinance->getDelaiPaiementDate()->format('d/m/Y') : '',
'banqueSpv' => $banqueSpvStr,
'banqueFourniseur' => $isBanque ? $banqueFourniseurStr : '---',
'classification' => $factureFinance->getClassification(),
'datePaiement' => $factureFinance->getDatePaiement() ? $factureFinance->getDatePaiement()->format('d/m/Y') : '',
'dateValidation' => $factureFinance->getDateValidation() ? $factureFinance->getDateValidation()->format('d/m/Y') : '',
'dateFacture' => $factureFinance->getDateFacture() ? $factureFinance->getDateFacture()->format('d/m/Y') : '',
'createdAt' => $factureFinance->getCreatedAt() ? $factureFinance->getCreatedAt()->format('d/m/Y') : '',
'status' => $statut,
'dateValid' => $dateValid,
'action' => $action,
'action2' => $action2,
'action3' => $action3,
'btnSelect' => $btnSelect,
'projects' => $projects,
'avoir' => $avoir.' €'
];
}
return $output;
}
public function paginateFactureArchive($request,$isAfaire = false,$isPayer = false){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$spv = $request->get('spv');
$fournisseur = $request->get('fournisseur');
$status = $request->get('statusFactureFinance');
$btnTypeTab = $request->get('btnTypeTab');
$arraySession = [];
$arraySession['search'] = trim(@$search['value']);
$arraySession['spv'] = $spv;
$arraySession['fournisseur'] = $fournisseur;
$arraySession['statusFactureFinance'] = $status;
$arraySession['length'] = $length;
$arraySession['btnTypeTab'] = $btnTypeTab;
$this->session->set('arraySessionFilterFactureFinance',$arraySession);
$searchTabDate = $request->get('searchTabDate');
$responsableProject = $request->get('responsableProject');
$responsableDevProject = $request->get('responsableDevProject');
$classificationFactureFinance = $request->get('classificationFactureFinance');
$paiementFactureDate = $request->get('paiementFactureDate');
$paiementFactureDate1 = $request->get('paiementFactureDate1') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate1')) : null ;
$paiementFactureDate2 = $request->get('paiementFactureDate2') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate2')) : null;
$filters = [
'query' => trim(@$search['value']),
'spv' => $spv,
'fournisseur' => $fournisseur,
'status' => $status,
'isAfaire' => $isAfaire,
'isPayer' => $isPayer,
'paiementFactureDate' => $paiementFactureDate,
'btnTypeTab' => $btnTypeTab,
'paiementFactureDate1' => $paiementFactureDate1,
'paiementFactureDate2' => $paiementFactureDate2,
'responsableProject' => $responsableProject,
'classificationFactureFinance' => $classificationFactureFinance,
'responsableDevProject' => $responsableDevProject,
'isArchive' => 1
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\FactureFinance::class)->search(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
foreach ($factureFinances as $factureFinance) {
$action =
$this->twig->render(
'admin/facture-finance/default/bouton.html.twig', array(
'factureFinance' => $factureFinance
));
$action2 =
$this->twig->render(
'admin/facture-finance/default/bouton-valid.html.twig', array(
'factureFinance' => $factureFinance
));
$action3 =
$this->twig->render(
'admin/facture-finance/default/bouton3.html.twig', array(
'factureFinance' => $factureFinance
));
$statut =
$this->twig->render(
'admin/facture-finance/default/status.html.twig', array(
'status' => $factureFinance->getStatus(),
'factureFinance' => $factureFinance,
));
$dateValid =
$this->twig->render(
'admin/facture-finance/default/input-date-valid.html.twig', array(
'factureFinance' => $factureFinance
));
$btnSelect =
$this->twig->render(
'admin/facture-finance/default/btnSelect.html.twig', array(
'factureFinance' => $factureFinance
));
$fluxBancaireSpv = '';
$banqueSpvStr = '';
if($factureFinance->getSpv()){
$fluxBancaireSpv = $factureFinance->getSpv()->getFluxBancaire() ? 'Exabanque' : 'Manuel';
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId(), 'isDefault' => true]);
if(!$spvBanque){
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId()]);
}
if($spvBanque){
$banqueSpvStr = $spvBanque->getBanque();
}
}
$banqueFourniseurStr = '';
if($factureFinance->getFournisseur()){
if($factureFinance->getRib()) {
$fournisseurBanque = $factureFinance->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $factureFinance->getFournisseur()->getId(), 'isDefault' => true]);
}
if(!$fournisseurBanque){
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $factureFinance->getFournisseur()->getId()]);
}
if($fournisseurBanque){
$banqueFourniseurStr = $fournisseurBanque->getBanque();
}
}
if($factureFinance->getIsAvoir()){
$avoir = $factureFinance->getMonatantAvoirTtc();
if($factureFinance->getMonatantRestantTtc() == '0' ){
$isBanque = false;
}else{
$isBanque = true;
}
}else{
$avoir = 0;
$isBanque = true;
}
$projects = '';
if(count($factureFinance->getProjectFactureFinance())>0){
$projectsArray = [];
foreach ($factureFinance->getProjectFactureFinance() as $item){
if($item->getProject()){
$projectsArray[strtolower($item->getProject()->getName())] = $item;
}
}
ksort($projectsArray);
$project = reset($projectsArray);
if(count($factureFinance->getProjectFactureFinance()) == 1){
$projects = $project && $project->getProject() ? $project->getProject()->getName() : ' ' ;
}else{
$projects = $project && $project->getProject() ? $project->getProject()->getName().'...' : ' ' ;
}
}
$output['data'][] = [
'responsive_id' => '',
'id' => $factureFinance->getId(),
'numeroFacture' => $factureFinance->getNumeroFacture(),
'numeroFactureDiaposon' => $factureFinance->getNumeroFactureDiaposon(),
'compteurErpiPiece' => $factureFinance->getCompteurErpiPiece(),
'monatantTtc' => $factureFinance->getMonatantTtc() ? $this->espaceNumber($factureFinance->getMonatantTtc()).'€' : '',
'monatantHt' => $factureFinance->getMonatantHt() ? $this->espaceNumber($factureFinance->getMonatantHt()).'€' : '',
'tva' => $factureFinance->getTva() ? $factureFinance->getTva().'€' : '',
'category' => $factureFinance->getCategory() ? $factureFinance->getCategory() : '',
'fluxBancaireSpv' => $fluxBancaireSpv,
'fournisseur' => $factureFinance->getFournisseur() ? $factureFinance->getFournisseur()->getName() : '',
'developpeur' => $factureFinance->getDeveloppeur() ? $factureFinance->getDeveloppeur()->getFirstname().' '.$factureFinance->getDeveloppeur()->getLastname() : '',
'spv' => $factureFinance->getSpv() ? $factureFinance->getSpv()->getName() : '',
'date' => $factureFinance->getDelaiPaiementDate() ? $factureFinance->getDelaiPaiementDate()->format('d/m/Y') : '',
'banqueSpv' => $banqueSpvStr,
'banqueFourniseur' => $isBanque ? $banqueFourniseurStr : '---',
'classification' => $factureFinance->getClassification(),
'datePaiement' => $factureFinance->getDatePaiement() ? $factureFinance->getDatePaiement()->format('d/m/Y') : '',
'dateValidation' => $factureFinance->getDateValidation() ? $factureFinance->getDateValidation()->format('d/m/Y') : '',
'dateFacture' => $factureFinance->getDateFacture() ? $factureFinance->getDateFacture()->format('d/m/Y') : '',
'createdAt' => $factureFinance->getCreatedAt() ? $factureFinance->getCreatedAt()->format('d/m/Y') : '',
'status' => $statut,
'dateValid' => $dateValid,
'action' => $action,
'action2' => $action2,
'action3' => $action3,
'btnSelect' => $btnSelect,
'projects' => $projects,
'avoir' => $avoir.' €'
];
}
return $output;
}
public function paginateFactureBrouillon($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$spv = $request->get('spv');
$fournisseur = $request->get('fournisseur');
$status = $request->get('statusFactureFinance');
$btnTypeTab = $request->get('btnTypeTab');
$arraySession = [];
$arraySession['search'] = trim(@$search['value']);
$arraySession['spv'] = $spv;
$arraySession['fournisseur'] = $fournisseur;
$arraySession['statusFactureFinance'] = $status;
$arraySession['length'] = $length;
$arraySession['btnTypeTab'] = $btnTypeTab;
$this->session->set('arraySessionFilterFactureFinance',$arraySession);
$searchTabDate = $request->get('searchTabDate');
$responsableProject = $request->get('responsableProject');
$responsableDevProject = $request->get('responsableDevProject');
$classificationFactureFinance = $request->get('classificationFactureFinance');
$paiementFactureDate = $request->get('paiementFactureDate');
$paiementFactureDate1 = $request->get('paiementFactureDate1') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate1')) : null ;
$paiementFactureDate2 = $request->get('paiementFactureDate2') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate2')) : null;
$filters = [
'query' => trim(@$search['value']),
'spv' => $spv,
'fournisseur' => $fournisseur,
'status' => $status,
'paiementFactureDate' => $paiementFactureDate,
'btnTypeTab' => $btnTypeTab,
'paiementFactureDate1' => $paiementFactureDate1,
'paiementFactureDate2' => $paiementFactureDate2,
'responsableProject' => $responsableProject,
'classificationFactureFinance' => $classificationFactureFinance,
'responsableDevProject' => $responsableDevProject
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinanceBrouillon::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\FactureFinanceBrouillon::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\FactureFinanceBrouillon::class)->search(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
foreach ($factureFinances as $factureFinance) {
$action =
$this->twig->render(
'admin/facture-finance/default/boutonBrouillon.html.twig', array(
'factureFinance' => $factureFinance
));
$statut =
$this->twig->render(
'admin/facture-finance/default/status.html.twig', array(
'status' => $factureFinance->getStatus(),
'factureFinance' => $factureFinance,
));
$btnSelect =
$this->twig->render(
'admin/facture-finance/default/btnSelectBrouillon.html.twig', array(
'factureFinance' => $factureFinance
));
$projects = '';
if(count($factureFinance->getProjectFactureFinanceBrouillon())>0){
$projectsArray = [];
foreach ($factureFinance->getProjectFactureFinanceBrouillon() as $item){
if($item->getProject()){
$projectsArray[strtolower($item->getProject()->getName())] = $item;
}
}
ksort($projectsArray);
$project = reset($projectsArray);
if(count($factureFinance->getProjectFactureFinanceBrouillon()) == 1){
$projects = $project && $project->getProject() ? $project->getProject()->getName() : ' ' ;
}else{
$projects = $project && $project->getProject() ? $project->getProject()->getName().'...' : ' ' ;
}
}
$output['data'][] = [
'responsive_id' => '',
'id' => $factureFinance->getId(),
'numeroFacture' => $factureFinance->getNumeroFacture(),
'monatantTtc' => $factureFinance->getMonatantTtc() ? $this->espaceNumber($factureFinance->getMonatantTtc()).'€' : '',
'monatantHt' => $factureFinance->getMonatantHt() ? $this->espaceNumber($factureFinance->getMonatantHt()).'€' : '',
'tva' => $factureFinance->getTva() ? $factureFinance->getTva().'€' : '',
'category' => $factureFinance->getCategory() ? $factureFinance->getCategory() : '',
'fournisseur' => $factureFinance->getFournisseur() ? $factureFinance->getFournisseur()->getName() : '',
'developpeur' => $factureFinance->getDeveloppeur() ? $factureFinance->getDeveloppeur()->getFirstname().' '.$factureFinance->getDeveloppeur()->getLastname() : '',
'spv' => $factureFinance->getSpv() ? $factureFinance->getSpv()->getName() : '',
'date' => $factureFinance->getDelaiPaiementDate() ? $factureFinance->getDelaiPaiementDate()->format('d/m/Y') : '',
'classification' => $factureFinance->getClassification(),
'datePaiement' => $factureFinance->getDatePaiement() ? $factureFinance->getDatePaiement()->format('d/m/Y') : '',
'dateValidation' => $factureFinance->getDateValidation() ? $factureFinance->getDateValidation()->format('d/m/Y') : '',
'dateFacture' => $factureFinance->getDateFacture() ? $factureFinance->getDateFacture()->format('d/m/Y') : '',
'createdAt' => $factureFinance->getCreatedAt() ? $factureFinance->getCreatedAt()->format('d/m/Y') : '',
'status' => $statut,
'action' => $action,
'btnSelect' => $btnSelect,
'projects' => $projects
];
}
return $output;
}
public function formatTabFactures($factureFinances){
$output = [];
foreach ($factureFinances as $factureFinance) {
$action =
$this->twig->render(
'admin/facture-finance/default/bouton.html.twig', array(
'factureFinance' => $factureFinance
));
$action2 =
$this->twig->render(
'admin/facture-finance/default/bouton-valid.html.twig', array(
'factureFinance' => $factureFinance
));
$action3 =
$this->twig->render(
'admin/facture-finance/default/bouton3.html.twig', array(
'factureFinance' => $factureFinance
));
$statut =
$this->twig->render(
'admin/facture-finance/default/status.html.twig', array(
'status' => $factureFinance->getStatus()
));
$dateValid =
$this->twig->render(
'admin/facture-finance/default/input-date-valid.html.twig', array(
'factureFinance' => $factureFinance
));
$btnSelect =
$this->twig->render(
'admin/facture-finance/default/btnSelect.html.twig', array(
'factureFinance' => $factureFinance
));
$fluxBancaireSpv = '';
$banqueSpvStr = '';
if($factureFinance->getSpv()){
$fluxBancaireSpv = $factureFinance->getSpv()->getFluxBancaire() ? 'Exabanque' : 'Manuel';
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId(), 'isDefault' => true]);
if(!$spvBanque){
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId()]);
}
if($spvBanque){
$banqueSpvStr = $spvBanque->getBanque();
}
}
$banqueFourniseurStr = '';
if($factureFinance->getFournisseur()){
if($factureFinance->getRib()) {
$fournisseurBanque = $factureFinance->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $factureFinance->getFournisseur()->getId(), 'isDefault' => true]);
}
if(!$fournisseurBanque){
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $factureFinance->getFournisseur()->getId()]);
}
if($fournisseurBanque){
$banqueFourniseurStr = $fournisseurBanque->getBanque();
}
}
if($factureFinance->getIsAvoir()){
$avoir = $factureFinance->getMonatantAvoirTtc();
if($factureFinance->getMonatantRestantTtc() == '0' ){
$isBanque = false;
}else{
$isBanque = true;
}
}else{
$avoir = 0;
$isBanque = true;
}
$projects = '';
if(count($factureFinance->getProjectFactureFinance())>0){
$project = $factureFinance->getProjectFactureFinance()[0];
if(count($factureFinance->getProjectFactureFinance()) == 1){
$projects = $project->getProject() ? $project->getProject()->getName() : ' ' ;
}else{
$projects = $project->getProject() ? $project->getProject()->getName().'...' : ' ' ;
}
}
$output[] = [
'responsive_id' => '',
'id' => $factureFinance->getId(),
'numeroFacture' => $factureFinance->getNumeroFacture30Max(),
'monatantTtc' => $factureFinance->getMonatantTtc() ? $factureFinance->getMonatantTtc().'€' : '',
'fluxBancaireSpv' => $fluxBancaireSpv,
'fournisseur' => $factureFinance->getFournisseur() ? $factureFinance->getFournisseur()->getName() : '',
'spv' => $factureFinance->getSpv() ? $factureFinance->getSpv()->getName() : '',
'date' => $factureFinance->getDelaiPaiementDate() ? $factureFinance->getDelaiPaiementDate()->format('d/m/Y') : '',
'banqueSpv' => $banqueSpvStr,
'banqueFourniseur' => $isBanque ? $banqueFourniseurStr : '---',
'classification' => $factureFinance->getClassification(),
'datePaiement' => $factureFinance->getDatePaiement() ? $factureFinance->getDatePaiement()->format('d/m/Y') : '',
'dateFacture' => $factureFinance->getDateFacture() ? $factureFinance->getDateFacture()->format('d/m/Y') : '',
'status' => $statut,
'dateValid' => $dateValid,
'action' => $action,
'action2' => $action2,
'action3' => $action3,
'btnSelect' => $btnSelect,
'projects' => $projects,
'avoir' => $avoir.' €'
];
}
return $output;
}
public function paginateFacturePaiement($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$searchTabDate = $request->get('searchTabDate');
$filters = [
'searchTabDate' => $searchTabDate,
'spvFacturePaiement' => $request->get('spvFacturePaiement'),
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinance::class)->search2($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\FactureFinance::class)->search2($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\FactureFinance::class)->search2(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$arraySpv = [];
foreach ($factureFinances as $factureFinance) {
$dateValidation = $factureFinance->getDateValidation() ? $factureFinance->getDateValidation()->format('Y-m-d') : (new \DateTime())->format('Y-m-d');
$action =
$this->twig->render(
'admin/facture-finance/default/bouton-eye-paiement.html.twig', array(
'factureFinance' => $factureFinance,
'spv' => $factureFinance->getSpv(),
'date' => $searchTabDate
));
$actionTelechargeBtn =
$this->twig->render(
'admin/facture-finance/default/bouton-telecharger.html.twig', array(
'factureFinance' => $factureFinance,
'spv' => $factureFinance->getSpv(),
'searchTabDate' => $searchTabDate
));
$actionTelechargeBtn2 =
$this->twig->render(
'admin/facture-finance/default/bouton-telecharger2.html.twig', array(
'factureFinance' => $factureFinance,
'spv' => $factureFinance->getSpv(),
'searchTabDate' => $searchTabDate != "" ? $searchTabDate : $dateValidation
));
$fluxBancaireSpv = '';
$banqueSpvStr = '';
if($factureFinance->getSpv()){
$fluxBancaireSpv = $factureFinance->getSpv()->getFluxBancaire() ? 'Exabanque' : 'Manuel';
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId(), 'isDefault' => true]);
if(!$spvBanque){
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $factureFinance->getSpv()->getId()]);
if($spvBanque){
$banqueSpvStr = $spvBanque->getBanque();
}
}
}
$arraySpv[$factureFinance->getSpv()->getId()] = [
'responsive_id' => '',
'spv' => $factureFinance->getSpv()->getName(),
'fluxBancaireSpv' => $fluxBancaireSpv,
'dateValidation' => $factureFinance->getDateValidation() ? $factureFinance->getDateValidation()->format('d/m/Y') : '',
'action3' => $actionTelechargeBtn,
'action4' => $actionTelechargeBtn2,
'action' => $action
];
}
foreach ($arraySpv as $item) {
$output['data'][] = [
'responsive_id' => $item['responsive_id'],
'spv' => $item['spv'],
'fluxBancaireSpv' => $item['fluxBancaireSpv'],
'dateValidation' => $item['dateValidation'],
'action3' => $item['action3'],
'action4' => $item['action4'],
'action' => $item['action'],
];
}
return $output;
}
public function paginateFacturePaiementNew($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$searchTabDate = $request->get('searchTabDate');
$filters = [
'searchTabDate' => $searchTabDate,
'statusPaiementFactureSpv' => $request->get('statusPaiementFactureSpv'),
'searchFacturePaiementSepa' => $request->get('searchFacturePaiementSepa'),
'spvFacturePaiementSepa' => $request->get('spvFacturePaiementSepa'),
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinance::class)->searchNewPaiement($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\FactureFinance::class)->searchNewPaiement($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\FactureFinance::class)->searchNewPaiement(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => count($recordsFiltered),
'recordsTotal' => count($recordsTotal),
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
foreach ($factureFinances as $factureFinance) {
$spv = $this->em->getRepository(Spv::class)->find($factureFinance['spvId']);
$dateValidation = new \DateTime($factureFinance['FormattedDate']);
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesPayerParDate($factureFinance['spvId'], $factureFinance['FormattedDate']);
$montantTotal = $this->getEcheanceTtc($factureFinance['spvId'], $factureFinance['FormattedDate']);
$status =
$this->twig->render(
'admin/facture-finance/miseEnPaiement/default/status.html.twig', array(
'status' => $factureFinance['statusTotal'],
));
$action =
$this->twig->render(
'admin/facture-finance/miseEnPaiement/default/bouton-eye-paiement.html.twig', array(
'spv' => $spv,
'date' => $factureFinance['FormattedDate']
));
$output['data'][] = [
'spv' => $factureFinance['name'],
'nbrPaiement' => $factureFinance['nbrPaiement'],
'dateValidation' => $dateValidation->format('d/m/Y'),
'montantTotal' => $montantTotal ? $this->espaceNumber($montantTotal).'€' : '',
'status' => $status,
'action' => $action,
];
}
return $output;
}
public function valideDate($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$date = $request->get('datePaiementFacture');
if($facture){
$userCurrent = $this->security->getUser();
$spvFacture = $facture->getSpv();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFactureSpv()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
if ($spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFacturePrejeance()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
}
if($date){
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
$fluxBancaireSpv = '';
if ($facture->getSpv()) {
if($facture->getRib()) {
$spvBanque = $facture->getRibSpv();
}else {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId(), 'isDefault' => true]);
}
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
$fluxBancaireSpv = $facture->getSpv()->getFluxBancaire();
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = $fournisseurBanque->getIban();
$bicFournisseur = $fournisseurBanque->getBic();
}
}
$facture->setIbanSpv($ibanSpv);
$facture->setBicSpv($bicSpv);
$facture->setBanqueSpv($banqueSpv);
$facture->setFluxBancaireSpv($fluxBancaireSpv);
$facture->setIbanFournisseur($ibanFournisseur);
$facture->setBicFournisseur($bicFournisseur);
$facture->setBanqueFournisseur($banqueFournisseur);
$facture->setDateValidation(new \DateTime());
$facture->setDate(new \DateTime($date));
// $facture->setStatus(FactureFinance::STATUS_PAYER);
$facture->setStatus(FactureFinance::STATUS_PAYER_NEW);
$this->em->persist($facture);
$this->em->flush();
return [
'success' => true,
'factureFinance' => $facture,
];
}
}
return [
'success' => false,
'factureFinance' => $facture,
];
}
public function valideDateNowMontant0($token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
if($facture->getMonatantRestantTtc() == 0){
$date = new \DateTime('now');
if($facture){
$userCurrent = $this->security->getUser();
$spvFacture = $facture->getSpv();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFactureSpv()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
if ($spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFacturePrejeance()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
}
$facture->setStatus(FactureFinance::STATUS_DATE_PAIEMENT_PAYER);
$this->em->persist($facture);
$this->em->flush();
if($date){
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
$fluxBancaireSpv = '';
if ($facture->getSpv()) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId(), 'isDefault' => true]);
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
$fluxBancaireSpv = $facture->getSpv()->getFluxBancaire();
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = $fournisseurBanque->getIban();
$bicFournisseur = $fournisseurBanque->getBic();
}
}
$facture->setIbanSpv($ibanSpv);
$facture->setBicSpv($bicSpv);
$facture->setBanqueSpv($banqueSpv);
$facture->setFluxBancaireSpv($fluxBancaireSpv);
$facture->setIbanFournisseur($ibanFournisseur);
$facture->setBicFournisseur($bicFournisseur);
$facture->setBanqueFournisseur($banqueFournisseur);
$facture->setDateValidation(new \DateTime());
$facture->setDate($date);
// $facture->setStatus(FactureFinance::STATUS_PAYER);
$facture->setStatus(FactureFinance::STATUS_PAYER_NEW);
$this->em->persist($facture);
$this->em->flush();
return [
'success' => true,
'factureFinance' => $facture,
];
}
}
}
return [
'success' => false,
];
}
public function demandeModificationFacture($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$textDemande = $request->get('textDemande');
if($facture && in_array($facture->getStatus(),[FactureFinance::STATUS_EN_ATTENT_VALIDATION,FactureFinance::STATUS_REFUS])){
$facture->setTextDemande($textDemande);
$facture->setStatus(FactureFinance::STATUS_DEMANDE_MODIFICATION);
$this->em->persist($facture);
$this->em->flush();
return [
'success' => true,
'factureFinance' => $facture
];
}
return [
'success' => false,
];
}
public function reediteFacture($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
if($facture && $facture->getStatus() == FactureFinance::STATUS_REFUS){
$facture->setStatus(FactureFinance::STATUS_DEMANDE_MODIFICATION);
$this->em->persist($facture);
$this->em->flush();
return [
'success' => true,
'factureFinance' => $facture
];
}
return [
'success' => false,
];
}
public function refusFactureFinance($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$textRefus = $request->get('textRefus');
if($facture){
$userCurrent = $this->security->getUser();
$spvFacture = $facture->getSpv();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFactureSpv()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé de refuser la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
if ($spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFacturePrejeance()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé de refuser la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
}
$facture->setDateRefus(new \DateTime());
$facture->setTextRefus($textRefus);
$facture->setStatus(FactureFinance::STATUS_REFUS);
$this->em->persist($facture);
$this->em->flush();
return [
'success' => true,
'factureFinance' => $facture,
];
}
return [
'success' => false,
];
}
public function valideEnattentFactureFinance($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
if($facture){
$userCurrent = $this->security->getUser();
$spvFacture = $facture->getSpv();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFactureSpv()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
if ($spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFacturePrejeance()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
'factureFinance' => $facture,
];
}
}
$facture->setStatus(FactureFinance::STATUS_EN_ATTENT_PAIEMENT);
$this->em->persist($facture);
$this->em->flush();
return [
'success' => true,
'factureFinance' => $facture,
];
}
return [
'success' => false,
];
}
public function exportCSV($request,$spvId,$date)
{
if($spvId) {
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesPayerParDateOld($spvId, $date);
$array = [];
if ($factures) {
$contenu = '';
$contenu .= 'Référence de facture ;Nom du SPV;IBAN du SPV;BIC du SPV;Nom de banque SPV;Nom du fournisseur;IBAN du fournisseur;BIC du fournisseur ;Nom de banque Fournisseur;Date de paiement;Montant facture;Etaps project;' . "\r\n";
foreach ($factures as $facture) {
$spv = $facture->getSpv() ? $facture->getSpv()->getName() : '';
$fournisseur = $facture->getFournisseur() ? $facture->getFournisseur()->getName() : '';
$date = $facture->getDate() ? $facture->getDate()->format('d/m/Y') : '';
if($facture->getIsAvoir()){
$montant = $facture->getMonatantRestantTtc();
}else {
$montant = $facture->getMonatantTtc();
}
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
if ($facture->getSpv()) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId(), 'isDefault' => true]);
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = str_replace(" ","",$fournisseurBanque->getIban());
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
$projects = '';
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $key => $item){
$nameProject = $item->getProject() ? $item->getProject()->getName().' ' : ' ' ;
$nameCategory = $item->getCategory() ? $item->getCategory()->getName().' / ' : ' ' ;
$nameEtap = $item->getEtap() ? 'Etape '.$item->getEtap()->getEtapsNum().' / ' : ' ' ;
$porcentage = $item->getTva() ? $item->getTva().'%' : ' ' ;
if($key+1 == count($facture->getProjectFactureFinance())){
// $projects .= $nameProject .$nameCategory.$nameEtap.$porcentage;
$projects .= $nameProject ;
}else{
$projects .= $nameProject."\n";
// $projects .= $nameProject .$nameCategory.$nameEtap.$porcentage."\n";
}
}
}
// $contenu .= $facture->getNumeroFacture() . ';' . $spv . ';' . $ibanSpv . ';' . $bicSpv . ';' . $banqueSpv . ';' . $fournisseur . ';' . $ibanFournisseur . ';' . $bicFournisseur . ';' . $banqueFournisseur . ';' . $date . ';' . $montant . ';' .$projects . ';' . "\r\n";
$pattern = '/(^")|("$)/';// doubles quotes en début ou doubles quotes en fin de saisie
$array[] = [
$facture->getNumeroFacture30Max(),
str_replace ($pattern,'',$spv),
(string)$ibanSpv,
$bicSpv,
str_replace ($pattern,'',$banqueSpv),
str_replace ($pattern,'',$fournisseur),
(string)$ibanFournisseur,
$bicFournisseur,
str_replace ($pattern,'',$banqueFournisseur),
$date,
str_replace([','], ".", str_replace([' '], "", $montant)),
$codePaysFournisseur,
$facture->getNumeroFacture30Max(),
$projects
];
}
$file = $this->params->get('zips_directory') . "/paiement_" . time() . ".csv";
return [
'file' => $file,
'contenu' => $array
];
}
}
return false;
}
public function exportXmlFlux($factureFinancePaiement)
{
if($factureFinancePaiement) {
$factureFinancePaiementDetail = $this->em->getRepository(FactureFinancePaiementDetail::class)->findBy(['factureFinancePaiement'=>$factureFinancePaiement->getId()]);
$pattern = '/(^")|("$)/';// doubles quotes en début ou doubles quotes en fin de saisie
if ($factureFinancePaiementDetail) {
$spvEntity = $factureFinancePaiement->getSpv();
$spv = $spvEntity ? $spvEntity->getName() : '';
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
if ($spvEntity) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $spvEntity->getId(), 'isDefault' => true]);
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $spvEntity->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
}
$sampleUniqueMsgId = "pt" . substr($spv, 0, 12).'-'.$factureFinancePaiement->getDatePaiementPrevu()->format('Ymd').'-'.time() ;
$SampleInitiatingPartyName = $spv ;
$customerCredit = TransferFileFacadeFactory::createCustomerCredit($sampleUniqueMsgId, $SampleInitiatingPartyName, 'pain.001.001.03');
$dateTimeFactureValidePayement = $factureFinancePaiement->getDatePrevu() ? $factureFinancePaiement->getDatePrevu(): null;
$dateTimeFacturePayementPrevu = $factureFinancePaiement->getDatePaiementPrevu()? $factureFinancePaiement->getDatePaiementPrevu(): null;
if($dateTimeFacturePayementPrevu){
$id = 'Paiement-'.$spvEntity->getId().'-'.$dateTimeFacturePayementPrevu->getTimestamp().'-'.time();
}else{
$id = 'Paiement-'.$spvEntity->getId().'-'.$dateTimeFactureValidePayement->getTimestamp().'-'.time();
}
$customerCredit->addPaymentInfo($id, array(
'id' => $id,
'debtorName' => str_replace ($pattern,'',$spv),
'debtorAccountIBAN' => (string)$ibanSpv,
'debtorAgentBIC' => (string)$bicSpv,
'batchBooking' => true,
'dueDate' => $dateTimeFacturePayementPrevu,
));
foreach ($factureFinancePaiementDetail as $item) {
$facture = $item->getFactureFinance();
$fournisseur = $facture->getFournisseur() ? $facture->getFournisseur()->getName() : '';
$dateFacture = $facture->getDate();
if($facture->getIsAvoir()){
$montant = $facture->getMonatantRestantTtc();
}else {
$montant = $facture->getMonatantTtc();
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = str_replace(" ","",$fournisseurBanque->getIban());
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
$projects = '';
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $key => $item){
$nameProject = $item->getProject() ? $item->getProject()->getName().' ' : ' ' ;
$nameCategory = $item->getCategory() ? $item->getCategory()->getName().' / ' : ' ' ;
$nameEtap = $item->getEtap() ? 'Etape '.$item->getEtap()->getEtapsNum().' / ' : ' ' ;
$porcentage = $item->getTva() ? $item->getTva().'%' : ' ' ;
if($key+1 == count($facture->getProjectFactureFinance())){
// $projects .= $nameProject .$nameCategory.$nameEtap.$porcentage;
$projects .= $nameProject ;
}else{
$projects .= $nameProject."\n";
// $projects .= $nameProject .$nameCategory.$nameEtap.$porcentage."\n";
}
}
}
$numeroSansCaractaireSpeciaux = preg_replace('/[^a-zA-Z0-9_ -]/s', '', $facture->getNumeroFacture());
$numeroFactureDiaposon = substr(str_replace(' ','',$numeroSansCaractaireSpeciaux), 0, 35);
$facture->setNumeroFactureDiaposon($numeroFactureDiaposon);
$this->em->persist($facture);
$this->em->flush();
$customerCredit->addTransfer($id, array(
'amount' => str_replace([','], ".", str_replace([' '], "", $montant)) * 100, // `amount` should be in cents
'creditorIban' => (string)$ibanFournisseur ,
'creditorBic' => (string)$bicFournisseur ,
'creditorName' => str_replace ($pattern,'',(string)$fournisseur),
'creditorReference' => $facture->getNumeroFacture30Max(),
'endToEndId' => $numeroFactureDiaposon,
'remittanceInformation' => ''
));
}
// $file = $customerCredit->asXML();
// modifier le dom
$xml = $customerCredit->asXML();
$dom = new \DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml);
$xpath = new \DOMXPath($dom);
$xpath->registerNamespace(
'sepa',
'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03'
);
$nodes = $xpath->query('//sepa:CdtTrfTxInf/sepa:PmtTpInf');
foreach ($nodes as $node) {
$node->parentNode->removeChild($node);
}
// end modifier le dom
$file = $dom->saveXML();
return [
'file' => $file,
];
}
}
return false;
}
public function exportFactureFinanceParDateXml(){
$factureFinancePaiements = $this->em->getRepository(FactureFinancePaiement::class)->findAllNotFichierBySpvAndDate();
if($factureFinancePaiements){
foreach ($factureFinancePaiements as $factureFinancePaiement){
$data = $this->exportXmlFlux($factureFinancePaiement);
if($data){
$fileExport = $data['file'];
$fileName = "pt" .substr($factureFinancePaiement->getSpv()->getName(), 0, 12).'_'.$factureFinancePaiement->getDatePaiementPrevu()->format('Ymd').'_'.time() . ".xml";
$factureFinancePaiement->setIsFichierCreated(true);
$factureFinancePaiement->setFichier($fileName);
$this->em->persist($factureFinancePaiement);
$this->em->flush();
$factureFinancePaiementDetails = $this->em->getRepository(FactureFinancePaiementDetail::class)->findBy(['factureFinancePaiement'=>$factureFinancePaiement->getId()]);
$faturesData = [];
foreach ($factureFinancePaiementDetails as $item) {
$item->getFactureFinance()->setIsPaiement(FactureFinance::STATUS_TERMINE_PAYE_SEPA);
$item->getFactureFinance()->setDatePaiementGenerateFichier(new \DateTime());
$this->em->persist($item->getFactureFinance());
$this->em->flush();
$this->notification->setCompteurErpiPieceRegelement($item->getFactureFinance());
$faturesData[] = $item->getFactureFinance();
}
$file = $this->params->get('paiements_altarea_directory') . "/".$fileName;
$fp = fopen($file,"wb");
fwrite($fp,$fileExport);
fclose($fp);
$this->sendToServeur($fileName ,'/altarea/paiements',$this->params->get('paiements_altarea_directory'));
$this->insertLogFichier($factureFinancePaiement->getSpv(),$faturesData,$fileName);
}
}
}
}
public function exportFactureFinanceParDateXmlBySpvAndDateValidation($spv,$date){
$dataFacture = [];
$factureFinancePaiements = $this->em->getRepository(FactureFinancePaiement::class)->findAllNotFichierBySpvAndDateValidation($spv,$date);
if($factureFinancePaiements){
foreach ($factureFinancePaiements as $factureFinancePaiement){
$data = $this->exportXmlFlux($factureFinancePaiement);
if($data){
$fileExport = $data['file'];
$fileName = "pt" .substr($factureFinancePaiement->getSpv()->getName(), 0, 12).'_'.$factureFinancePaiement->getDatePaiementPrevu()->format('Ymd').'_'.time() . ".xml";
$factureFinancePaiement->setIsFichierCreated(true);
$factureFinancePaiement->setFichier($fileName);
$this->em->persist($factureFinancePaiement);
$this->em->flush();
$factureFinancePaiementDetails = $this->em->getRepository(FactureFinancePaiementDetail::class)->findBy(['factureFinancePaiement'=>$factureFinancePaiement->getId()]);
foreach ($factureFinancePaiementDetails as $item) {
$item->getFactureFinance()->setIsPaiement(FactureFinance::STATUS_TERMINE_PAYE_SEPA);
$item->getFactureFinance()->setDatePaiementGenerateFichier(new \DateTime());
$this->em->persist($item->getFactureFinance());
$this->em->flush();
$this->notification->setCompteurErpiPieceRegelement($item->getFactureFinance());
$dataFacture[] = $item->getFactureFinance();
}
$file = $this->params->get('paiements_altarea_directory') . "/".$fileName;
$fp = fopen($file,"wb");
fwrite($fp,$fileExport);
fclose($fp);
// $this->sendToServeur($fileName ,'/altarea/paiements',$this->params->get('paiements_altarea_directory'));
}
}
}
return $dataFacture;
}
public function exportFactureFinanceParDate($datetime){
if($datetime) {
$spvs = $this->em->getRepository(Spv::class)->getSpvEnabled();
if($spvs){
foreach ($spvs as $spvObj){
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesPayerParDateOld($spvObj->getId(), $datetime->format('Y-m-d'));
$array = [];
if ($factures) {
foreach ($factures as $facture) {
$spv = $facture->getSpv() ? $facture->getSpv()->getName() : '';
$fournisseur = $facture->getFournisseur() ? $facture->getFournisseur()->getName() : '';
$date = $facture->getDate() ? $facture->getDate()->format('d/m/Y') : '';
if($facture->getIsAvoir()){
$montant = $facture->getMonatantRestantTtc();
}else {
$montant = $facture->getMonatantTtc();
}
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
if ($facture->getSpv()) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId(), 'isDefault' => true]);
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = $fournisseurBanque->getIban();
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
$projects = '';
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $key => $item){
$nameProject = $item->getProject() ? $item->getProject()->getName().' ' : ' ' ;
$nameCategory = $item->getCategory() ? $item->getCategory()->getName().' / ' : ' ' ;
$nameEtap = $item->getEtap() ? 'Etape '.$item->getEtap()->getEtapsNum().' / ' : ' ' ;
$porcentage = $item->getTva() ? $item->getTva().'%' : ' ' ;
if($key+1 == count($facture->getProjectFactureFinance())){
$projects .= $nameProject ;
}else{
$projects .= $nameProject."\n";
}
}
}
$pattern = '/(^")|("$)/';// doubles quotes en début ou doubles quotes en fin de saisie
$array[] = [
$facture->getNumeroFacture30Max(),
str_replace ($pattern,'',$spv),
(string)$ibanSpv,
$bicSpv,
str_replace ($pattern,'',$banqueSpv),
str_replace ($pattern,'',$fournisseur),
(string)$ibanFournisseur,
$bicFournisseur,
str_replace ($pattern,'',$banqueFournisseur),
$date,
str_replace([','], ".", str_replace([' '], "", $montant)),
$codePaysFournisseur,
$facture->getNumeroFacture30Max(),
$projects
];
}
$file = $this->params->get('facture_finance_directory') . "/paiements/paiement_" . $spvObj->getName().'_'.$datetime->format('Y-m-d') . ".csv";
$contenu = $array;
$fp=fopen($file,"w" ); // ouverture du fichier
// fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
foreach ($contenu as $item){
fputcsv($fp,$item,';'," ");
}
}
}
}
}
}
public function exportCSV2($request,$spvId,$date)
{
if($spvId && $date) {
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesPayerParDateOld($spvId, $date);
$array = [];
if ($factures) {
foreach ($factures as $facture) {
$spv = $facture->getSpv() ? $facture->getSpv()->getName() : '';
$fournisseur = $facture->getFournisseur() ? $facture->getFournisseur()->getName() : '';
$date = $facture->getDate() ? $facture->getDate()->format('d/m/Y') : '';
if($facture->getIsAvoir()){
$montant = $facture->getMonatantRestantTtc();
}else {
$montant = $facture->getMonatantTtc();
}
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
if ($facture->getSpv()) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId(), 'isDefault' => true]);
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = str_replace(" ","",$fournisseurBanque->getIban());
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
if($spvBanque && $spvBanque->getIsANETOSG()){
$array[] = [
'',
str_replace (FactureFinance::SPECIALE_CARACTAIRE,'',$fournisseur),
(string)$ibanFournisseur,
str_replace(['€'],'',str_replace([','], ".", str_replace([' '], "", $montant))),
$date,
(string)$ibanSpv,
str_replace (' ','',str_replace (FactureFinance::SPECIALE_CARACTAIRE,'',$facture->getNumeroFacture30Max())),
'NOTPROVIDED',
$banqueFournisseur,
str_replace (' ','',str_replace (FactureFinance::SPECIALE_CARACTAIRE,'',$facture->getNumeroFacture30Max())),
$codePaysFournisseur,
'SEPA',
'ANETO'
];
}else{
$array[] = [
'',
str_replace (FactureFinance::SPECIALE_CARACTAIRE,'',$fournisseur),
(string)$ibanFournisseur,
str_replace(['€'],'',str_replace([','], ".", str_replace([' '], "", $montant))),
$date,
(string)$ibanSpv,
str_replace (' ','',str_replace (FactureFinance::SPECIALE_CARACTAIRE,'',$facture->getNumeroFacture30Max())),
'NOTPROVIDED',
$banqueFournisseur,
str_replace (' ','',str_replace (FactureFinance::SPECIALE_CARACTAIRE,'',$facture->getNumeroFacture30Max())),
$codePaysFournisseur,
'SEPA'
];
}
}
$file = $this->params->get('zips_directory') . "/paiement_" . time() . ".csv";
return [
'file' => $file,
'contenu' => $array
];
}
}
return false;
}
public function exportFactureFinanceParDate2($datetime){
if($datetime) {
$spvs = $this->em->getRepository(Spv::class)->getSpvEnabled();
if($spvs){
foreach ($spvs as $spvObj){
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesPayerParDateOld($spvObj->getId(), $datetime->format('Y-m-d'));
$array = [];
if ($factures) {
foreach ($factures as $facture) {
$spv = $facture->getSpv() ? $facture->getSpv()->getName() : '';
$fournisseur = $facture->getFournisseur() ? $facture->getFournisseur()->getName() : '';
$date = $facture->getDate() ? $facture->getDate()->format('d/m/Y') : '';
if($facture->getIsAvoir()){
$montant = $facture->getMonatantRestantTtc();
}else {
$montant = $facture->getMonatantTtc();
}
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
if ($facture->getSpv()) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId(), 'isDefault' => true]);
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = $fournisseurBanque->getIban();
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
if($spvBanque && $spvBanque->getIsANETOSG()){
$array[] = [
'',
str_replace(FactureFinance::SPECIALE_CARACTAIRE, '', $fournisseur),
(string)$ibanFournisseur,
str_replace(['€'], '', str_replace([','], ".", str_replace([' '], "", $montant))),
$date,
(string)$ibanSpv,
str_replace(' ', '', str_replace(FactureFinance::SPECIALE_CARACTAIRE, '', $facture->getNumeroFacture30Max())),
'NOTPROVIDED',
$banqueFournisseur,
str_replace(' ', '', str_replace(FactureFinance::SPECIALE_CARACTAIRE, '', $facture->getNumeroFacture30Max())),
$codePaysFournisseur,
'SEPA',
'ANETO',
];
}else {
$array[] = [
'',
str_replace(FactureFinance::SPECIALE_CARACTAIRE, '', $fournisseur),
(string)$ibanFournisseur,
str_replace(['€'], '', str_replace([','], ".", str_replace([' '], "", $montant))),
$date,
(string)$ibanSpv,
str_replace(' ', '', str_replace(FactureFinance::SPECIALE_CARACTAIRE, '', $facture->getNumeroFacture30Max())),
'NOTPROVIDED',
$banqueFournisseur,
str_replace(' ', '', str_replace(FactureFinance::SPECIALE_CARACTAIRE, '', $facture->getNumeroFacture30Max())),
$codePaysFournisseur,
'SEPA'
];
}
}
$file = $this->params->get('facture_finance_directory') . "/flux_paiements/paiement_" . $spvObj->getName().'_'.$datetime->format('Y-m-d') . ".csv";
$contenu = $array;
$fp=fopen($file,"w" ); // ouverture du fichier
// fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
$spvBanqueObj = null;
if ($spvObj->getId()) {
$spvBanqueObj = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $spvObj->getId(), 'isDefault' => true]);
if (!$spvBanqueObj) {
$spvBanqueObj = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $spvObj->getId()]);
}
}
if($spvBanqueObj && $spvBanqueObj->getIsANETOSG()){
$array1 = ['#CSV2ISO#','109','143','43','17','21','42','58','62','8','37','14','35'];
}else{
$array1 = ['#CSV2ISO#','109','143','43','17','21','42','58','62','8','37','14'];
}
fputcsv($fp,$array1,';'," ");
foreach ($contenu as $item){
fputcsv($fp,$item,';'," ");
}
}
}
}
}
}
public function exportXml($request,$spvId,$date)
{
if($spvId && $date) {
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesPayerParDateOld($spvId, $date);
if ($factures) {
foreach ($factures as $facture) {
if($facture->getIsAvoir()){
$montant = $facture->getMonatantRestantTtc().'€';
}else {
$montant = $facture->getMonatantTtc().'€';
}
$banqueSpv = '';
$ibanSpv = '';
$bicSpv = '';
if ($facture->getSpv()) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId(), 'isDefault' => true]);
if (!$spvBanque) {
$spvBanque = $this->em->getRepository(Rib::class)->findOneBy(['spv' => $facture->getSpv()->getId()]);
}
if ($spvBanque) {
$banqueSpv = $spvBanque->getBanque();
$ibanSpv = $spvBanque->getIban();
$bicSpv = $spvBanque->getBic();
}
}
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = $fournisseurBanque->getIban();
$bicFournisseur = $fournisseurBanque->getBic();
}
}
$spv = $facture->getSpv()?$facture->getSpv()->getName():'';
$fournisseur = $facture->getFournisseur()?$facture->getFournisseur()->getName():'';
$date = $facture->getDate()?$facture->getDate()->format('d/m/Y'):'';
$dom = new \DOMDocument('1.0', 'UTF-8');
$xmlRoot = $dom->createElement("xml");
$xmlRoot = $dom->appendChild($xmlRoot);
$currentItem1 = $dom->createElement("Reference_facture",$facture->getNumeroFacture30Max());
$xmlRoot->appendChild($currentItem1);
$currentItem2 = $dom->createElement("SPV");
$currentItem2 = $xmlRoot->appendChild($currentItem2);
$currentItem2->appendChild($dom->createElement('Name',$spv));
$currentItem2->appendChild($dom->createElement('IBAN',$ibanSpv));
$currentItem2->appendChild($dom->createElement('BIC',$bicSpv));
$currentItem2->appendChild($dom->createElement('Banque',$banqueSpv));
$currentItem3 = $dom->createElement("Fournisseur");
$currentItem3 = $xmlRoot->appendChild($currentItem3);
$currentItem3->appendChild($dom->createElement('name',$fournisseur));
$currentItem3->appendChild($dom->createElement('IBAN',$banqueFournisseur));
$currentItem3->appendChild($dom->createElement('BIC', $bicFournisseur));
$currentItem3->appendChild($dom->createElement('Banque',$ibanFournisseur));
$currentItem4 = $dom->createElement("Date_paiement",$date);
$xmlRoot->appendChild($currentItem4);
$currentItem5 = $dom->createElement("Montant_facture",$montant);
$xmlRoot->appendChild($currentItem5);
$file = $this->params->get('zips_directory') . "/paiement_".$facture->getToken().".xml";
$dom->save($file);
$dom->formatOutput = TRUE;
$contenu = $dom->saveXml();
$zip = new \ZipArchive();
$zipfile = $this->params->get('zips_directory') . '/paiement_-' . time() .'.zip';
if (file_exists($zipfile)) unlink($zipfile);
if ($zip->open($zipfile, \ZipArchive::CREATE) === TRUE) {
$zip->addFile($file,'paiement_-' . $facture->getToken());
$zip->close();
return $zipfile;
}
}
}
}
return false;
}
public function sendFacturesEnAttenteNotSend(){
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesEnAttenteNotSend();
$date = new \DateTime();
$this->notification->sendFacturesEnAttenteNotSend('Factures en attents de validation',$factures,$date);
}
public function sendFacturesEnAttenteNotSendRappel(){
$factures7j = $this->em->getRepository(FactureFinance::class)->getFacturesEnAttenteNotSend7j();
$this->notification->sendFacturesEnAttenteNotSend7jRappel('Factures en attente de paiement',$factures7j);
$usersTo = $this->em->getRepository(User::class)->getUserByRole('ROLE_ADMINISTRATEUR_FINANCIER');
if($factures7j){
foreach ($factures7j as $facture){
foreach ($usersTo as $userTo){
$this->notification->addNotificationFactureNotification($userTo,$facture->getUserCreated(),$facture);
}
}
}
$factures3j = $this->em->getRepository(FactureFinance::class)->getFacturesEnAttenteNotSend3j();
$this->notification->sendFacturesEnAttenteNotSend3jRappel('Factures en attente de paiement',$factures3j);
if($factures3j){
foreach ($factures3j as $facture){
foreach ($usersTo as $userTo){
$this->notification->addNotificationFactureNotification($userTo,$facture->getUserCreated(),$facture);
}
}
}
}
public function kpiSpvProject($request){
$spvTabKpi = $request->get('spvTabKpi');
$spvTabProject = $request->get('spvTabProject');
$dateKpi1 = $request->get('searchTabDateKpi1');
$dateKpi2 = $request->get('searchTabDateKpi2');
$arrySpv = [];
$arryProject = [];
$tabGlobal = [];
$tabGlobalTotal = [];
if($spvTabKpi) {
foreach ($spvTabKpi as $item) {
$spv = $this->em->getRepository(Spv::class)->find($item);
$arrySpv[] = $spv;
}
}
if($spvTabProject) {
foreach ($spvTabProject as $item) {
$project = $this->em->getRepository(Project::class)->find($item);
$arryProject[] = $project;
}
}
if($arrySpv) {
foreach ($arrySpv as $value) {
if($value){
$tabGlobal[$value->getId()]['name'] = $value->getName();
$totalSpv = 0;
foreach ($arryProject as $item) {
$facturesProject = $this->em->getRepository(ProjectFactureFinance::class)->getFacturesSpv($value->getId(), $item->getId(), $dateKpi1, $dateKpi2);
$totalSpvProject = 0;
if ($facturesProject) {
foreach ($facturesProject as $factureProject) {
$totalSpvProject += $factureProject->getMontantTtc();
}
}
$tabGlobal[$value->getId()]['projectMontant'][] = $totalSpvProject;
$totalSpv += $totalSpvProject;
}
$tabGlobal[$value->getId()]['montantTotal'] = $totalSpv;
}
}
}
if($tabGlobal) {
foreach ($tabGlobal as $tabGlobalItem) {
if(isset($tabGlobalItem['projectMontant'])) {
foreach ($tabGlobalItem['projectMontant'] as $key => $tabGlobalItemProjectMontant) {
if (!isset($tabGlobalTotal[$key])) {
$tabGlobalTotal[$key] = 0;
}
$tabGlobalTotal[$key] += $tabGlobalItemProjectMontant;
}
}
}
}
return [
'arryProject'=>$arryProject ,
'tabGlobal'=>$tabGlobal ,
'tabGlobalTotal'=>$tabGlobalTotal
];
}
public function kpiFournisseurProject($request){
$fournisseurTabKpi = $request->get('fournisseurTabKpi');
$fournisseurTabProject = $request->get('fournisseurTabProject');
$dateKpi1 = $request->get('searchTabDateKpi1');
$dateKpi2 = $request->get('searchTabDateKpi2');
$arryFournisseur = [];
$arryProject = [];
$tabGlobal = [];
$tabGlobalTotal = [];
if($fournisseurTabKpi) {
foreach ($fournisseurTabKpi as $item) {
$fournisseur = $this->em->getRepository(Fournisseur::class)->find($item);
$arryFournisseur[] = $fournisseur;
}
}
if($fournisseurTabProject) {
foreach ($fournisseurTabProject as $item) {
$project = $this->em->getRepository(Project::class)->find($item);
$arryProject[] = $project;
}
}
if($arryFournisseur) {
foreach ($arryFournisseur as $value) {
if($value) {
$tabGlobal[$value->getId()]['name'] = $value->getName();
$totalFournisseur = 0;
foreach ($arryProject as $item) {
$facturesProject = $this->em->getRepository(ProjectFactureFinance::class)->getFacturesFournisseur($value->getId(), $item->getId(), $dateKpi1, $dateKpi2);
$totalFournisseurProject = 0;
if ($facturesProject) {
foreach ($facturesProject as $factureProject) {
$totalFournisseurProject += $factureProject->getMontantTtc();
}
}
$tabGlobal[$value->getId()]['projectMontant'][] = $totalFournisseurProject;
$totalFournisseur += $totalFournisseurProject;
}
$tabGlobal[$value->getId()]['montantTotal'] = $totalFournisseur;
}
}
}
foreach ($tabGlobal as $tabGlobalItem){
if(isset($tabGlobalItem['projectMontant'])) {
foreach ($tabGlobalItem['projectMontant'] as $key => $tabGlobalItemProjectMontant) {
if (!isset($tabGlobalTotal[$key])) {
$tabGlobalTotal[$key] = 0;
}
$tabGlobalTotal[$key] += $tabGlobalItemProjectMontant;
}
}
}
return [
'arryProject'=>$arryProject ,
'tabGlobal'=>$tabGlobal ,
'tabGlobalTotal'=>$tabGlobalTotal
];
}
public function kpiClassificationProject($request){
$classificationTabKpi = $request->get('classificationTabKpi');
$classificationTabProject = $request->get('classificationTabProject');
$dateKpi1 = $request->get('searchTabDateKpi1');
$dateKpi2 = $request->get('searchTabDateKpi2');
$SPVNotMultipleTabProject = $request->get('SPVNotMultipleTabProject');
$arryClassification = [];
$arryProject = [];
$tabGlobal = [];
$tabGlobalTotal = [];
if(!$classificationTabKpi){
$classificationTabKpi = FactureFinance::DEPENSE_NEW2;
foreach ($classificationTabKpi as $item){
$arryClassification[]['name'] = $item;
}
}else{
foreach ($classificationTabKpi as $item){
$arryClassification[]['name'] = $item;
}
}
if($SPVNotMultipleTabProject && !$classificationTabProject){
$projects = $this->em->getRepository(Project::class)->getProjectsBySpvs($SPVNotMultipleTabProject);
foreach ($projects as $item){
$arryProject[] = $item;
}
}else{
foreach ($classificationTabProject as $item){
$project = $this->em->getRepository(Project::class)->find($item);
$arryProject[] = $project;
}
}
foreach ($arryClassification as $i => $value){
$tabGlobal[$i]['name'] = $value['name'];
$totalClassification = 0;
foreach ($arryProject as $item){
$facturesProject = $this->em->getRepository(ProjectFactureFinance::class)->getFacturesClassification($value['name'],$item->getId(),$dateKpi1,$dateKpi2);
$totalClassificationProject = 0;
if($facturesProject){
foreach ($facturesProject as $factureProject){
$totalClassificationProject += $factureProject->getMontantTtc();
}
}
$tabGlobal[$i]['projectMontant'][] = $totalClassificationProject;
$totalClassification += $totalClassificationProject;
}
$tabGlobal[$i]['montantTotal'] = $totalClassification;
}
foreach ($tabGlobal as $tabGlobalItem){
if(isset($tabGlobalItem['projectMontant'])) {
foreach ($tabGlobalItem['projectMontant'] as $key => $tabGlobalItemProjectMontant) {
if (!isset($tabGlobalTotal[$key])) {
$tabGlobalTotal[$key] = 0;
}
$tabGlobalTotal[$key] += $tabGlobalItemProjectMontant;
}
}
}
return [
'arryProject'=>$arryProject ,
'tabGlobal'=>$tabGlobal ,
'tabGlobalTotal'=>$tabGlobalTotal
];
}
public function getPorjectBySpv($request)
{
$spvProjects = $request->get('spvProjects');
$projects = $this->em->getRepository(Project::class)->getProjectsBySpvs($spvProjects);
return $projects;
}
public function getFacturesToken($token){
$facture = $this->em->getRepository(FactureFinance::class)->findBy(['token'=>$token]);
return $facture;
}
public function addStyleToCellDate($cell,$row,$string,$spreadsheet){
if($string && is_object($string)){
$spreadsheet->getActiveSheet()->setCellValue($cell.$row,Date::PHPToExcel($string->format('d/m/Y')) );
$spreadsheet->getActiveSheet()->getStyle($cell.$row)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_DDMMYYYY);
}else{
$spreadsheet->getActiveSheet()->setCellValue($cell.$row,'-' );
}
return $spreadsheet;
}
public function extractFactures($factures,$request){
$file= $this->params->get('zips_directory')."/extraire_factures.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"N° de facture")
->setCellValue('B1',"Date de création de facture")
->setCellValue('C1',"Fournisseur")
->setCellValue('D1',"SPV")
->setCellValue('E1',"Développeur")
->setCellValue('F1',"Classification dépense")
->setCellValue('G1',"Taux de TVA")
->setCellValue('H1',"Montant TVA")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"Délai de paiement")
->setCellValue('L1',"Facture url")
->setCellValue('M1',"Statut")
->setCellValue('N1',"Projet")
->setCellValue('O1',"Date d'émission de la facture")
->setCellValue('P1',"Date de paiement banque")
->setCellValue('Q1',"Date de validation")
->setCellValue('R1',"Date de demande de paiement")
->setCellValue('S1',"Commentaires")
->setCellValue('T1',"COMPTEUR ERPI PIECE");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(17);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(50);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(50);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(50);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(30);
$spreadsheet->getActiveSheet()->getStyle('A1:T1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($factures as $facture){
$urlFacture = $facture->getFileFacture()?$facture->getFileFacture()->getPath() : null;
$nameFacture = $facture->getFileFacture()?$facture->getFileFacture()->getNomenclature()?$facture->getFileFacture()->getNomenclature():$facture->getFileFacture()->getName():null;
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , (string)$facture->getNumeroFacture30Max())
->setCellValue('C'.$row , $facture->getFournisseur()?$facture->getFournisseur()->getName():'')
->setCellValue('D'.$row , $facture->getSpv()?$facture->getSpv()->getName():'')
->setCellValue('E'.$row , $facture->getDeveloppeur()?$facture->getDeveloppeur()->getFirstname().' '.$facture->getDeveloppeur()->getLastname():'')
->setCellValue('F'.$row , $facture->getEpc()?$facture->getEpc()->getFirstname().' '.$facture->getEpc()->getLastname():'')
->setCellValue('F'.$row , $facture->getClassification())
->setCellValue('G'.$row , $facture->getTauxTva()?$facture->getTauxTva().'%' : '')
->setCellValue('H'.$row , $facture->getTva())
->setCellValue('I'.$row , $facture->getMonatantHt())
->setCellValue('J'.$row , $facture->getMonatantTtc())
;
$spreadsheet = $this->addStyleToCellDate('B',$row,$facture->getCreatedAt(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('K',$row,$facture->getDelaiPaiementDate(),$spreadsheet);
if($urlFacture){
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$spreadsheet->getActiveSheet()->setCellValue('L'.$row ,$nameFacture);
$spreadsheet->getActiveSheet()->getCell('L'.$row )->getHyperlink()->setUrl($baseurl.'/uploads/'.$urlFacture);
}
$strStatusAvoir = '';
if($facture->getIsAvoir()){
$strStatusAvoir .= ' ( compensée par ';
if(count($facture->getAvoirFactureFinance()) == 1){
$strStatusAvoir .= 'un avoir ';
}else{
$strStatusAvoir .= 'plusieurs avoirs ';
}
if($facture->getMonatantRestantTtc() == 0){
}else{
$strStatusAvoir .= 'partiellement ';
}
$strStatusAvoir .= ' ) ';
}
$spreadsheet->getActiveSheet()->setCellValue('M'.$row , $facture->getStatusString().$strStatusAvoir);
$projectName = '';
if(count($facture->getProjectFactureFinance())>0){
$a = count($facture->getProjectFactureFinance());
$i = 1;
foreach ($facture->getProjectFactureFinance() as $item){
if($i == $a){
$projectName .= $item->getProject()->getName();
}else{
$projectName .= $item->getProject()->getName()."\n";
}
$i++;
}
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getAlignment()->setWrapText(true);
}
$spreadsheet->getActiveSheet()->setCellValue('N'.$row , $projectName);
$spreadsheet = $this->addStyleToCellDate('O',$row,$facture->getDateFacture(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('P',$row,$facture->getDatePaiement(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('Q',$row,$facture->getDateValidation(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('R',$row,$facture->getDate(),$spreadsheet);
$commantaires = '';
if(count($facture->getComment())>0){
$a = count($facture->getComment());
$i = 1;
foreach ($facture->getComment() as $item){
if($i == $a){
$commantaires .= $item->getComment();
}else{
$commantaires .= $item->getComment()."\n";
}
$i++;
}
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getAlignment()->setWrapText(true);
}
$spreadsheet->getActiveSheet()->setCellValue('S'.$row , $commantaires);
$spreadsheet->getActiveSheet()->setCellValue('T'.$row , $facture->getCompteurErpiPiece());
//increment row
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":T".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function extractFacturesAvoir($factures,$request){
$file= $this->params->get('zips_directory')."/extraire_factures.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"N° de facture")
->setCellValue('B1',"Date de création de facture")
->setCellValue('C1',"Fournisseur")
->setCellValue('D1',"SPV")
->setCellValue('E1',"Développeur")
->setCellValue('F1',"EPC")
->setCellValue('G1',"Classification dépense")
->setCellValue('H1',"Montant déduit de l’avoir")
->setCellValue('I1',"Montant restant à régler")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"Délai de paiement")
->setCellValue('L1',"Facture url")
->setCellValue('M1',"Statut")
->setCellValue('N1',"Projet")
->setCellValue('O1',"Avoir(s)");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(17);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(50);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(60);
$spreadsheet->getActiveSheet()->getStyle('A1:O1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($factures as $facture){
$urlFacture = $facture->getFileFacture()?$facture->getFileFacture()->getPath() : null;
$nameFacture = $facture->getFileFacture()?$facture->getFileFacture()->getNomenclature()?$facture->getFileFacture()->getNomenclature():$facture->getFileFacture()->getName():null;
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , (string)$facture->getNumeroFacture30Max())
->setCellValue('C'.$row , $facture->getFournisseur()?$facture->getFournisseur()->getName():'')
->setCellValue('D'.$row , $facture->getSpv()?$facture->getSpv()->getName():'')
->setCellValue('E'.$row , $facture->getDeveloppeur()?$facture->getDeveloppeur()->getFirstname().' '.$facture->getDeveloppeur()->getLastname():'')
->setCellValue('F'.$row , $facture->getEpc()?$facture->getEpc()->getFirstname().' '.$facture->getEpc()->getLastname():'')
->setCellValue('G'.$row , $facture->getClassification())
->setCellValue('H'.$row , $facture->getMonatantAvoirTtc())
->setCellValue('I'.$row , $facture->getMonatantRestantTtc())
->setCellValue('J'.$row , $facture->getMonatantTtc())
;
$spreadsheet = $this->addStyleToCellDate('B',$row,$facture->getCreatedAt(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('K',$row,$facture->getDelaiPaiementDate(),$spreadsheet);
if($urlFacture){
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$spreadsheet->getActiveSheet()->setCellValue('L'.$row ,$nameFacture);
$spreadsheet->getActiveSheet()->getCell('L'.$row )->getHyperlink()->setUrl($baseurl.'/uploads/'.$urlFacture);
}
$spreadsheet->getActiveSheet()->setCellValue('M'.$row , $facture->getStatusString());
$projectName = '';
if(count($facture->getProjectFactureFinance())>0){
$a = count($facture->getProjectFactureFinance());
$i = 1;
foreach ($facture->getProjectFactureFinance() as $item){
if($i == $a){
$projectName .= $item->getProject()->getName();
}else{
$projectName .= $item->getProject()->getName()."\n";
}
$i++;
}
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getAlignment()->setWrapText(true);
}
$spreadsheet->getActiveSheet()->setCellValue('N'.$row , $projectName);
$avoirNum = '';
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
if($avoirs){
$a = count($avoirs);
$i = 1;
foreach ($avoirs as $item){
if($i == $a){
$avoirNum .= $item->getAvoir()->getNumeroAvoir();
}else{
$avoirNum .= $item->getAvoir()->getNumeroAvoir()."\n";
}
$i++;
}
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getAlignment()->setWrapText(true);
}
$spreadsheet->getActiveSheet()->setCellValue('O'.$row , $avoirNum);
//increment row
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":O".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function getAvoirDispoFacture($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$avoirs = [];
if($facture){
$oldAvoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
if($oldAvoirs){
foreach ($oldAvoirs as $obj){
$avoir = $obj->getAvoir();
$avoir->setStatus(Avoir::STATUS_VALIDE);
$htAndTtc = $this->hTAndTTC($obj->getMonatantAvoirTtc(),$avoir->getTauxTva());
$avoir->setMonatantRestantTtc($obj->getMonatantAvoirTtc());
$avoir->setMonatantHt($htAndTtc['ht']);
$avoir->setMonatantTtc($obj->getMonatantAvoirTtc());
$this->em->persist($avoir);
$this->em->remove($obj);
$this->em->flush();
}
}
$fourniseur = $facture->getFournisseur();
$spv = $facture->getSpv();
if($fourniseur && $spv){
$avoirs = $this->em->getRepository(Avoir::class)->findAvoirDispo($fourniseur,$spv);
}
}
return $avoirs;
}
public function getMontantAvoirDispoFacture($request,$token,$tokens)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$mantantFacture = 0;
$mantantTotalAvoir = 0;
$mantantTotalAvoirRestant = 0;
$mantantTotalFactureRestant = 0;
if($facture){
$mantantFacture = (float)(str_replace(',','.',$facture->getMonatantTtc()));
$avoirs = $this->em->getRepository(Avoir::class)->findByTokensAndActive($tokens);
if($avoirs){
foreach ($avoirs as $avoir){
if($avoir->getStatus() == Avoir::STATUS_AVOIR_REGULARISE_PARTIELLEMENT){
$mantantTotalAvoir += (float)(str_replace(',','.',$avoir->getMonatantRestantTtc()));
}else{
$mantantTotalAvoir += (float)(str_replace(',','.',$avoir->getMonatantTtc()));
}
}
}
if($mantantFacture >= $mantantTotalAvoir){
$mantantTotalAvoirRestant = 0;
$mantantTotalFactureRestant = $mantantFacture - $mantantTotalAvoir;
}else{
$mantantTotalAvoirRestant = $mantantTotalAvoir - $mantantFacture;
$mantantTotalFactureRestant = 0;
}
}
return [
'mantantFacture'=> $mantantFacture,
'mantantTotalAvoir'=> $mantantTotalAvoir,
'mantantTotalAvoirRestant'=> $mantantTotalAvoirRestant,
'mantantTotalFactureRestant'=> $mantantTotalFactureRestant,
];
}
public function espaceNumber($str,$chiffreApresVergule = 2){
$formattedNumber = str_replace(',','.',$str);
if($formattedNumber and is_numeric($formattedNumber)){
if(strpos($formattedNumber,'.') or strpos($formattedNumber,',')){
if(strpos($formattedNumber,'.')){
$formattedNumber = number_format($formattedNumber, $chiffreApresVergule, '.', ' ');
}else{
$formattedNumber = number_format($formattedNumber, $chiffreApresVergule, ',', ' ');
}
}else{
$formattedNumber = number_format($formattedNumber, 0, '0', ' ');
}
}
return $formattedNumber;
}
public function addAvoirInFacture($request,$token,$tokens)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
if($facture) {
$userCurrent = $this->security->getUser();
$spvFacture = $facture->getSpv();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFactureSpv()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
];
}
if ($spvFacture->getIsPrejeance() && !$userCurrent->getIsAccesValidationFacturePrejeance()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé à valide la facture</p>',
'success' => false,
];
}
}
$mantantData = $this->getMontantAvoirDispoFacture($request,$token,$tokens);
$mantantTotalAvoir = $mantantData['mantantTotalAvoir'];
$avoirs = $this->em->getRepository(Avoir::class)->findByTokensAndActive($tokens);
$this->addAvoirs($facture ,$avoirs);
return ['success' => false];
}
}
private function addAvoirs($financeFacture ,$avoirs){
$oldAvoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$financeFacture->getId()]);
if($oldAvoirs){
foreach ($oldAvoirs as $obj){
$avoir = $obj->getAvoir();
$avoir->setStatus(Avoir::STATUS_VALIDE);
$htAndTtc = $this->hTAndTTC($obj->getMonatantAvoirTtc(),$avoir->getTauxTva());
$avoir->setMonatantRestantTtc($obj->getMonatantAvoirTtc());
$avoir->setMonatantHt($htAndTtc['ht']);
$avoir->setMonatantTtc($obj->getMonatantAvoirTtc());
$this->em->persist($avoir);
$this->em->remove($obj);
$this->em->flush();
}
$financeFacture->setIsAvoir(false);
$financeFacture->setMonatantAvoirTtc('0');
$financeFacture->setMonatantRestantTtc('0');
$this->em->persist($financeFacture);
$this->em->flush();
}
if($avoirs && $financeFacture){
$mantantFacture = (float)(str_replace(',','.',$financeFacture->getMonatantTtc()));
$mantantTotalAvoir = 0;
foreach ($avoirs as $avoir){
if($mantantFacture > 0){
if($avoir->getStatus() == Avoir::STATUS_AVOIR_REGULARISE_PARTIELLEMENT){
$mantantAvoirTtc = (float)(str_replace(',','.',$avoir->getMonatantRestantTtc()));
}else{
$mantantAvoirTtc = (float)(str_replace(',','.',$avoir->getMonatantTtc()));
}
$mantantTotalAvoir = $mantantTotalAvoir + $mantantAvoirTtc;
if($mantantFacture >= $mantantAvoirTtc){
$mantantFacture = $mantantFacture - $mantantAvoirTtc;
$factureAvoir = new AvoirFactureFinance();
$factureAvoir->setAvoir($avoir);
$factureAvoir->setFinanceFacture($financeFacture);
if($avoir->getStatus() == Avoir::STATUS_AVOIR_REGULARISE_PARTIELLEMENT){
$factureAvoir->setMonatantHt('');
$factureAvoir->setMonatantTtc($mantantAvoirTtc);
$factureAvoir->setMonatantAvoirTtc($mantantAvoirTtc);
$factureAvoir->setTauxTva('');
$factureAvoir->setTva(null);
}else{
$factureAvoir->setMonatantHt((str_replace(',','.',$avoir->getMonatantHt())));
$factureAvoir->setMonatantTtc((str_replace(',','.',$avoir->getMonatantTtc())));
$factureAvoir->setMonatantAvoirTtc((str_replace(',','.',$avoir->getMonatantTtc())));
$factureAvoir->setTauxTva($avoir->getTauxTva());
$factureAvoir->setTva($avoir->getTva());
}
$this->em->persist($factureAvoir);
$avoir->setStatus(Avoir::STATUS_AVOIR_EN_ATTENT_REGULARISE);
$avoir->setMonatantRestantTtc('0');
$this->em->persist($avoir);
$this->em->flush();
}else{
$montantRestantTtc = $mantantAvoirTtc - $mantantFacture;
$factureAvoir = new AvoirFactureFinance();
$factureAvoir->setAvoir($avoir);
$factureAvoir->setFinanceFacture($financeFacture);
$factureAvoir->setMonatantTtc($mantantFacture);
$factureAvoir->setMonatantAvoirTtc($mantantAvoirTtc);
$this->em->persist($factureAvoir);
$avoir->setStatus(Avoir::STATUS_AVOIR_EN_ATTENT_REGULARISE);
$avoir->setMonatantRestantTtc($montantRestantTtc);
if($montantRestantTtc && $avoir->getTauxTva()){
$htAndTtc = $this->hTAndTTC($montantRestantTtc,$avoir->getTauxTva());
$avoir->setMonatantRestantTtc($montantRestantTtc);
$avoir->setMonatantHt($htAndTtc['ht']);
$avoir->setMonatantTtc($montantRestantTtc);
$avoir->setTva($htAndTtc['tva']);
}
$this->em->persist($avoir);
$this->em->flush();
$mantantFacture = 0;
}
}
$financeFacture->setIsAvoir(true);
$financeFacture->setMonatantAvoirTtc($mantantTotalAvoir);
$financeFacture->setMonatantRestantTtc($mantantFacture);
$this->em->persist($financeFacture);
$this->em->flush();
}
}
}
public function hTAndTTC($ttc,$TauxTva){
$ht = 0;
$tva = 0;
if($ttc && $TauxTva){
$ttc = (float) (str_replace(',','.',$ttc));
$TauxTva = (float) (str_replace(',','.',$TauxTva));
$ht = $ttc / (($TauxTva/100) + 1);
$tva = $ttc - $ht;
}
return ['ht'=>$ht,'tva'=>$tva];
}
public function valideAvoirPaiement($financeFacture){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$financeFacture->getId()]);
if($avoirs){
foreach ($avoirs as $avoirFacture){
$avoir = $avoirFacture->getAvoir();
if((float)$avoir->getMonatantRestantTtc() == 0){
$avoir->setStatus(Avoir::STATUS_AVOIR_REGULARISE);
$this->em->persist($avoir);
$this->em->flush();
}else{
$avoir->setStatus(Avoir::STATUS_AVOIR_REGULARISE_PARTIELLEMENT);
$this->em->persist($avoir);
$this->em->flush();
}
}
$nameFile = $this->createJustificatifAvoir($financeFacture);
if($nameFile){
$financeFacture->setJustification($nameFile);
$this->em->persist($financeFacture);
$this->em->flush();
}
}
}
public function createJustificatifAvoir($financeFacture){
if($financeFacture && $financeFacture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$financeFacture->getId()]);
$html = $this->twig->render('admin/facture-finance/pdf-justificatif-avoir.html.twig',['avoirs'=>$avoirs,'factureFinance'=>$financeFacture]);
$html2pdf = new Html2Pdf('P', 'A4', 'fr', true, 'UTF-8', array('5','5','5','5'));
$html2pdf->getSecurityService()->disableCheckAllowedHosts();
$html2pdf->pdf->SetAuthor('Prejeace-Industrial');
$html2pdf->pdf->SetTitle('Justificatif Avoir');
$html2pdf->pdf->SetSubject('Justificatif Avoir');
$html2pdf->pdf->SetKeywords('Justificatif Avoir');
$html2pdf->pdf->SetDisplayMode('real');
$html2pdf->WriteHTML($html);
$nameFichier = 'Justificatif-'.time().'-'.$financeFacture->getId().'.pdf';
$path_pdf = $this->params->get('justificatif_finance_directory').'/'.$nameFichier;
$html2pdf->Output($path_pdf,'F');
return $nameFichier;
}
return false;
}
public function paginateFactureCompensationPaiement($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$spv = $request->get('spv');
$fournisseur = $request->get('fournisseur');
$searchTabDate = $request->get('searchTabDate');
$filters = [
'query' => trim(@$search['value']),
'spv' => $spv,
'isAvoir' => 1,
'fournisseur' => $fournisseur,
'searchTabDate' => $searchTabDate,
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters, null, null, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
foreach ($factureFinances as $factureFinance) {
$action =
$this->twig->render(
'admin/facture-finance/default/bouton-compensation.html.twig', array(
'factureFinance' => $factureFinance
));
$action2 =
$this->twig->render(
'admin/facture-finance/default/select-compensation.html.twig', array(
'factureFinance' => $factureFinance
));
$avoirsList =
$this->twig->render(
'admin/facture-finance/default/avoirStrByFacture.html.twig', array(
'avoirs' => $this->getAvoirsFacture($factureFinance)
));
$monatantAvoirTtc = 0;
if((!is_null($factureFinance->getMonatantAvoirTtc()) && !is_null($factureFinance->getMonatantTtc())) ){
if($factureFinance->getMonatantAvoirTtc() > $factureFinance->getMonatantTtc() ){
$monatantAvoirTtc = $factureFinance->getMonatantTtc();
}else{
$monatantAvoirTtc = $factureFinance->getMonatantAvoirTtc();
}
}
$output['data'][] = [
'responsive_id' => '',
'id' => $factureFinance->getId(),
'numeroFacture' => $factureFinance->getNumeroFacture30Max(),
'monatantTtc' => $factureFinance->getMonatantTtc() ? $this->espaceNumber($factureFinance->getMonatantTtc()).'€' : '0€',
'date' => $factureFinance->getDate() ? $factureFinance->getDate()->format('d/m/Y') : '',
'monatantAvoirTtc' => $this->espaceNumber($monatantAvoirTtc).'€',
'monatantRestantTtc' => $factureFinance->getMonatantRestantTtc() ? $this->espaceNumber($factureFinance->getMonatantRestantTtc()).'€' : '0€',
'avoirsList' => $avoirsList,
'action' => $action,
'action2' => $action2
];
}
return $output;
}
private function getAvoirsFacture($facture){
$avoirs = null;
if($facture && $facture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
}
return $avoirs;
}
public function supprimeFacture($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
if($facture){
$facture->setIsArchived(true);
$facture->setNumeroFacture( $facture->getNumeroFacture().'----');
$this->em->persist($facture);
$this->em->flush();
return [
'success' => true,
'factureFinance' => $facture
];
}
return [
'success' => false,
];
}
public function getFilesPaiement(){
$ftp_server = "ftpbank8.exalog.net";
$ftp_username = "6e545e1b-01";
$ftp_userpass = "]dQQxbkC99ENFi{N]$]E";
$path ="/success_recept";
$ftp_conn = ftp_ssl_connect($ftp_server,7021) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
ftp_pasv($ftp_conn, true) or die("Cannot switch to passive mode");
$contents = ftp_mlsd($ftp_conn, $path);
$results = array();
foreach ($contents as $content) {
$results[] = array('name' => $content['name'], 'timestamp' => $content['modify']);
}
usort($results, function($a, $b) { return $b['timestamp'] - $a['timestamp']; });
if($results){
foreach ($results as $result){
$name = $result['name'];
$timestamp = $result['timestamp'];
$datetimeModify = new \DateTime($timestamp);
$dateNow = new \DateTime();
$dateNow->modify('-15 days');
$namePos = strpos($name, '.txt');
if($datetimeModify > $dateNow && $namePos !== false){
$local_file = $this->params->get('facture_finance_directory') . "/releve/".$name;
$server_file = 'success_recept/'.$name;
if (ftp_get($ftp_conn, $local_file, $server_file, FTP_BINARY)) {
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesValide();
foreach ($factures as $facture){
$totalEcheaceTtc = $this->getEcheanceTtc($facture->getSpv()?$facture->getSpv()->getId():null,$facture->getDateValidation()->format('Y-m-d'));
$totalEcheaceTtc = trim((float)$totalEcheaceTtc);
$totalPosPoint = strpos($totalEcheaceTtc,'.');
if($totalPosPoint){
$totalTtc = substr($totalEcheaceTtc,0,$totalPosPoint +2);
$totalTtc = str_replace('.','',$totalTtc);
}else{
$totalTtc = $totalEcheaceTtc;
}
if($totalTtc > 0){
$lines = file($local_file);
foreach ($lines as $line)
{
$findStringPos = strpos($line, $totalTtc);
$findStringPos2 = strpos($line, 'REM VIR SEPA DU');
if ($findStringPos !== false && $findStringPos2 !== false) {
$explodeLine = explode(' ',rtrim(substr($line, 0, -2)));
$lineTotalPrix = $explodeLine[count($explodeLine)-1];
$lineTotalPrixPos = strpos($lineTotalPrix, $totalTtc);
if($lineTotalPrixPos !== false){
$findStringTab = substr($line, $findStringPos2 + 16,8);
if($findStringTab){
$tabString = explode('/',trim($findStringTab));
$d = isset($tabString[0])?$tabString[0]:null;
$m = isset($tabString[1])?$tabString[1]:null;
$y = isset($tabString[2])?$tabString[2]:null;
if($y && $m && $d && (strlen($d) == 2) && (strlen($m) == 2) && (strlen($y) == 2)){
$date = \DateTime::createFromFormat('d/m/Y', $d.'/'.$m.'/'.'20'.$y );
if($date){
$dateMoin12J = new \DateTime($date->format('Y-m-d'));
$dateMoin12J->modify('-11 days');
if(($date > $facture->getDateValidation()) && ($facture->getDateValidation() > $dateMoin12J)){
if($facture->getDatePaiement()){
}else{
$facture->setDatePaiement($date);
$this->em->persist($facture);
$this->em->flush();
echo "Successfully date to facture numero ".$facture->getNumeroFacture30Max()." \n";
break ;
}
}
}
}
}
}
}
}
}
}
echo "Successfully written to $local_file\n";
} else {
echo "There was a problem\n";
}
}
}
}
ftp_close($ftp_conn);
}
public function extractFacturesAvoirsProject($arrays,$request=null){
$file= $this->params->get('zips_directory')."/extraire_factures.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Element")
->setCellValue('B1',"Mois")
->setCellValue('C1',"Date Facture")
->setCellValue('D1',"Libellé - Référence")
->setCellValue('E1',"Société facturée")
->setCellValue('F1',"Emetteur de la Facture")
->setCellValue('G1',"Projet homogénéisé")
->setCellValue('H1',"Motif homogénéisé")
->setCellValue('I1',"Type dépense / revenu")
->setCellValue('J1',"Total Facture")
->setCellValue('K1',"Montant TTC")
->setCellValue('L1',"Montant HT")
->setCellValue('M1',"TVA")
->setCellValue('N1',"Échéance TTC")
->setCellValue('O1',"Lettrage")
->setCellValue('P1',"Date paiement")
->setCellValue('Q1',"Payé par")
->setCellValue('R1',"Mode paiement")
->setCellValue('S1',"Facture url");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(17);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(24);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(40);
$spreadsheet->getActiveSheet()->getStyle('A1:S1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['element'])
->setCellValue('B'.$row , $array['mois'])
->setCellValue('D'.$row , $array['reference'])
->setCellValue('E'.$row , $array['societeFacture'])
->setCellValue('F'.$row , $array['fourniseur'])
->setCellValue('G'.$row , $array['projetHomogeneise'])
->setCellValue('H'.$row , $array['motifHomogeneise'])
->setCellValue('I'.$row , $array['typeDepense'])
->setCellValue('J'.$row , $array['totalFactureTtc'])
->setCellValue('K'.$row , $array['projetMontantTtc'])
->setCellValue('L'.$row , $array['projetMontantHt'])
->setCellValue('M'.$row , $array['projetMontantTva'])
->setCellValue('N'.$row , $array['totalEcheaceTtc'])
->setCellValue('O'.$row , $array['lettrage'])
->setCellValue('Q'.$row , $array['payPar'])
->setCellValue('R'.$row , $array['moyenPayement'])
;
$urlFacture = $array['facture_url']?$array['facture_url']->getPath() : null;
$nameFacture = $array['facture_url']?$array['facture_url']->getNomenclature()?$array['facture_url']->getNomenclature():$array['facture_url']->getName():null;
if($urlFacture && $request){
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
$spreadsheet->getActiveSheet()->setCellValue('S'.$row ,$nameFacture);
$spreadsheet->getActiveSheet()->getCell('S'.$row )->getHyperlink()->setUrl($baseurl.'/uploads/'.$urlFacture);
}
$spreadsheet = $this->addStyleToCellDate('C',$row,$array['dateFacture'],$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('P',$row,$array['datePayementDate'],$spreadsheet);
if($row % 2 == 0){
$spreadsheet->getActiveSheet()->getStyle('A'.$row.':S'.$row)->applyFromArray($tableRand);
}
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":S".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function getEcheanceTtc($spv,$date){
if($spv && $date) {
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesPayerParDate($spv, $date);
$prix = 0;
if($factures){
foreach ($factures as $facture){
if( $facture->getIsAvoir() and ($facture->getMonatantRestantTtc() > 0) ){
$prix += (float)str_replace(',','.',$facture->getMonatantRestantTtc());
}elseif ($facture->getIsAvoir() and ($facture->getMonatantRestantTtc() == 0)){
}
else{
$prix += (float)str_replace(',','.',$facture->getMonatantTtc());
}
}
}
return $prix;
}
return 0 ;
}
public function getFacturesAvoirsProject($spvFactureAvoir=null,$date1=null,$date2=null){
$factures = $this->em->getRepository(FactureFinance::class)->searchFacturePaiementAndValide($spvFactureAvoir,$date1,$date2);
$arrayFactureAvoir = [];
$h = 0;
foreach($factures as $facture){
$element = 'Facture';
$datePayementDate = null;
$dateFacture = $facture->getDateFacture() ? $facture->getDateFacture() : null;
$mois = $facture->getDateFacture() ? $facture->getDateFacture()->format("M-y") : '';
$reference = (string)$facture->getNumeroFacture30Max();
$societeFacture = $facture->getSpv()?$facture->getSpv()->getName():'';
$fourniseur = $facture->getFournisseur()?$facture->getFournisseur()->getName():'';
$motifHomogeneise = '';
$typeDepense = $facture->getClassification();
if(($facture->getMonatantRestantTtc() == 0) and $facture->getIsAvoir() ){
$totalEcheaceTtc = '/';
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$strAvoir = '';
if($avoirs) {
foreach ($avoirs as $avoir) {
$strAvoir = $strAvoir.'n°'.$avoir->getAvoir()->getNumeroAvoir().' ';
}
}
$datePayement = 'Annulée par l\'avoir '.$strAvoir;
}else{
$totalEcheaceTtc = $this->getEcheanceTtc($facture->getSpv()?$facture->getSpv()->getId():null,$facture->getDateValidation()?$facture->getDateValidation()->format('Y-m-d') : null);
$datePayement = null;
if($facture->getDatePaiement()){
$datePayement = $facture->getDatePaiement()->format('d/m/Y') ;
$datePayementDate = $facture->getDatePaiement();
}else{
if($facture->getDateValidation()){
$datePayement = $facture->getDateValidation()->format('d/m/Y') ;
$datePayementDate = $facture->getDateValidation() ;
}
}
}
$totalFactureTtc = str_replace(',','.',$facture->getMonatantTtc());
$lettrage = '';
$payPar = $facture->getSpv()?$facture->getSpv()->getName():'';
$moyenPayement = 'VIREMENT';
if(($facture->getMonatantRestantTtc() == 0) and $facture->getIsAvoir() ){
$moyenPayement = 'AVOIR';
}
$arrayProject = [];
$i = 0;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $item){
$arrayProject[$i]['projetHomogeneise'] = $item->getProject() ? $item->getProject()->getName() : '';
$arrayProject[$i]['projetMontantTtc'] = str_replace(',','.',$item->getMontantTtc());
$arrayProject[$i]['projetMontantHt'] = str_replace(',','.',$item->getMontantHt());
$arrayProject[$i]['projetMontantTva'] = str_replace(',','.','');
$i++;
}
}else{
$arrayProject[$i]['projetHomogeneise'] = '';
$arrayProject[$i]['projetMontantTtc'] = '';
$arrayProject[$i]['projetMontantHt'] = '';
$arrayProject[$i]['projetMontantTva'] = '';
}
foreach ($arrayProject as $projectFactureAvoir){
$arrayFactureAvoir[$h]['element'] = $element;
$arrayFactureAvoir[$h]['mois'] = $mois;
$arrayFactureAvoir[$h]['dateFacture'] = $dateFacture;
$arrayFactureAvoir[$h]['reference'] = $reference;
$arrayFactureAvoir[$h]['societeFacture'] = $societeFacture;
$arrayFactureAvoir[$h]['fourniseur'] = $fourniseur;
$arrayFactureAvoir[$h]['projetHomogeneise'] = $projectFactureAvoir['projetHomogeneise'];
$arrayFactureAvoir[$h]['motifHomogeneise'] = $motifHomogeneise;
$arrayFactureAvoir[$h]['typeDepense'] = $typeDepense;
$arrayFactureAvoir[$h]['totalFactureTtc'] = $totalFactureTtc;
$arrayFactureAvoir[$h]['projetMontantTtc'] = $projectFactureAvoir['projetMontantTtc'] ;
$arrayFactureAvoir[$h]['projetMontantHt'] = $projectFactureAvoir['projetMontantHt'] ;
$arrayFactureAvoir[$h]['projetMontantTva'] = $projectFactureAvoir['projetMontantTva'] ;
$arrayFactureAvoir[$h]['totalEcheaceTtc'] = $totalEcheaceTtc;
$arrayFactureAvoir[$h]['lettrage'] = $lettrage;
$arrayFactureAvoir[$h]['datePayement'] = $datePayement;
$arrayFactureAvoir[$h]['datePayementDate'] = $datePayementDate;
$arrayFactureAvoir[$h]['payPar'] = $payPar;
$arrayFactureAvoir[$h]['moyenPayement'] = $moyenPayement;
$arrayFactureAvoir[$h]['dateValidation'] = $facture->getDateValidation() ? $facture->getDateValidation()->format('d/m/Y'):null;
$arrayFactureAvoir[$h]['facture_url'] = $facture->getFileFacture();
$h++;
}
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
if($avoirs){
foreach ($avoirs as $avoir){
$fileAvoir = $avoir->getAvoir()->getFileAvoir();
$element = 'Avoir';
$dateAvoir = $avoir->getAvoir()->getDateAvoir() ? $avoir->getAvoir()->getDateAvoir() : null;
$mois = $avoir->getAvoir()->getDateAvoir() ? $avoir->getAvoir()->getDateAvoir()->format("M-y") : '';
$reference = (string)$avoir->getAvoir()->getNumeroAvoir();
$fourniseur = $avoir->getAvoir()->getFournisseur()?$avoir->getAvoir()->getFournisseur()->getName():'';
$motifHomogeneise = '';
$typeDepense = $avoir->getAvoir()->getClassification();
// $avoirsFacture = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir'=>$avoir->getId()]);
// if($avoirsFacture){
// $totalFactureTtc = str_replace(',','.',$avoirsFacture[0]->getMonatantAvoirTtc());
// }else{
$totalFactureTtc = str_replace(',','.',$avoir->getMonatantTtc());
// }
$datePayementDate = null;
$lettrage = '';
$payPar = $avoir->getAvoir()->getSpv()?$avoir->getAvoir()->getSpv()->getName():'';
$arrayProject = [];
if(($facture->getMonatantRestantTtc() == 0) and $facture->getIsAvoir() ){
$totalEcheaceTtc = '/';
$datePayement = 'Avoir sur la facture '.$facture->getNumeroFacture();
}else{
$totalEcheaceTtc = $this->getEcheanceTtc($facture->getSpv()?$facture->getSpv()->getId():null,$facture->getDateValidation()?$facture->getDateValidation()->format('Y-m-d') : null);
$datePayement = null;
if($facture->getDatePaiement()){
$datePayement = $facture->getDatePaiement()->format('d/m/Y') ;
$datePayementDate = $facture->getDatePaiement() ;
}else{
if($facture->getDateValidation()){
$datePayement = $facture->getDateValidation()->format('d/m/Y') ;
$datePayementDate = $facture->getDateValidation();
}
}
}
$i = 0;
if(count($avoir->getAvoir()->getProjectAvoir())>0){
foreach ($avoir->getAvoir()->getProjectAvoir() as $item){
$arrayProject[$i]['projetHomogeneise'] = $item->getProject() ? $item->getProject()->getName() : '';
$arrayProject[$i]['projetMontantTtc'] = str_replace(',','.',$item->getMontantTtc());
$arrayProject[$i]['projetMontantHt'] = str_replace(',','.',$item->getMontantHt());
$arrayProject[$i]['projetMontantTva'] = str_replace(',','.','');
$i++;
}
}else{
$arrayProject[$i]['projetHomogeneise'] = '';
$arrayProject[$i]['projetMontantTtc'] = '';
$arrayProject[$i]['projetMontantHt'] = '';
$arrayProject[$i]['projetMontantTva'] = '';
}
foreach ($arrayProject as $projectFactureAvoir){
$arrayFactureAvoir[$h]['element'] = $element;
$arrayFactureAvoir[$h]['mois'] = $mois;
$arrayFactureAvoir[$h]['dateFacture'] = $dateAvoir;
$arrayFactureAvoir[$h]['reference'] = $reference;
$arrayFactureAvoir[$h]['societeFacture'] = $societeFacture;
$arrayFactureAvoir[$h]['fourniseur'] = $fourniseur;
$arrayFactureAvoir[$h]['projetHomogeneise'] = $projectFactureAvoir['projetHomogeneise'];
$arrayFactureAvoir[$h]['motifHomogeneise'] = $motifHomogeneise;
$arrayFactureAvoir[$h]['typeDepense'] = $typeDepense;
$arrayFactureAvoir[$h]['totalFactureTtc'] = '-'.$totalFactureTtc;
$arrayFactureAvoir[$h]['projetMontantTtc'] = $projectFactureAvoir['projetMontantTtc'] ? '-'.$projectFactureAvoir['projetMontantTtc']: '' ;
$arrayFactureAvoir[$h]['projetMontantHt'] = $projectFactureAvoir['projetMontantHt'] ? '-'.$projectFactureAvoir['projetMontantHt']: '' ;
$arrayFactureAvoir[$h]['projetMontantTva'] = $projectFactureAvoir['projetMontantTva'] ? '-'.$projectFactureAvoir['projetMontantTva']: '' ;
$arrayFactureAvoir[$h]['totalEcheaceTtc'] = $totalEcheaceTtc;
$arrayFactureAvoir[$h]['lettrage'] = $lettrage;
$arrayFactureAvoir[$h]['datePayement'] = $datePayement;
$arrayFactureAvoir[$h]['datePayementDate'] = $datePayementDate;
$arrayFactureAvoir[$h]['payPar'] = $payPar;
$arrayFactureAvoir[$h]['moyenPayement'] = $moyenPayement;
$arrayFactureAvoir[$h]['dateValidation'] = $facture->getDateValidation() ? $facture->getDateValidation()->format('d/m/Y') : null;
$arrayFactureAvoir[$h]['facture_url'] = $fileAvoir;
$h++;
}
}
}
}
return $arrayFactureAvoir;
}
/**
* Pagination DataTable (serverSide) de la liste factures/avoirs par projet.
* La source est le tableau construit par getFacturesAvoirsProject : la recherche,
* le tri et la pagination sont appliqués en PHP sur ce tableau.
* La valeur de sélection de chaque ligne est son index dans le tableau de base
* (mêmes filtres SPV/dates), réutilisé par getFacturesAvoirsByRequestSelectAll.
*/
public function paginateFactureAvoir($request){
$length = $request->get('length');
$length = ($length && $length != -1) ? (int) $length : 0;
$start = (int) $request->get('start');
$columns = $request->get('columns');
$order = $request->get('order');
$order = isset($order[0]) ? $order[0] : null;
$search = $request->get('search');
$query = trim((string) (isset($search['value']) ? $search['value'] : ''));
$spvFactureAvoir = $request->get('spvFactureAvoir');
$date1 = $request->get('date1FactureAvoir') ? \DateTime::createFromFormat('Y-m-d', $request->get('date1FactureAvoir')) : null;
$date2 = $request->get('date2FactureAvoir') ? \DateTime::createFromFormat('Y-m-d', $request->get('date2FactureAvoir')) : null;
$arrays = $this->getFacturesAvoirsProject($spvFactureAvoir, $date1, $date2);
foreach ($arrays as $k => &$rowRef) {
$rowRef['rowIndex'] = $k;
}
unset($rowRef);
$recordsTotal = count($arrays);
if ($query !== '') {
$self = $this;
$arrays = array_values(array_filter($arrays, function ($item) use ($self, $query) {
return $self->matchFactureAvoirQuery($item, $query);
}));
}
$recordsFiltered = count($arrays);
$columnName = null;
$dirOrder = 'asc';
if ($order && isset($columns[$order['column']]['data'])) {
$columnName = $columns[$order['column']]['data'];
$dirOrder = $order['dir'];
}
if ($columnName && !in_array($columnName, ['btnSelect', 'action'], true)) {
$numericCols = ['totalFactureTtc', 'projetMontantTtc', 'projetMontantHt', 'projetMontantTva', 'totalEcheaceTtc'];
usort($arrays, function ($a, $b) use ($columnName, $dirOrder, $numericCols) {
if ($columnName === 'dateFacture') {
$va = !empty($a['dateFacture']) ? $a['dateFacture']->getTimestamp() : 0;
$vb = !empty($b['dateFacture']) ? $b['dateFacture']->getTimestamp() : 0;
$cmp = $va <=> $vb;
} elseif ($columnName === 'datePayement') {
$va = !empty($a['datePayementDate']) ? $a['datePayementDate']->getTimestamp() : 0;
$vb = !empty($b['datePayementDate']) ? $b['datePayementDate']->getTimestamp() : 0;
$cmp = $va <=> $vb;
} elseif (in_array($columnName, $numericCols, true)) {
$cmp = (float) (isset($a[$columnName]) ? $a[$columnName] : 0) <=> (float) (isset($b[$columnName]) ? $b[$columnName] : 0);
} else {
$cmp = strcasecmp((string) (isset($a[$columnName]) ? $a[$columnName] : ''), (string) (isset($b[$columnName]) ? $b[$columnName] : ''));
}
return $dirOrder === 'desc' ? -$cmp : $cmp;
});
}
$page = $length ? array_slice($arrays, $start, $length) : $arrays;
$output = [
'data' => [],
'recordsFiltered' => $recordsFiltered,
'recordsTotal' => $recordsTotal,
];
foreach ($page as $item) {
$output['data'][] = [
'responsive_id' => '',
'btnSelect' => '<input type="checkbox" class="selectFactureAvoirExtracted ml-1" value="' . $item['rowIndex'] . '" name="selectFactureAvoirExtracted[]">',
'element' => htmlspecialchars((string) $item['element']),
'mois' => htmlspecialchars((string) $item['mois']),
'dateFacture' => !empty($item['dateFacture']) ? $item['dateFacture']->format('d-m-Y') : '-',
'reference' => htmlspecialchars((string) $item['reference']),
'projetHomogeneise' => htmlspecialchars((string) $item['projetHomogeneise']),
'totalFactureTtc' => htmlspecialchars((string) $item['totalFactureTtc']),
'projetMontantTtc' => htmlspecialchars((string) $item['projetMontantTtc']),
'projetMontantHt' => htmlspecialchars((string) $item['projetMontantHt']),
'projetMontantTva' => htmlspecialchars((string) $item['projetMontantTva']),
'totalEcheaceTtc' => htmlspecialchars((string) $item['totalEcheaceTtc']),
'datePayement' => htmlspecialchars((string) $item['datePayement']),
'payPar' => htmlspecialchars((string) $item['payPar']),
'moyenPayement' => htmlspecialchars((string) $item['moyenPayement']),
'action' => '',
];
}
return $output;
}
/** Une ligne facture/avoir correspond-elle à la recherche libre du DataTable ? */
public function matchFactureAvoirQuery(array $item, $query)
{
$cols = ['element', 'mois', 'reference', 'societeFacture', 'fourniseur', 'projetHomogeneise', 'typeDepense',
'totalFactureTtc', 'projetMontantTtc', 'projetMontantHt', 'projetMontantTva', 'totalEcheaceTtc',
'datePayement', 'payPar', 'moyenPayement'];
foreach ($cols as $col) {
if (isset($item[$col]) && $item[$col] !== null && stripos((string) $item[$col], $query) !== false) {
return true;
}
}
if (!empty($item['dateFacture']) && $item['dateFacture'] instanceof \DateTimeInterface
&& strpos($item['dateFacture']->format('d-m-Y'), $query) !== false) {
return true;
}
return false;
}
/**
* Lignes factures/avoirs à extraire selon la requête :
* - selectedRows[] (indexes du tableau de base) -> uniquement ces lignes ;
* - sinon tout le tableau filtré (SPV/dates + recherche libre éventuelle).
*/
public function getFacturesAvoirsByRequestSelectAll($request)
{
$spvFactureAvoir = $request->get('spvFactureAvoir');
$date1 = $request->get('date1FactureAvoir') ? \DateTime::createFromFormat('Y-m-d', $request->get('date1FactureAvoir')) : null;
$date2 = $request->get('date2FactureAvoir') ? \DateTime::createFromFormat('Y-m-d', $request->get('date2FactureAvoir')) : null;
$arrays = $this->getFacturesAvoirsProject($spvFactureAvoir, $date1, $date2);
$selectedRows = $request->get('selectedRows');
if (is_array($selectedRows) && count($selectedRows) > 0) {
$selected = [];
foreach ($selectedRows as $idx) {
if (isset($arrays[(int) $idx])) {
$selected[] = $arrays[(int) $idx];
}
}
return $selected;
}
$search = $request->get('search');
$query = trim((string) (isset($search['value']) ? $search['value'] : ''));
if ($query !== '') {
$self = $this;
$arrays = array_values(array_filter($arrays, function ($item) use ($self, $query) {
return $self->matchFactureAvoirQuery($item, $query);
}));
}
return $arrays;
}
public function importDatePaiement($filename)
{
$file = $this->params->get('uploads_directory')."/".$filename;
$array = [];
$f = fopen($file, "r");
$flag = true;
$i = 0;
$header = [];
while (($line = fgetcsv($f,0,";")) !== false) {
if($flag) {
$header = [];
foreach ($line as $cell) {
$header[] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$flag = false;
continue;
}
foreach ($line as $key => $cell) {
$array[$i][$header[$key]] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$i++ ;
}
fclose($f);
foreach ($array as &$item){
if(isset($item['NUM DE FACTURE'])){
$numFacture = trim($item['NUM DE FACTURE']);
$nameFournisseur = trim($item['FOURNISSEUR']);
$fournisseur = $this->em->getRepository(Fournisseur::class)->findOneBy(['name'=>$nameFournisseur]);
if($fournisseur) {
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['numeroFacture' => $numFacture, 'fournisseur' => $fournisseur->getId()]);
if ($facture) {
if (isset($item['DATE DE PAIEMENT']) && !empty($item['DATE DE PAIEMENT'])) {
$dateStr = trim($item['DATE DE PAIEMENT']);
$dateStrTab = explode("/", $dateStr);
if (isset($dateStrTab[2]) && strlen($dateStrTab[2]) == 2) {
$date = \DateTime::createFromFormat('d/m/y', $item['DATE DE PAIEMENT']);
} else {
$date = \DateTime::createFromFormat('d/m/Y', $item['DATE DE PAIEMENT']);
}
if ($date) {
$facture->setDatePaiement($date);
}
}
$this->em->persist($facture);
$this->em->flush();
$item['action'] = 1;
}
}else{
$item['action'] = 0;
}
}else{
$item['action'] = 0;
}
}
return ['headerTab' => $header,'bodyTab'=>$array];
}
public function addComment($request,$user)
{
$comment = $request->get('comment');
$token = $request->get('token');
if($comment and $token){
$factureFinance = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
if($factureFinance && $user){
$commentEntity = new CommentFactureFinance();
$commentEntity->setFactureFinance($factureFinance);
$commentEntity->setUser($user);
$commentEntity->setComment($comment);
$this->em->persist($commentEntity);
$this->em->flush();
return [
'commentEntity' => $commentEntity,
'success' => true
];
}
}
return [
'success' => false
];
}
public function extractFacturesPdf($factures,$request){
if($factures){
$zip = new \ZipArchive();
$zipfile = $this->params->get('zips_directory') . '/factures-pdf.zip';
if (file_exists($zipfile)) unlink($zipfile);
if ($zip->open($zipfile, \ZipArchive::CREATE) === TRUE) {
foreach ($factures as $facture) {
if ($facture->getFileFacture()) {
$token = $facture->getFileFacture()->getToken();
$file = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $token]);
$filePath = $this->params->get('uploads_directory') . "/" . $file->getPath();
$name = $file->getNomenclature() ? str_replace('/','-',$file->getNomenclature()) : $file->getName();
$zip->addFile($filePath, $name);
}
}
$zip->close();
return $zipfile;
}
}
return false;
}
public function updateStatusValidePaye()
{
$factures = $this->em->getRepository(FactureFinance::class)->getFacturesValide();
if($factures) {
foreach ($factures as $facture){
if($facture->getDatePaiement()){
$facture->setStatus(FactureFinance::STATUS_DATE_PAIEMENT_PAYER);
$this->em->persist($facture);
$this->em->flush();
}
}
}
}
public function addFactureBrouillon($array){
$tab = [];
if($array){
foreach ($array as $item){
$tokenFile = $item['tokenFile'];
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenFile]);
if($docUpload){
$factureBrouillon = new FactureFinanceBrouillon();
$factureBrouillon->setFileFacture($docUpload);
$this->em->persist($factureBrouillon);
$this->em->flush();
$this->factureImportApi($factureBrouillon);
$tab[] = $factureBrouillon->getToken();
}
}
}
return $tab;
}
public function addFactureBrouillonCsv($array){
$tab = [];
if($array){
foreach ($array as $item){
$tokenFile = $item['tokenFile'];
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenFile]);
if($docUpload){
$array = $this->getCsvRowsFromDocUpload($docUpload);
foreach ($array as $item){
$numFacture = isset($item["Numéro facture"]) ? $item["Numéro facture"] : null;
$spvName = isset($item['Société']) ? $item['Société'] : null;
$fournisseurName = isset($item['Nom fournisseur']) ? $item['Nom fournisseur'] : null;
$dateCreationFacture = isset($item['Date réception']) ? $item['Date réception'] : null;
$montantHt = isset($item['Montant HT']) ? $item['Montant HT'] : 0;
$montantTtc = isset($item['Montant TTC']) ? $item['Montant TTC'] : 0;
$montantTva = isset($item['Montant TVA']) ? $item['Montant TVA'] : null;
$tauxTva = isset($item['Taux TVA']) ? $item['Taux TVA'] : null;
$dateEcheance = isset($item['Date échéance']) ? $item['Date échéance'] : null;
$dateEmissionFacture = isset($item['Date facture']) ? $item['Date facture'] : null;
$commantaire = isset($item['Commentaires']) ? $item['Commentaires'] : null;
if($numFacture){
$factureBrouillon = new FactureFinanceBrouillon();
$factureBrouillon->setNumeroFacture($numFacture);
if($dateCreationFacture){
$dateCreationFactureObject = \DateTime::createFromFormat('d/m/Y', $dateCreationFacture );
$factureBrouillon->setCreatedAt($dateCreationFactureObject);
}
if($dateEcheance){
$dateEcheanceObject = \DateTime::createFromFormat('d/m/Y', $dateEcheance );
$factureBrouillon->setDelaiPaiementDate($dateEcheanceObject);
if($dateCreationFacture){
$dateCreationFactureObject = \DateTime::createFromFormat('d/m/Y', $dateCreationFacture );
$interval = $dateCreationFactureObject->diff($dateEcheanceObject);
$factureBrouillon->setDelaiPaiement((int)$interval->format("%a"));
}
}
if($dateEmissionFacture){
$dateEmissionFactureObject = \DateTime::createFromFormat('d/m/Y', $dateEmissionFacture );
$factureBrouillon->setDateFacture($dateEmissionFactureObject);
}
$factureBrouillon->setTauxTva(($tauxTva !== null && $tauxTva !== '') ? $tauxTva : 20);
$factureBrouillon->setMonatantHt($montantHt);
$factureBrouillon->setMonatantTtc($montantTtc);
if($montantTva !== null && $montantTva !== ''){
$factureBrouillon->setTva((float)str_replace(',', '.', $montantTva));
}else{
$factureBrouillon->setTva((float)str_replace(',', '.', $montantTtc) - (float)str_replace(',', '.', $montantHt));
}
if($spvName){
$spv = $this->em->getRepository(Spv::class)->findOneBy(['name' => $spvName]);
if($spv){
$factureBrouillon->setSpv($spv);
}
}
if ($fournisseurName) {
$fournisseur = $this->em->getRepository(Fournisseur::class)->findOneBy(['name' => $fournisseurName]);
if($fournisseur){
$factureBrouillon->setFournisseur($fournisseur);
}
}
if($commantaire){
$factureBrouillon->setCommentaire($commantaire);
}
$this->em->persist($factureBrouillon);
$this->em->flush();
$tab[] = $factureBrouillon->getToken();
}
}
}
}
}
return $tab;
}
public function getCsvRowsFromDocUpload(DocUpload $docUpload): array
{
$file = $this->params->get('uploads_directory')."/".$docUpload->getPath();
if(strpos($docUpload->getPath(), '.xlsx')){
$spreadsheet = IOFactory::load($file);
$writer = new Csv($spreadsheet);
$writer->setDelimiter(';');
$writer->setEnclosure('"');
$writer->setSheetIndex(0);
$fileCsv = str_replace('.xlsx','.csv',$file);
$writer->save($fileCsv);
$file = $fileCsv;
}
$array = [];
$f = fopen($file, "r");
$flag = true;
$i = 0;
$header = [];
while (($line = fgetcsv($f,0,";")) !== false) {
if($flag) {
$header = [];
foreach ($line as $key1 => $cell) {
$cell = str_replace("\xEF\xBB\xBF", '', $cell);
$header[] = str_replace('"','',$this->convertCellUtf8(trim($cell)));
}
$flag = false;
continue;
}
foreach ($line as $key => $cell) {
$array[$i][$header[$key]]= $this->convertCellUtf8(trim($cell));
}
$i++ ;
}
fclose($f);
return $array;
}
public function parseCsvFactureFinanceRows(DocUpload $docUpload): array
{
$rows = [];
$seen = [];
foreach ($this->getCsvRowsFromDocUpload($docUpload) as $index => $item){
if(!array_filter($item, function($v){ return $v !== null && $v !== ''; })){
continue;
}
$numFacture = isset($item["Numéro facture"]) ? $item["Numéro facture"] : null;
$spvName = isset($item['Société']) ? $item['Société'] : null;
$fournisseurName = isset($item['Nom fournisseur']) ? $item['Nom fournisseur'] : null;
$dateReception = isset($item['Date réception']) ? $item['Date réception'] : null;
$montantHt = isset($item['Montant HT']) ? $item['Montant HT'] : 0;
$montantTtc = isset($item['Montant TTC']) ? $item['Montant TTC'] : 0;
$montantTva = isset($item['Montant TVA']) ? $item['Montant TVA'] : null;
$tauxTva = isset($item['Taux TVA']) ? $item['Taux TVA'] : null;
$dateEcheance = isset($item['Date échéance']) ? $item['Date échéance'] : null;
$dateEmissionFacture = isset($item['Date facture']) ? $item['Date facture'] : null;
$commantaire = isset($item['Commentaires']) ? $item['Commentaires'] : null;
$errors = [];
$spv = null;
$fournisseur = null;
if(!$numFacture){
$errors[] = 'Numéro de facture manquant';
}
if($spvName){
$spv = $this->em->getRepository(Spv::class)->findOneBy(['name' => $spvName]);
}
if(!$spv){
$errors[] = $spvName ? 'Société "'.$spvName.'" introuvable' : 'Société manquante';
}
if($fournisseurName){
$fournisseur = $this->em->getRepository(Fournisseur::class)->findOneBy(['name' => $fournisseurName]);
}
if(!$fournisseur){
$errors[] = $fournisseurName ? 'Fournisseur "'.$fournisseurName.'" introuvable' : 'Fournisseur manquant';
}
$dateReceptionObject = null;
if($dateReception){
$dateReceptionObject = \DateTime::createFromFormat('d/m/Y', $dateReception);
if(!$dateReceptionObject){
$errors[] = 'Date réception invalide "'.$dateReception.'"';
}
}
$dateEcheanceObject = null;
if($dateEcheance){
$dateEcheanceObject = \DateTime::createFromFormat('d/m/Y', $dateEcheance);
if(!$dateEcheanceObject){
$errors[] = 'Date échéance invalide "'.$dateEcheance.'"';
}
}
$dateEmissionFactureObject = null;
if($dateEmissionFacture){
$dateEmissionFactureObject = \DateTime::createFromFormat('d/m/Y', $dateEmissionFacture);
if(!$dateEmissionFactureObject){
$errors[] = 'Date facture invalide "'.$dateEmissionFacture.'"';
}
}
if($numFacture && $fournisseur){
$factureFinanceOld = $this->em->getRepository(FactureFinance::class)->findOneBy(['numeroFacture' => $numFacture, 'fournisseur' => $fournisseur]);
if($factureFinanceOld){
$errors[] = 'Une facture avec ce numéro existe déjà pour ce fournisseur';
}
$keySeen = $numFacture.'|'.$fournisseur->getId();
if(isset($seen[$keySeen])){
$errors[] = 'Doublon dans le fichier (ligne '.$seen[$keySeen].')';
}else{
$seen[$keySeen] = $index + 2;
}
}
$rows[] = [
'index' => $index,
'line' => $index + 2,
'numeroFacture' => $numFacture,
'spvName' => $spvName,
'spv' => $spv,
'fournisseurName' => $fournisseurName,
'fournisseur' => $fournisseur,
'dateReception' => $dateReceptionObject ?: null,
'dateEcheance' => $dateEcheanceObject ?: null,
'dateFacture' => $dateEmissionFactureObject ?: null,
'montantHt' => $montantHt,
'montantTtc' => $montantTtc,
'montantTva' => $montantTva,
'tauxTva' => $tauxTva,
'commentaire' => $commantaire,
'errors' => $errors,
];
}
return $rows;
}
public function importFacturesFinanceCsv($tokenCsv, $pdfTokens, $user): array
{
$result = ['imported' => 0, 'skipped' => []];
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenCsv]);
if(!$docUpload){
$result['error'] = 'Fichier à importer introuvable';
return $result;
}
$rows = $this->parseCsvFactureFinanceRows($docUpload);
$usedPdfTokens = [];
foreach ($rows as $row){
if(count($row['errors']) > 0){
$result['skipped'][] = ['line' => $row['line'], 'numeroFacture' => $row['numeroFacture'], 'reason' => implode(' / ', $row['errors'])];
continue;
}
$pdfToken = isset($pdfTokens[$row['index']]) ? $pdfTokens[$row['index']] : null;
$fileFacture = null;
if($pdfToken && !in_array($pdfToken, $usedPdfTokens)){
$fileFacture = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $pdfToken]);
}
if(!$fileFacture){
$result['skipped'][] = ['line' => $row['line'], 'numeroFacture' => $row['numeroFacture'], 'reason' => 'PDF de la facture manquant'];
continue;
}
$usedPdfTokens[] = $pdfToken;
$facture = new FactureFinance();
$facture->setNumeroFacture($row['numeroFacture']);
if($row['dateReception']){
$facture->setCreatedAt($row['dateReception']);
}
if($row['dateEcheance']){
$facture->setDelaiPaiementDate($row['dateEcheance']);
if($row['dateReception']){
$interval = $row['dateReception']->diff($row['dateEcheance']);
$facture->setDelaiPaiement((int)$interval->format("%a"));
}
}
if($row['dateFacture']){
$facture->setDateFacture($row['dateFacture']);
}
$facture->setTauxTva(($row['tauxTva'] !== null && $row['tauxTva'] !== '') ? $row['tauxTva'] : 20);
$facture->setMonatantHt($row['montantHt']);
$facture->setMonatantTtc($row['montantTtc']);
if($row['montantTva'] !== null && $row['montantTva'] !== ''){
$facture->setTva((float)str_replace(',', '.', $row['montantTva']));
}else{
$facture->setTva((float)str_replace(',', '.', $row['montantTtc']) - (float)str_replace(',', '.', $row['montantHt']));
}
$facture->setSpv($row['spv']);
$facture->setFournisseur($row['fournisseur']);
$facture->setCategory('Facture');
$facture->setUserCreated($user);
$facture->setStatus(FactureFinance::STATUS_EN_ATTENT_VALIDATION);
$this->getNomenclature($facture, $fileFacture);
$facture->setFileFacture($fileFacture);
$this->em->persist($facture);
$this->em->flush();
$this->notification->setCompteurErpiPiece($facture);
$this->notification->setCompteurErpiEcriture($facture);
if($row['commentaire']){
$commentFactureFinance = new CommentFactureFinance();
$commentFactureFinance->setFactureFinance($facture);
$commentFactureFinance->setComment($row['commentaire']);
$commentFactureFinance->setUser($user);
$this->em->persist($commentFactureFinance);
$this->em->flush();
}
$this->historyService->addHistoryFactureAvoir($user, 'Création de la facture', null, $facture);
$result['imported']++;
}
return $result;
}
/**
* Convertit une cellule CSV en UTF-8. Les fichiers enregistrés par Excel en
* « CSV (séparateur : point-virgule) » sont en Windows-1252 et non en UTF-8 :
* mb_convert_encoding avec 'auto' ne détecte pas cet encodage (accents perdus).
*/
private function convertCellUtf8($cell)
{
if (mb_check_encoding($cell, 'UTF-8')) {
return $cell;
}
return mb_convert_encoding($cell, 'UTF-8', 'Windows-1252');
}
public function getFactureBrouillonByToken($array){
$facturesBrouillon = [];
if($array){
$facturesBrouillon = $this->em->getRepository(FactureFinanceBrouillon::class)->findByTokens($array);
}
return $facturesBrouillon;
}
public function factureImportApi($factureFinanceBrouillon){
$facturePdf = $factureFinanceBrouillon->getFileFacture();
if($facturePdf){
$mindeeClient = new Client(self::API_KEY_MINDEE);
$inputSource = $mindeeClient->sourceFromPath($this->params->get('uploads_directory').'/'.$facturePdf->getPath());
$apiResponse = $mindeeClient->parse(InvoiceV4::class, $inputSource);
if($apiResponse->document && $apiResponse->document->inference && $apiResponse->document->inference->prediction){
try {
$spvName = $apiResponse->document->inference->prediction->customerName->value;
$factureDate = ($apiResponse->document->inference->prediction->date and $apiResponse->document->inference->prediction->date->value and property_exists($apiResponse->document->inference->prediction->date, 'dateObject')) ? $apiResponse->document->inference->prediction->date->dateObject : null;
$factureNumber = $apiResponse->document->inference->prediction->invoiceNumber->value;
$fournisseurName = $apiResponse->document->inference->prediction->supplierName->value;
$prixTtc = $apiResponse->document->inference->prediction->totalAmount->value;
$prixHt = $apiResponse->document->inference->prediction->totalNet->value;
$prixTva = $apiResponse->document->inference->prediction->totalTax->value;
$tva =
$siretFournisseur = null;
$sirenFournisseur = null;
if ($apiResponse->document->inference->prediction->supplierCompanyRegistrations) {
foreach ($apiResponse->document->inference->prediction->supplierCompanyRegistrations as $item) {
if ($item->type == 'SIREN') {
$sirenFournisseur = $item->value;
}
if ($item->type == 'SIRET') {
$siretFournisseur = $item->value;
}
}
}
$spv = null;
if ($spvName) {
$spv = $this->em->getRepository(Spv::class)->findOneBy(['name' => str_replace('SOCIÉTÉ ', '', $spvName)]);
}
$fourniseur = null;
if ($fournisseurName || $sirenFournisseur || $siretFournisseur) {
$fournisseurByName = null;
$fournisseurBySiren = null;
$fournisseurBySiret = null;
if ($fournisseurName) {
$fournisseurByName = $this->em->getRepository(Fournisseur::class)->findOneBy(['name' => $fournisseurName]);
}
if ($sirenFournisseur) {
$fournisseurBySiren = $this->em->getRepository(Fournisseur::class)->findOneBy(['siren' => number_format($sirenFournisseur, 0, ' ', ' ')]);
}
if ($siretFournisseur) {
$fournisseurBySiret = $this->em->getRepository(Fournisseur::class)->findOneBy(['siret' => number_format($siretFournisseur, 0, ' ', ' ')]);
}
if ($fournisseurByName) {
$fourniseur = $fournisseurByName;
} elseif ($fournisseurBySiren) {
$fourniseur = $fournisseurBySiren;
} elseif ($fournisseurBySiret) {
$fourniseur = $fournisseurBySiret;
}
}
$factureFinanceBrouillon->setNumeroFacture($factureNumber);
if ($spv) {
$factureFinanceBrouillon->setSpv($spv);
}
if ($fourniseur) {
$factureFinanceBrouillon->setFournisseur($fourniseur);
}
if ($factureDate) {
$factureFinanceBrouillon->setDateFacture($factureDate);
}
$factureFinanceBrouillon->setMonatantHt($prixHt);
$factureFinanceBrouillon->setTva((float)$prixTtc - (float)$prixHt);
$factureFinanceBrouillon->setMonatantTtc($prixTtc);
$factureFinanceBrouillon->setTauxTva(20);
$this->em->persist($factureFinanceBrouillon);
$this->em->flush();
if($factureFinanceBrouillon->getFileFacture()){
$this->getNomenclature($factureFinanceBrouillon,$factureFinanceBrouillon->getFileFacture());
}
}catch (\Exception $e){
return false;
}
}
}
}
public function getFacturesAvoirsProjectCommande(){
$factures = $this->em->getRepository(FactureFinance::class)->searchFacturePaiementCommande();
$arrayFactureAvoir = [];
$h = 0;
foreach($factures as $facture){
$element = 'Facture';
$dateFacture = $facture->getDateFacture() ? $facture->getDateFacture() : null;
$mois = $facture->getDateFacture() ? $facture->getDateFacture()->format("M-y") : '';
$reference = (string)$facture->getNumeroFacture30Max();
$societeFacture = $facture->getSpv()?$facture->getSpv()->getName():'';
$fourniseur = $facture->getFournisseur()?$facture->getFournisseur()->getName():'';
$motifHomogeneise = '';
$typeDepense = $facture->getClassification();
if(($facture->getMonatantRestantTtc() == 0) and $facture->getIsAvoir() ){
$totalEcheaceTtc = '/';
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$strAvoir = '';
if($avoirs) {
foreach ($avoirs as $avoir) {
$strAvoir = $strAvoir.'n°'.$avoir->getAvoir()->getNumeroAvoir().' ';
}
}
$datePayement = 'Annulée par l\'avoir '.$strAvoir;
}else{
$totalEcheaceTtc = $this->getEcheanceTtc($facture->getSpv()?$facture->getSpv()->getId():null,$facture->getDateValidation()?$facture->getDateValidation()->format('Y-m-d') : null);
$datePayement = null;
if($facture->getDatePaiement()){
$datePayement = $facture->getDatePaiement()->format('d/m/Y') ;
}else{
if($facture->getDateValidation()){
$datePayement = $facture->getDateValidation()->format('d/m/Y') ;
}
}
}
$totalFactureTtc = str_replace(',','.',$facture->getMonatantTtc());
$lettrage = '';
$payPar = $facture->getSpv()?$facture->getSpv()->getName():'';
$moyenPayement = 'VIREMENT';
if(($facture->getMonatantRestantTtc() == 0) and $facture->getIsAvoir() ){
$moyenPayement = 'AVOIR';
}
$arrayProject = [];
$i = 0;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $item){
$arrayProject[$i]['projetHomogeneise'] = $item->getProject() ? $item->getProject()->getName() : '';
$arrayProject[$i]['projetMontantTtc'] = str_replace(',','.',$item->getMontantTtc());
$arrayProject[$i]['projetMontantHt'] = str_replace(',','.',$item->getMontantHt());
$arrayProject[$i]['projetMontantTva'] = str_replace(',','.','');
$i++;
}
}else{
$arrayProject[$i]['projetHomogeneise'] = '';
$arrayProject[$i]['projetMontantTtc'] = '';
$arrayProject[$i]['projetMontantHt'] = '';
$arrayProject[$i]['projetMontantTva'] = '';
}
foreach ($arrayProject as $projectFactureAvoir){
$arrayFactureAvoir[$h]['element'] = $element;
$arrayFactureAvoir[$h]['mois'] = $mois;
$arrayFactureAvoir[$h]['dateFacture'] = $dateFacture;
$arrayFactureAvoir[$h]['reference'] = $reference;
$arrayFactureAvoir[$h]['societeFacture'] = $societeFacture;
$arrayFactureAvoir[$h]['fourniseur'] = $fourniseur;
$arrayFactureAvoir[$h]['projetHomogeneise'] = $projectFactureAvoir['projetHomogeneise'];
$arrayFactureAvoir[$h]['motifHomogeneise'] = $motifHomogeneise;
$arrayFactureAvoir[$h]['typeDepense'] = $typeDepense;
$arrayFactureAvoir[$h]['totalFactureTtc'] = $totalFactureTtc;
$arrayFactureAvoir[$h]['projetMontantTtc'] = $projectFactureAvoir['projetMontantTtc'] ;
$arrayFactureAvoir[$h]['projetMontantHt'] = $projectFactureAvoir['projetMontantHt'] ;
$arrayFactureAvoir[$h]['projetMontantTva'] = $projectFactureAvoir['projetMontantTva'] ;
$arrayFactureAvoir[$h]['totalEcheaceTtc'] = $totalEcheaceTtc;
$arrayFactureAvoir[$h]['lettrage'] = $lettrage;
$arrayFactureAvoir[$h]['datePayement'] = $datePayement;
$arrayFactureAvoir[$h]['payPar'] = $payPar;
$arrayFactureAvoir[$h]['moyenPayement'] = $moyenPayement;
$arrayFactureAvoir[$h]['dateValidation'] = $facture->getDateValidation() ? $facture->getDateValidation()->format('d/m/Y'):null;
$arrayFactureAvoir[$h]['facture_url'] = $facture->getFileFacture();
$h++;
}
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
if($avoirs){
foreach ($avoirs as $avoir){
$fileAvoir = $avoir->getAvoir()->getFileAvoir();
$element = 'Avoir';
$dateAvoir = $avoir->getAvoir()->getDateAvoir() ? $avoir->getAvoir()->getDateAvoir() : null;
$mois = $avoir->getAvoir()->getDateAvoir() ? $avoir->getAvoir()->getDateAvoir()->format("M-y") : '';
$reference = (string)$avoir->getAvoir()->getNumeroAvoir();
$fourniseur = $avoir->getAvoir()->getFournisseur()?$avoir->getAvoir()->getFournisseur()->getName():'';
$motifHomogeneise = '';
$typeDepense = '';
// $avoirsFacture = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir'=>$avoir->getId()]);
// if($avoirsFacture){
// $totalFactureTtc = str_replace(',','.',$avoirsFacture[0]->getMonatantAvoirTtc());
// }else{
$totalFactureTtc = str_replace(',','.',$avoir->getMonatantTtc());
// }
$lettrage = '';
$payPar = $avoir->getAvoir()->getSpv()?$avoir->getAvoir()->getSpv()->getName():'';
$arrayProject = [];
if(($facture->getMonatantRestantTtc() == 0) and $facture->getIsAvoir() ){
$totalEcheaceTtc = '/';
$datePayement = 'Avoir sur la facture '.$facture->getNumeroFacture();
}else{
$totalEcheaceTtc = $this->getEcheanceTtc($facture->getSpv()?$facture->getSpv()->getId():null,$facture->getDateValidation()?$facture->getDateValidation()->format('Y-m-d') : null);
$datePayement = null;
if($facture->getDatePaiement()){
$datePayement = $facture->getDatePaiement()->format('d/m/Y') ;
}else{
if($facture->getDateValidation()){
$datePayement = $facture->getDateValidation()->format('d/m/Y') ;
}
}
}
$i = 0;
if(count($avoir->getAvoir()->getProjectAvoir())>0){
foreach ($avoir->getAvoir()->getProjectAvoir() as $item){
$arrayProject[$i]['projetHomogeneise'] = $item->getProject() ? $item->getProject()->getName() : '';
$arrayProject[$i]['projetMontantTtc'] = str_replace(',','.',$item->getMontantTtc());
$arrayProject[$i]['projetMontantHt'] = str_replace(',','.',$item->getMontantHt());
$arrayProject[$i]['projetMontantTva'] = str_replace(',','.','');
$i++;
}
}else{
$arrayProject[$i]['projetHomogeneise'] = '';
$arrayProject[$i]['projetMontantTtc'] = '';
$arrayProject[$i]['projetMontantHt'] = '';
$arrayProject[$i]['projetMontantTva'] = '';
}
foreach ($arrayProject as $projectFactureAvoir){
$arrayFactureAvoir[$h]['element'] = $element;
$arrayFactureAvoir[$h]['mois'] = $mois;
$arrayFactureAvoir[$h]['dateFacture'] = $dateAvoir;
$arrayFactureAvoir[$h]['reference'] = $reference;
$arrayFactureAvoir[$h]['societeFacture'] = $societeFacture;
$arrayFactureAvoir[$h]['fourniseur'] = $fourniseur;
$arrayFactureAvoir[$h]['projetHomogeneise'] = $projectFactureAvoir['projetHomogeneise'];
$arrayFactureAvoir[$h]['motifHomogeneise'] = $motifHomogeneise;
$arrayFactureAvoir[$h]['typeDepense'] = $typeDepense;
$arrayFactureAvoir[$h]['totalFactureTtc'] = '-'.$totalFactureTtc;
$arrayFactureAvoir[$h]['projetMontantTtc'] = $projectFactureAvoir['projetMontantTtc'] ? '-'.$projectFactureAvoir['projetMontantTtc']: '' ;
$arrayFactureAvoir[$h]['projetMontantHt'] = $projectFactureAvoir['projetMontantHt'] ? '-'.$projectFactureAvoir['projetMontantHt']: '' ;
$arrayFactureAvoir[$h]['projetMontantTva'] = $projectFactureAvoir['projetMontantTva'] ? '-'.$projectFactureAvoir['projetMontantTva']: '' ;
$arrayFactureAvoir[$h]['totalEcheaceTtc'] = $totalEcheaceTtc;
$arrayFactureAvoir[$h]['lettrage'] = $lettrage;
$arrayFactureAvoir[$h]['datePayement'] = $datePayement;
$arrayFactureAvoir[$h]['payPar'] = $payPar;
$arrayFactureAvoir[$h]['moyenPayement'] = $moyenPayement;
$arrayFactureAvoir[$h]['dateValidation'] = $facture->getDateValidation() ? $facture->getDateValidation()->format('d/m/Y') : null;
$arrayFactureAvoir[$h]['facture_url'] = $fileAvoir;
$h++;
}
}
}
}
return $arrayFactureAvoir;
}
public function extractFacturesProjectCommande(){
$arrays = $this->getFacturesAvoirsProjectCommande();
$file1 = $this->extractFile1($arrays);
$arrays2 = $projects= $this->em->getRepository(\App\Entity\Project::class)->findAll();
$file2 = $this->extractFile2($arrays2);
$arrays3 = $projects= $this->em->getRepository(\App\Entity\FactureFinance::class)->searchFacturePaiementIsAvoir();
$file3 = $this->extractFile3($arrays3);
$arrays4 = $projects= $this->em->getRepository(\App\Entity\FactureFinance::class)->searchAllFacturePaiement();
$file3 = $this->extractFile4($arrays4);
return $file1;
}
public function extractFile1($arrays){
$file= $this->params->get('facture_finance_export_directory')."/immobilisations.xlsx";
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Element")
->setCellValue('B1',"Mois")
->setCellValue('C1',"Date Facture")
->setCellValue('D1',"Libellé - Référence")
->setCellValue('E1',"Société facturée")
->setCellValue('F1',"Emetteur de la Facture")
->setCellValue('G1',"Projet homogénéisé")
->setCellValue('H1',"Motif homogénéisé")
->setCellValue('I1',"Type dépense / revenu")
->setCellValue('J1',"Total Facture")
->setCellValue('K1',"Montant TTC")
->setCellValue('L1',"Montant HT")
->setCellValue('M1',"TVA")
->setCellValue('N1',"Échéance TTC")
->setCellValue('O1',"Lettrage")
->setCellValue('P1',"Date paiement")
->setCellValue('Q1',"Payé par")
->setCellValue('R1',"Mode paiement")
->setCellValue('S1',"Facture url");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(17);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(24);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(16);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(40);
$spreadsheet->getActiveSheet()->getStyle('A1:S1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['element'])
->setCellValue('B'.$row , $array['mois'])
->setCellValue('D'.$row , $array['reference'])
->setCellValue('E'.$row , $array['societeFacture'])
->setCellValue('F'.$row , $array['fourniseur'])
->setCellValue('G'.$row , $array['projetHomogeneise'])
->setCellValue('H'.$row , $array['motifHomogeneise'])
->setCellValue('I'.$row , $array['typeDepense'])
->setCellValue('J'.$row , $array['totalFactureTtc'])
->setCellValue('K'.$row , $array['projetMontantTtc'])
->setCellValue('L'.$row , $array['projetMontantHt'])
->setCellValue('M'.$row , $array['projetMontantTva'])
->setCellValue('N'.$row , $array['totalEcheaceTtc'])
->setCellValue('O'.$row , $array['lettrage'])
->setCellValue('P'.$row , $array['datePayement'])
->setCellValue('Q'.$row , $array['payPar'])
->setCellValue('R'.$row , $array['moyenPayement'])
;
$urlFacture = $array['facture_url']?$array['facture_url']->getPath() : null;
$nameFacture = $array['facture_url']?$array['facture_url']->getNomenclature()?$array['facture_url']->getNomenclature():$array['facture_url']->getName():null;
$context = $this->router->getContext();
$host = $context->getHost();
$scheme = $context->getScheme();
$basePath = $context->getBaseUrl();
if($urlFacture){
$baseurl = $scheme . '://' . $host . $basePath;
$spreadsheet->getActiveSheet()->setCellValue('S'.$row ,$nameFacture);
$spreadsheet->getActiveSheet()->getCell('S'.$row )->getHyperlink()->setUrl($baseurl.'/uploads/'.$urlFacture);
}
$spreadsheet = $this->addStyleToCellDate('C',$row,$array['dateFacture'],$spreadsheet);
if($row % 2 == 0){
$spreadsheet->getActiveSheet()->getStyle('A'.$row.':S'.$row)->applyFromArray($tableRand);
}
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":S".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function extractFile2($projects){
$file= $this->params->get('facture_finance_export_directory')."/noms_projets.xlsx";
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Projet")
->setCellValue('B1',"SPV")
->setCellValue('C1',"Statut tracker")
->setCellValue('D1',"Développeur")
->setCellValue('E1',"Capacité")
->setCellValue('F1',"Adresse")
->setCellValue('G1',"Code Postal")
->setCellValue('H1',"Ville")
->setCellValue('I1',"Nom du bailleur")
->setCellValue('J1',"Prénom du bailleur");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(20);
$spreadsheet->getActiveSheet()->getStyle('A1:j1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach ($projects as $project) {
$etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project' => $project->getId()]);
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $project->getName())
->setCellValue('B'.$row , $project->getSpv() ? $project->getSpv()->getName() : '')
->setCellValue('C'.$row , $project->getStatusTrackerStr())
->setCellValue('D'.$row , $project->getDeveloppeur() ? $project->getDeveloppeur()->getFirstname().' '.$project->getDeveloppeur()->getLastname() : '')
->setCellValue('E'.$row , $project->getCapacite())
->setCellValue('F'.$row , $etap14->getAdresseMiseEnService() ? $etap14->getAdresseMiseEnService() : $project->getAdresse())
->setCellValue('G'.$row , $etap14->getCodePostalMiseEnService() ? $etap14->getCodePostalMiseEnService() : $project->getCodePostal())
->setCellValue('H'.$row , $etap14->getCityMiseEnService() ? $etap14->getCityMiseEnService() : $project->getCity())
->setCellValue('I'.$row , $etap14->getFirstnameProprietaire())
->setCellValue('J'.$row , $etap14->getLastnameProprietaire())
;
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":J".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function extractFile3($arrays){
$file= $this->params->get('facture_finance_export_directory')."/au_compensation.xlsx";
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$sheet->setCellValue('A1',"N° de facture")
->setCellValue('B1',"Avoir(s)")
->setCellValue('C1',"Date de création de facture")
->setCellValue('D1',"Fournisseur")
->setCellValue('E1',"SPV")
->setCellValue('F1',"Montant déduit de l’avoir")
->setCellValue('G1',"Montant restant à régler")
->setCellValue('H1',"Montant TTC")
->setCellValue('I1',"Statut")
->setCellValue('J1',"Projet")
->setCellValue('K1',"Développeur")
->setCellValue('L1',"Classification dépense")
->setCellValue('M1',"Facture url");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(50);
$spreadsheet->getActiveSheet()->getStyle('A1:M1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $factureFinance){
$avoirs = '';
$avoirsTab = $this->getAvoirsFacture($factureFinance);
if($avoirsTab){
$i = 1;
foreach ($avoirsTab as $item){
if($i == count($avoirsTab)){
$avoirs .= $item->getAvoir()->getNumeroAvoir();
}else{
$avoirs .= $item->getAvoir()->getNumeroAvoir()."\n";
}
$i++;
}
}
$monatantAvoirTtc = 0;
if((!is_null($factureFinance->getMonatantAvoirTtc()) && !is_null($factureFinance->getMonatantTtc())) ){
if($factureFinance->getMonatantAvoirTtc() > $factureFinance->getMonatantTtc() ){
$monatantAvoirTtc = $factureFinance->getMonatantTtc();
}else{
$monatantAvoirTtc = $factureFinance->getMonatantAvoirTtc();
}
}
$projects = '';
if(count($factureFinance->getProjectFactureFinance())>0){
$i = 1 ;
foreach ($factureFinance->getProjectFactureFinance() as $item){
if($i == count($factureFinance->getProjectFactureFinance())){
$projects .= $item->getProject() ? $item->getProject()->getName() : '';
}else {
$projects .= $item->getProject() ? $item->getProject()->getName()."\n" : '';
}
$i++;
}
}
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $factureFinance->getNumeroFacture30Max())
->setCellValue('B'.$row , $avoirs)
->setCellValue('D'.$row , $factureFinance->getFournisseur()?$factureFinance->getFournisseur()->getName():'')
->setCellValue('E'.$row , $factureFinance->getSpv()?$factureFinance->getSpv()->getName():'')
->setCellValue('F'.$row , $monatantAvoirTtc)
->setCellValue('G'.$row , $factureFinance->getMonatantRestantTtc() ? $factureFinance->getMonatantRestantTtc() : '0')
->setCellValue('H'.$row , $factureFinance->getMonatantTtc() ? $factureFinance->getMonatantTtc() : '0')
->setCellValue('I'.$row , $factureFinance->getStatusString())
->setCellValue('J'.$row , $projects)
->setCellValue('K'.$row , $factureFinance->getDeveloppeur() ? $factureFinance->getDeveloppeur()->getFirstname().' '.$factureFinance->getDeveloppeur()->getLastname() : '')
->setCellValue('L'.$row , $factureFinance->getClassification())
;
$urlFacture = $factureFinance->getFileFacture()?$factureFinance->getFileFacture()->getPath() : null;
$nameFacture = $factureFinance->getFileFacture()?$factureFinance->getFileFacture()->getNomenclature()?$factureFinance->getFileFacture()->getNomenclature():$factureFinance->getFileFacture()->getName():null;
$context = $this->router->getContext();
$host = $context->getHost();
$scheme = $context->getScheme();
$basePath = $context->getBaseUrl();
if($urlFacture){
$baseurl = $scheme . '://' . $host . $basePath;
$spreadsheet->getActiveSheet()->setCellValue('M'.$row ,$nameFacture);
$spreadsheet->getActiveSheet()->getCell('M'.$row )->getHyperlink()->setUrl($baseurl.'/uploads/'.$urlFacture);
}
$spreadsheet = $this->addStyleToCellDate('C',$row,$factureFinance->getCreatedAt(),$spreadsheet);
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":L".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function extractFile4($arrays){
$file= $this->params->get('facture_finance_export_directory')."/template_4eme_fichier.xlsx";
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$sheet->setCellValue('A1',"N° de facture")
->setCellValue('B1',"Date de création de facture")
->setCellValue('C1',"Fournisseur")
->setCellValue('D1',"SPV")
->setCellValue('E1',"Montant TTC")
->setCellValue('F1',"Délai de paiement")
->setCellValue('G1',"Facture url")
->setCellValue('H1',"Statut")
->setCellValue('I1',"Projet")
->setCellValue('J1',"Date d'émission")
->setCellValue('K1',"Date de paiement");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(50);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(20);
$spreadsheet->getActiveSheet()->getStyle('A1:K1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $factureFinance){
$projects = '';
if(count($factureFinance->getProjectFactureFinance())>0){
$i = 1 ;
foreach ($factureFinance->getProjectFactureFinance() as $item){
if($i == count($factureFinance->getProjectFactureFinance())){
$projects .= $item->getProject() ? $item->getProject()->getName() : '';
}else {
$projects .= $item->getProject() ? $item->getProject()->getName()."\n" : '';
}
$i++;
}
}
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $factureFinance->getNumeroFacture30Max())
->setCellValue('C'.$row , $factureFinance->getFournisseur()?$factureFinance->getFournisseur()->getName():'')
->setCellValue('D'.$row , $factureFinance->getSpv()?$factureFinance->getSpv()->getName():'')
->setCellValue('E'.$row , $factureFinance->getMonatantTtc() ? $factureFinance->getMonatantTtc() : '0')
->setCellValue('F'.$row , $factureFinance->getDelaiPaiement())
->setCellValue('H'.$row , $factureFinance->getStatusString())
->setCellValue('I'.$row , $projects)
;
$urlFacture = $factureFinance->getFileFacture()?$factureFinance->getFileFacture()->getPath() : null;
$nameFacture = $factureFinance->getFileFacture()?$factureFinance->getFileFacture()->getNomenclature()?$factureFinance->getFileFacture()->getNomenclature():$factureFinance->getFileFacture()->getName():null;
$context = $this->router->getContext();
$host = $context->getHost();
$scheme = $context->getScheme();
$basePath = $context->getBaseUrl();
if($urlFacture){
$baseurl = $scheme . '://' . $host . $basePath;
$spreadsheet->getActiveSheet()->setCellValue('G'.$row ,$nameFacture);
$spreadsheet->getActiveSheet()->getCell('G'.$row )->getHyperlink()->setUrl($baseurl.'/uploads/'.$urlFacture);
}
$spreadsheet = $this->addStyleToCellDate('B',$row,$factureFinance->getCreatedAt(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('J',$row,$factureFinance->getDateFacture(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('K',$row,$factureFinance->getDatePaiement(),$spreadsheet);
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":L".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function formatTab3($arrays){
$array = [];
$row=0;
foreach($arrays as $factureFinance){
$avoirs = '';
$avoirsTab = $this->getAvoirsFacture($factureFinance);
if($avoirsTab){
$i = 1;
foreach ($avoirsTab as $item){
if($i == count($avoirsTab)){
$avoirs .= $item->getAvoir()->getNumeroAvoir();
}else{
$avoirs .= $item->getAvoir()->getNumeroAvoir()."\n";
}
$i++;
}
}
$monatantAvoirTtc = 0;
if((!is_null($factureFinance->getMonatantAvoirTtc()) && !is_null($factureFinance->getMonatantTtc())) ){
if($factureFinance->getMonatantAvoirTtc() > $factureFinance->getMonatantTtc() ){
$monatantAvoirTtc = $factureFinance->getMonatantTtc();
}else{
$monatantAvoirTtc = $factureFinance->getMonatantAvoirTtc();
}
}
$projects = '';
if(count($factureFinance->getProjectFactureFinance())>0){
$i = 1 ;
foreach ($factureFinance->getProjectFactureFinance() as $item){
if($i == count($factureFinance->getProjectFactureFinance())){
$projects .= $item->getProject() ? $item->getProject()->getName() : '';
}else {
$projects .= $item->getProject() ? $item->getProject()->getName()."\n" : '';
}
$i++;
}
}
$array[$row]['facture'] = $factureFinance->getNumeroFacture30Max() ;
$array[$row]['avoirs'] = $avoirs;
$array[$row]['dateCreated'] = $factureFinance->getCreatedAt() ? $factureFinance->getCreatedAt()->format('d/m/Y') : '-' ;
$array[$row]['Fournisseur'] = $factureFinance->getFournisseur()?$factureFinance->getFournisseur()->getName():'' ;
$array[$row]['SPV'] = $factureFinance->getSpv()?$factureFinance->getSpv()->getName():'';
$array[$row]['montantDetuitAvoir'] = $monatantAvoirTtc ;
$array[$row]['montantRestantRegler'] = $factureFinance->getMonatantRestantTtc() ? $factureFinance->getMonatantRestantTtc() : '0';
$array[$row]['montantTtc'] = $factureFinance->getMonatantTtc() ? $factureFinance->getMonatantTtc() : '0';
$array[$row]['statut'] = $factureFinance->getStatusString();
$array[$row]['project'] = $projects ;
$array[$row]['developpeur'] = $factureFinance->getDeveloppeur() ? $factureFinance->getDeveloppeur()->getFirstname().' '.$factureFinance->getDeveloppeur()->getLastname() : '' ;
$array[$row]['classification'] = $factureFinance->getClassification();
$urlFacture = $factureFinance->getFileFacture()?$factureFinance->getFileFacture()->getPath() : null;
$nameFacture = $factureFinance->getFileFacture()?$factureFinance->getFileFacture()->getNomenclature()?$factureFinance->getFileFacture()->getNomenclature():$factureFinance->getFileFacture()->getName():null;
$context = $this->router->getContext();
$host = $context->getHost();
$scheme = $context->getScheme();
$basePath = $context->getBaseUrl();
$baseurl = $scheme . '://' . $host . $basePath;
$array[$row]['FactureUrl'] = $urlFacture ? $baseurl.'/uploads/'.$urlFacture :'' ;
$array[$row]['FactureName'] = $nameFacture ;
$array[$row]['delaiPaiement'] = $factureFinance->getDelaiPaiement() ;
$array[$row]['dateEmission'] = $factureFinance->getDateFacture() ? $factureFinance->getDateFacture()->format('d/m/Y') : '-' ;
$array[$row]['datePaiement'] = $factureFinance->getDatePaiement() ? $factureFinance->getDatePaiement()->format('d/m/Y') : '-' ;
$array[$row]['montantHt'] = $factureFinance->getMonatantHt() ? $factureFinance->getMonatantHt() : '0';
$array[$row]['montantTva'] = $factureFinance->getTva() ? $factureFinance->getTva() : '0';
$row++;
}
return $array ;
}
public function fixedBugFactureHt(){
$factures = $this->em->getRepository(FactureFinance::class)->findAll();
foreach ($factures as $facture){
if(count($facture->getProjectFactureFinance()) == 1){
$prixHt = $facture->getMonatantHt();
$prixTtc = $facture->getMonatantTtc();
$projectFacture = $facture->getProjectFactureFinance()[0];
$projectFacture->setMontantHt($prixHt);
$projectFacture->setMontantTtc($prixTtc);
$this->em->persist($projectFacture);
$this->em->flush();
}
}
}
public function updateSoulteAndLoyerProject(){
$projects = $this->em->getRepository(Project::class)->findAll();
foreach ($projects as $project){
$etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
if($etap5){
$soulteEtap5 = $etap5->getSoulteConfirme();
$loyerEtap5 = $etap5->getLoyerConfirme();
if($soulteEtap5){
$project->setSoulteVise($soulteEtap5) ;
}
if($loyerEtap5){
$project->setLoyerVise($loyerEtap5) ;
}
$this->em->persist($project);
$this->em->flush();
}
}
}
public function importProjectsTab($filename)
{
$file = $this->params->get('uploads_directory') . "/" . $filename;
$array = [];
$f = fopen($file, "r");
$flag = true;
$i = 0;
$header = [];
while (($line = fgetcsv($f, 0, ";")) !== false) {
if ($flag) {
$header = [];
foreach ($line as $cell) {
$header[] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$flag = false;
continue;
}
foreach ($line as $key => $cell) {
$array[$i][$header[$key]] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$i++;
}
fclose($f);
$arrayProject = [];
$i = 0;
foreach ($array as $item) {
if (isset($item['Nom du projet'])) {
$nameProject = trim($item['Nom du projet']);
$project = $this->em->getRepository(Project::class)->findOneBy(['name' => $nameProject]);
if ($project) {
$arrayProject[$i]['project'] = $project->getName();
$arrayProject[$i]['projectId'] = $project->getId();
$arrayProject[$i]['montantHt'] = isset($item['Montant HT']) ? $item['Montant HT'] : 0;
$arrayProject[$i]['action'] = 1;
} else {
$arrayProject[$i]['action'] = 0;
$arrayProject[$i]['project'] = isset($item['Nom du projet']) ? $item['Nom du projet'] : 0;
$arrayProject[$i]['montantHt'] = isset($item['Montant HT']) ? $item['Montant HT'] : 0;
}
$i++;
} else {
}
}
return ['bodyTab' => $arrayProject];
}
public function getNomenclatureAvoir($avoir,$file){
if(is_object($avoir) && is_object($file)){
$numAvoir = $avoir->getNumeroAvoir()?$avoir->getNumeroAvoir():'' ;
$nameSpv = $avoir->getSpv() ? $avoir->getSpv()->getName() : '';
$nameFournisseur = $avoir->getFournisseur() ? $avoir->getFournisseur()->getName() : '';
$date = $avoir->getCreatedAt() ? $avoir->getCreatedAt()->format('d/m/Y') : '';
$montant = $avoir->getMonatantTtc() ? $avoir->getMonatantTtc().'€' : '';
$extension = substr($file->getPath(), strrpos($file->getPath(), ".",-1) + 1);
$nomenclature = $nameFournisseur.' - '.$nameSpv.' - '.$numAvoir.' - '.$date.' - '.$montant.'.'.$extension;
$file->setNomenclature($nomenclature);
$this->em->persist($file);
$this->em->flush();
return $nomenclature;
}
return false;
}
public function getMontantFinalTtcFacture($facture){
$prix = 0;
if ($facture){
if( $facture->getIsAvoir() and ($facture->getMonatantRestantTtc() > 0) ){
$prix = (float)str_replace(',','.',$facture->getMonatantRestantTtc());
}
elseif ($facture->getIsAvoir() and ($facture->getMonatantRestantTtc() == 0)){
}
else{
$prix = (float)str_replace(',','.',$facture->getMonatantTtc());
}
}
return number_format($prix,2,'.','');
}
public function getDataPaiementSepaDetail($request){
$dataIds = $request->get('arrayIds');
$prix = 0;
$select = 0;
if($dataIds){
$factures = $this->em->getRepository(FactureFinance::class)->findBy(['token'=>$dataIds]);
if($factures){
foreach ($factures as $facture){
if( $facture->getIsAvoir() and ($facture->getMonatantRestantTtc() > 0) ){
$prix += (float)str_replace(',','.',$facture->getMonatantRestantTtc());
}elseif ($facture->getIsAvoir() and ($facture->getMonatantRestantTtc() == 0)){
}
else{
$prix += (float)str_replace(',','.',$facture->getMonatantTtc());
}
}
$select = count($factures);
}
}
return [
'montant' => $this->espaceNumber($prix).'€' ,
'select' => $select,
];
}
public function addPaiementSelect($request){
$data = $request->get('arrayData');
$date = $request->get('date');
$spvId = $request->get('spvId');
if($data && $date && $spvId){
$spv = $this->em->getRepository(Spv::class)->find($spvId);
$userCurrent = $this->security->getUser();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$userCurrent->getIsAccesValidationFactureMiseEnpaiement()) {
return [
'messageErreur' => '<p>vous n\'êtes pas autorisé à payer la facture</p>',
];
}
}
// $dateNow = new \DateTime();
// $dateNow->modify('+1 day');
// $array = [];
// foreach($data as $datum){
// $datePrevuStrInit = $datum['date'];
// $datePaiementPrevuInit = new \DateTime($datePrevuStrInit.' 23:59:59');
// if($datePaiementPrevuInit >= $dateNow){
// $array[$datePrevuStrInit] = $datum;
// }else{
// $array[$dateNow->format('Y-m-d')]['date'] = $dateNow->format('Y-m-d');
// foreach ($datum['ids'] as $id){
// $array[$dateNow->format('Y-m-d')]['ids'][] = $id;
// }
// }
// }
foreach ($data as $datePrevuTab){
$datePrevuStr = $datePrevuTab['date'];
$datePaiementPrevu = new \DateTime($datePrevuStr);
// if($datePaiementPrevu >= $dateNow){
//
// }else{
// $datePaiementPrevu = $dateNow;
// }
$tokensFactures = $datePrevuTab['ids'];
$dateValidation = new \DateTime($date);
$factures = $this->em->getRepository(FactureFinance::class)->findBy(['token'=>$tokensFactures]);
$factureFinancePaiement = $this->em->getRepository(FactureFinancePaiement::class)->findNotFichierBySpvAndDate($spv,$dateValidation,$datePaiementPrevu);
$factureExistInDetail = [];
if($factureFinancePaiement){
$factureFinancePaiementDetails = $this->em->getRepository(FactureFinancePaiementDetail::class)->findBy(['factureFinancePaiement'=>$factureFinancePaiement->getId()]);
if($factureFinancePaiementDetails){
foreach ($factureFinancePaiementDetails as $item){
$factureExistInDetail[$item->getFactureFinance()->getId()] = $item->getFactureFinance()->getId();
$item->getFactureFinance()->setIsPaiement(0);
$this->em->persist($item->getFactureFinance());
$this->em->remove($item);
}
$this->em->flush();
}
}
else{
$factureFinancePaiement = new FactureFinancePaiement();
$factureFinancePaiement->setSpv($spv);
$factureFinancePaiement->setDatePrevu($dateValidation);
$factureFinancePaiement->setDatePaiementPrevu($datePaiementPrevu);
$this->em->persist($factureFinancePaiement);
$this->em->flush();
}
$this->em->refresh($factureFinancePaiement);
foreach ($factures as $facture){
if($this->checkAltareaFacture($facture)){
}else{
if($this->fournisseurService->checkFournisseurRibActive($facture->getFournisseur()) and $this->checkFactureFinanceCodeProject($facture)) {
$facture->setIsPaiement(FactureFinance::STATUS_PAYE_SEPA);
$this->em->persist($facture);
$factureFinancePaiementDetailNew = $this->em->getRepository(FactureFinancePaiementDetail::class)->findOneBy(['factureFinance'=>$facture->getId()]);
$factureDetailNotExist = isset($factureExistInDetail[$facture->getId()]);
if(!$factureFinancePaiementDetailNew){
$factureFinancePaiementDetailNew = new FactureFinancePaiementDetail();
}
$factureFinancePaiementDetailNew->setFactureFinance($facture);
$factureFinancePaiementDetailNew->setDatePrevu($dateValidation);
$factureFinancePaiementDetailNew->setFactureFinancePaiement($factureFinancePaiement);
$this->em->persist($factureFinancePaiementDetailNew);
$this->em->flush();
if(!$factureDetailNotExist) {
$str = $this->security->getUser()->getFirstname() . ' ' . $this->security->getUser()->getLastname() . ' a validé la mise en paiement : ' . $facture->getFournisseur()->getName() . ' (' . $facture->getNumeroFacture() . ')';
$this->historyService->addHistoryFactureFinancePaiement($this->security->getUser(), $str, $facture);
}
}
}
}
}
}
return 1;
}
public function addPaiementFacture($request){
$datePrevuStr = $request->get('datePrevuPaiement');
$dataId = $request->get('factureId');
$date = $request->get('date');
$spvId = $request->get('spvId');
if($datePrevuStr && $dataId && $date && $spvId){
$spv = $this->em->getRepository(Spv::class)->find($spvId);
$dateValidation = new \DateTime($date);
$datePrevuPaiement = new \DateTime($datePrevuStr.' 23:59:59');
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$dataId]);
$userCurrent = $this->security->getUser();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$userCurrent->getIsAccesValidationFactureMiseEnpaiement()) {
return [
'messageErreur' => '<p>vous n\'êtes pas autorisé à payer la facture</p>',
];
}
}
// $dateNow = new \DateTime();
// $dateNow->modify('+1 day');
// if($datePrevuPaiement >= $dateNow){
// }else{
// $datePrevuPaiement = $dateNow;
// }
$factureFinancePaiement = $this->em->getRepository(FactureFinancePaiement::class)->findNotFichierBySpvAndDate($spv,$dateValidation,$datePrevuPaiement);
if(!$factureFinancePaiement){
$factureFinancePaiement = new FactureFinancePaiement();
$factureFinancePaiement->setSpv($spv);
$factureFinancePaiement->setDatePrevu($dateValidation);
$factureFinancePaiement->setDatePaiementPrevu($datePrevuPaiement);
$this->em->persist($factureFinancePaiement);
$this->em->flush();
}
if($facture){
if($this->checkAltareaFacture($facture)){
}else {
if ($this->fournisseurService->checkFournisseurRibActive($facture->getFournisseur()) and $this->checkFactureFinanceCodeProject($facture)) {
$facture->setIsPaiement(FactureFinance::STATUS_PAYE_SEPA);
$this->em->persist($facture);
$factureFinancePaiementDetailNew = $this->em->getRepository(FactureFinancePaiementDetail::class)->findOneBy(['factureFinance' => $facture->getId()]);
$factureDetailNotExist = false;
if (!$factureFinancePaiementDetailNew) {
$factureFinancePaiementDetailNew = new FactureFinancePaiementDetail();
$factureDetailNotExist = true;
}
$factureFinancePaiementDetailNew->setFactureFinance($facture);
$factureFinancePaiementDetailNew->setDatePrevu($dateValidation);
$factureFinancePaiementDetailNew->setFactureFinancePaiement($factureFinancePaiement);
$this->em->persist($factureFinancePaiementDetailNew);
$this->em->flush();
if ($factureDetailNotExist) {
$str = $this->security->getUser()->getFirstname() . ' ' . $this->security->getUser()->getLastname() . ' a validé la mise en paiement : ' . $facture->getFournisseur()->getName() . ' (' . $facture->getNumeroFacture() . ')';
$this->historyService->addHistoryFactureFinancePaiement($this->security->getUser(), $str, $facture);
}
}
}
}
}
return 1;
}
public function checkPaiemantFactureDetailAndUpdate($facture,$datePaiment){
$detailPaiement = $this->em->getRepository(FactureFinancePaiementDetail::class)->findOneBy(['factureFinance'=>$facture->getId()]);
if($detailPaiement){
$datePaeiementOld = $detailPaiement->getFactureFinancePaiement()->getDatePaiementPrevu();
if($datePaeiementOld && ($datePaeiementOld->format('d-m-Y') == $datePaiment->format('d-m-Y'))){
}else{
$facture->setIsPaiement(0);
$this->em->persist($facture);
$this->em->remove($detailPaiement);
$this->em->flush();
$spv = $facture->getSpv();
$dateValidation = $facture->getVateValidation();
$datePrevuPaiement = $datePaiment;
$userCurrent = $this->security->getUser();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$userCurrent->getIsAccesValidationFactureMiseEnpaiement()) {
return 0;
}
}
$factureFinancePaiement = $this->em->getRepository(FactureFinancePaiement::class)->findNotFichierBySpvAndDate($spv,$dateValidation,$datePrevuPaiement);
if(!$factureFinancePaiement){
$factureFinancePaiement = new FactureFinancePaiement();
$factureFinancePaiement->setSpv($spv);
$factureFinancePaiement->setDatePrevu($dateValidation);
$factureFinancePaiement->setDatePaiementPrevu($datePrevuPaiement);
$this->em->persist($factureFinancePaiement);
$this->em->flush();
}
if($facture){
if($this->checkAltareaFacture($facture)){
}else {
if ($this->fournisseurService->checkFournisseurRibActive($facture->getFournisseur()) and $this->checkFactureFinanceCodeProject($facture)) {
$facture->setIsPaiement(FactureFinance::STATUS_PAYE_SEPA);
$this->em->persist($facture);
$factureFinancePaiementDetailNew = $this->em->getRepository(FactureFinancePaiementDetail::class)->findOneBy(['factureFinance' => $facture->getId()]);
$factureDetailNotExist = false;
if (!$factureFinancePaiementDetailNew) {
$factureFinancePaiementDetailNew = new FactureFinancePaiementDetail();
$factureDetailNotExist = true;
}
$factureFinancePaiementDetailNew->setFactureFinance($facture);
$factureFinancePaiementDetailNew->setDatePrevu($dateValidation);
$factureFinancePaiementDetailNew->setFactureFinancePaiement($factureFinancePaiement);
$this->em->persist($factureFinancePaiementDetailNew);
$this->em->flush();
if ($factureDetailNotExist) {
$str = $this->security->getUser()->getFirstname() . ' ' . $this->security->getUser()->getLastname() . ' a validé la mise en paiement : ' . $facture->getFournisseur()->getName() . ' (' . $facture->getNumeroFacture() . ')';
$this->historyService->addHistoryFactureFinancePaiement($this->security->getUser(), $str, $facture);
}
}
}
}
}
}
}
public function refusePaiementFacture($request){
$dataId = $request->get('factureId');
$comment = $request->get('comment');
if($dataId && $comment){
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$dataId]);
if($facture){
$userCurrent = $this->security->getUser();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$userCurrent->getIsAccesValidationFactureMiseEnpaiement()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé</p>',
'facture' => $facture,
'spvId' => $facture->getSpv()->getId(),
'date' => $facture->getDateValidation()->format('Y-m-d'),
];
}
}
if($this->fournisseurService->checkFournisseurRibActive($facture->getFournisseur()) and $this->checkFactureFinanceCodeProject($facture)){
$facture->setIsPaiement(FactureFinance::STATUS_NOT_PAYE_SEPA);
$this->em->persist($facture);
$this->em->flush();
$str = $this->security->getUser()->getFirstname().' '.$this->security->getUser()->getLastname().' a refusé la mise en paiement : '.$facture->getFournisseur()->getName().' ('.$facture->getNumeroFacture().')';
$this->historyService->addHistoryFactureFinancePaiement($this->security->getUser(),$str,$facture,$comment);
$factureFinancePaiementDetail = $this->em->getRepository(FactureFinancePaiementDetail::class)->findOneBy(['factureFinance'=>$facture->getId()]);
if($factureFinancePaiementDetail){
$this->em->remove($factureFinancePaiementDetail);
$this->em->flush();
}
}
return [
'facture' => $facture,
'spvId' => $facture->getSpv()->getId(),
'date' => $facture->getDateValidation()->format('Y-m-d'),
];
}
}
return false ;
}
public function deletePaiementFacture($request,$token){
$dataId = $token;
if($dataId){
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$dataId]);
if($facture){
$userCurrent = $this->security->getUser();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$userCurrent->getIsAccesValidationFactureMiseEnpaiement()) {
return [
'messageErreur' => '<p>Vous n\'êtes pas autorisé</p>',
'facture' => $facture,
'spvId' => $facture->getSpv()->getId(),
'date' => $facture->getDateValidation()->format('Y-m-d'),
];
}
}
// if((!$this->fournisseurService->checkFournisseurRibActive($facture->getFournisseur()) or !$this->checkFactureFinanceCodeProject($facture)) or $facture->getIsPaiement() == FactureFinance::STATUS_NOT_PAYE_SEPA){
$facture->setIsPaiement(FactureFinance::STATUS_DELETE_PAYE_SEPA);
$this->em->persist($facture);
$this->em->flush();
$str = $this->security->getUser()->getFirstname().' '.$this->security->getUser()->getLastname().' a supprimé la mise en paiement : '.$facture->getFournisseur()->getName().' ('.$facture->getNumeroFacture().')';
$this->historyService->addHistoryFactureFinancePaiement($this->security->getUser(),$str,$facture,"");
$factureFinancePaiementDetail = $this->em->getRepository(FactureFinancePaiementDetail::class)->findOneBy(['factureFinance'=>$facture->getId()]);
if($factureFinancePaiementDetail){
$this->em->remove($factureFinancePaiementDetail);
$this->em->flush();
}
// }
return [
'facture' => $facture,
'spvId' => $facture->getSpv()->getId(),
'date' => $facture->getDateValidation()->format('Y-m-d'),
];
}
}
return false ;
}
public function importTvaTab($filename)
{
$file = $this->params->get('uploads_directory') . "/" . $filename;
$array = [];
$f = fopen($file, "r");
$flag = true;
$i = 0;
$header = [];
while (($line = fgetcsv($f, 0, ";")) !== false) {
if ($flag) {
$header = [];
foreach ($line as $cell) {
$header[] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$flag = false;
continue;
}
foreach ($line as $key => $cell) {
$array[$i][$header[$key]] = trim(iconv("ISO-8859-1", "UTF-8", $cell));
}
$i++;
}
fclose($f);
$arrayProject = [];
$i = 0;
foreach ($array as $item) {
$arrayProject[$i]['tauxTva'] = isset($item['Taux de TVA']) ? $item['Taux de TVA'] : 0;
$arrayProject[$i]['tva'] = isset($item['Montant TVA']) ? $item['Montant TVA'] : 0;
$arrayProject[$i]['montantHt'] = isset($item['Montant HT']) ? $item['Montant HT'] : 0;
$arrayProject[$i]['montantTtc'] = isset($item['Montant TTC']) ? $item['Montant TTC'] : 0;
$i++;
}
return ['bodyTab' => $arrayProject];
}
public function exportComptable($date){
$arrays1 = $this->getC1FacturesExport($date);
$this->c1FacturesExportXls($arrays1);
$arrays2 = $this->getC2AvoirExport($date);
$this->c2AvoirExportXls($arrays2);
$arrays3 = $this->getC3AcomptesExport($date);
$this->c3AcomptesExportXls($arrays3);
$arrays4 = $this->getC4ReglementsExport($date);
$this->c4ReglementsExportXls($arrays4);
}
public function exportComptableNotSend($date){
$arrays1 = $this->getC1FacturesExport($date);
$this->c1FacturesExportXls($arrays1,true,$date);
$arrays2 = $this->getC2AvoirExport($date);
$this->c2AvoirExportXls($arrays2,true,$date);
$arrays3 = $this->getC3AcomptesExport($date);
$this->c3AcomptesExportXls($arrays3,true,$date);
$arrays4 = $this->getC4ReglementsExport($date);
$this->c4ReglementsExportXls($arrays4,true,$date);
}
public function getC1FacturesExport($date){
$factures = $this->em->getRepository(FactureFinance::class)->searchFactureValide($date);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDateFacture()?$facture->getDateFacture()->format('d/m/Y'):'';
$dateEcheance = $facture->getDelaiPaiementDate()?$facture->getDelaiPaiementDate()->format('d/m/Y'):'';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Facture';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
// $arrays[$i]['Montant à régler'] = (float)$tvaMultiple->getMontantTtc();
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127)) ;
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Facture de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$tvaMultiple->getMontantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$tvaMultiple->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTvaProject($facture,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
else{
$arrays[$i]['Type de ligne'] = 'Facture';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Facture de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
return $arrays;
}
public function c1FacturesExportXls($arrays,$isNotSend = false,$date = false){
if($date){
$dateNow = $date;
}else{
$dateNow = new \DateTime();
}
$dateNowStr = '_'.$dateNow->format('Ymd').'_'.$dateNow->format('H').'h'.$dateNow->format('i');
$fileName = "C1_factures".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"Autoliquidation")
->setCellValue('U1',"Montant TVA");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('U1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('U')->setWidth(15);
$spreadsheet->getActiveSheet()->getStyle('A1:T1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Facture de charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['Autoliquidation'])
->setCellValue('U'.$row , $array['Montant TVA'])
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('U'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":U".$lastRow);
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
// $writer->setOutputEncoding('UTF-8');
$writer->save($file);
if($isNotSend){
}else{
$this->sendToServeur($fileName ,'/altarea/comptable',$this->params->get('comptable_altarea_directory'));
}
return $file;
}
public function getC2AvoirExport($date){
$avoirs = $this->em->getRepository(Avoir::class)->searchAvoirValide($date);
$arrays = [];
$i = 0;
foreach ($avoirs as $avoir){
$spvName = $avoir->getSpv()?$avoir->getSpv()->getName():'';
$spvCodeSage = $avoir->getSpv()?$avoir->getSpv()->getCodeSage():'';
$fournisseurCode = $avoir->getFournisseur()?$avoir->getFournisseur()->getCodeFournisseur():'';
$classification = $avoir->getClassification();
$dateComptable = $avoir->getDateAvoir()?$avoir->getDateAvoir()->format('d/m/Y'):'';
$dateEcheance = '';
$dateCreation = $avoir->getCreatedAt()?$avoir->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $avoir->getNumeroAvoir();
if(count($avoir->getTvaAvoir())>0 && $avoir->getTauxTva() == 0){
foreach ($avoir->getTvaAvoir() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Avoir';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Avoir de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndTva($avoir,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($avoir->getNote(), 0, 127));
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$avoirFactures = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir]);
$factureAssocie = '';
if ($avoirFactures) {
$h = 1;
$total = count($avoirFactures);
foreach ($avoirFactures as $avoirFacture) {
if ($total == $h) {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece();
} else {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece() . " / ";
}
$h++;
}
}
$arrays[$i]['Compteur facture associée'] = $factureAssocie;
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($tvaMultiple->getMontantTtc(), $tvaMultiple->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($avoir->getProjectAvoir())>0){
foreach ($avoir->getProjectAvoir() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Avoir de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
// if (count($avoir->getProjectAvoir()) == 1) {
// $arrays[$i]['Montant HT'] = (float)$avoir->getMonatantHt();
// } else {
// $arrays[$i]['Montant HT'] = (float)$project->getMontantHt();
// }
// $arrays[$i]['Montant TTC'] = '';
// $arrays[$i]['taux de TVA'] = '';
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndTvaProject($avoir,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($tvaMultiple->getMontantTtc(), $tvaMultiple->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
else {
$arrays[$i]['Type de ligne'] = 'Avoir';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Avoir de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]) ? self::CHARGE_INVESTISSEMENT_DEPENSE[$classification] : '';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir'=>$avoir->getId()]);
if($avoirs){
$montantTtc = (float)str_replace(',','.',$avoirs[0]->getMonatantAvoirTtc());
$tauxTva = $avoir->getTauxTva() && $avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$montantHt = $montantTtc / (1 + ($tauxTva/100));
$arrays[$i]['Montant HT'] = number_format((float)$montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$montantTtc,2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tauxTva,2,'.','');
$tvaMontant = $tauxTva * $montantHt / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
}else{
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$avoir->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$avoir->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$avoir->getTauxTva()),2,'.','');
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($avoir->getMonatantTtc(), $avoir->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$avoir->getTauxTva()) * (float)str_replace(',','.',$avoir->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
}
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndNotTva($avoir);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($avoir->getNote(), 0, 127));
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
$avoirFactures = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir]);
$factureAssocie = '';
if ($avoirFactures) {
$h = 1;
$total = count($avoirFactures);
foreach ($avoirFactures as $avoirFacture) {
if ($total == $h) {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece();
} else {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece() . " / ";
}
$h++;
}
}
$arrays[$i]['Compteur facture associée'] = $factureAssocie;
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
$i++;
if (count($avoir->getProjectAvoir()) > 0) {
foreach ($avoir->getProjectAvoir() as $project) {
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Avoir de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
if (count($avoir->getProjectAvoir()) == 1) {
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir->getId()]);
if ($avoirs) {
$montantTtc = (float)str_replace(',','.',$avoirs[0]->getMonatantAvoirTtc());
$tauxTva = $avoir->getTauxTva() && $avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$montantHt = $montantTtc / (1 + ($tauxTva / 100));
$arrays[$i]['Montant HT'] = number_format((float)$montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$montantTtc,2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tauxTva,2,'.','');
$tvaMontant = $tauxTva * $montantHt / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
} else {
$arrays[$i]['Montant HT'] = number_format((float)$avoir->getMonatantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$avoir->getMonatantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$avoir->getTauxTva(),2,'.','');
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($avoir->getMonatantTtc(), $avoir->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$avoir->getTauxTva()) * (float)str_replace(',','.',$avoir->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
}
}else{
$montantHt = (float)str_replace(',','.',$avoir->getMonatantHt());
$tauxTva = $avoir->getTauxTva() && (float)$avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$arrays[$i]['Montant HT'] = number_format($montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format($montantHt + (1 *( $tauxTva/100)),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$avoir->getTauxTva(),2,'.','');
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($avoir->getMonatantTtc(), $tauxTva)['tva'];
}else{
$tvaMontant = $tauxTva * $montantHt / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
}
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndNotTvaProject($avoir, $project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
$i++;
}
}
}
}
return $arrays;
}
public function c2AvoirExportXls($arrays,$isNotSend = false,$date = false){
if($date){
$dateNow = $date;
}else{
$dateNow = new \DateTime();
}
$dateNowStr = '_'.$dateNow->format('Ymd').'_'.$dateNow->format('H').'h'.$dateNow->format('i');
$fileName = "C2_avoirs".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"Autoliquidation")
->setCellValue('U1',"Montant TVA");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('U1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('U')->setWidth(25);
$spreadsheet->getActiveSheet()->getStyle('A1:U1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Avoir de charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['Autoliquidation'])
->setCellValue('U'.$row , $array['Montant TVA']);
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('U'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":U".$lastRow);
$writer = new Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
// $writer->setOutputEncoding('UTF-8');
$writer->save($file);
if($isNotSend){
}else{
$this->sendToServeur($fileName ,'/altarea/comptable',$this->params->get('comptable_altarea_directory'));
}
return $file;
}
public function getC3AcomptesExport($date){
$factures = $this->em->getRepository(FactureFinance::class)->searchAcompteValide($date);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDateFacture()?$facture->getDateFacture()->format('d/m/Y'):'';
$dateEcheance = $facture->getDelaiPaiementDate()?$facture->getDelaiPaiementDate()->format('d/m/Y'):'';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Acompte';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Acompte pour une charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance ? $dateEcheance : $dateComptable;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
// $arrays[$i]['Montant à régler'] = (float)$tvaMultiple->getMontantTtc();
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Acompte pour une charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTvaProject($facture,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
else{
$arrays[$i]['Type de ligne'] = 'Acompte';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Acompte pour une charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance ? $dateEcheance : $dateComptable;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Acompte pour une charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = '';
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
return $arrays;
}
public function c3AcomptesExportXls($arrays,$isNotSend = false,$date = false){
if($date){
$dateNow = $date;
}else{
$dateNow = new \DateTime();
}
$dateNowStr = '_'.$dateNow->format('Ymd').'_'.$dateNow->format('H').'h'.$dateNow->format('i');
$fileName = "C3_acomptes".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"Autoliquidation")
->setCellValue('U1',"Montant TVA");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('U1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('U')->setWidth(25);
$spreadsheet->getActiveSheet()->getStyle('A1:U1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Acompte pour une charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['Autoliquidation'])
->setCellValue('U'.$row , $array['Montant TVA'])
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('U'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":U".$lastRow);
$writer = new Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
// $writer->setOutputEncoding('UTF-8');
$writer->save($file);
if($isNotSend){
}else{
$this->sendToServeur($fileName ,'/altarea/comptable',$this->params->get('comptable_altarea_directory'));
}
return $file;
}
public function getC4ReglementsExport($date){
$factures = $this->em->getRepository(FactureFinance::class)->searchFacturePayee($date);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = str_replace(" ","",$fournisseurBanque->getIban());
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
// $spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvName = '';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDate()?$facture->getDate()->format('d/m/Y'):'';
$dateEcheance = '';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
// if(count($facture->getProjectFactureFinance())>1){
// foreach ($facture->getProjectFactureFinance() as $projectFinance){
// $arrays[$i]['Type de ligne'] = 'Reglement';
// $arrays[$i]['Code Société'] = $spvName;
// $arrays[$i]['Code Sage'] = $spvCodeSage;
// $arrays[$i]['Code budgétaire'] = $facture->getClassification();
// $arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
// $arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$facture->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$facture->getClassification()]:'';
// $arrays[$i]['Date comptable'] = $dateComptable;
// $arrays[$i]['Date d’échéance'] = $dateEcheance;
// $arrays[$i]['Date de création dans ERPI'] = $dateCreation;
// $arrays[$i]['Montant HT'] = (float)$projectFinance->getMontantHt();
// if($facture->getTauxTva()){
// $tva = (float)$facture->getTauxTva();
// }else{
// $tva = 20;
// }
// $arrays[$i]['Montant TTC'] = (float)$projectFinance->getMontantHt() * (1 + ($tva/100) );
// $arrays[$i]['taux de TVA'] = $tva;
// $arrays[$i]['Montant à régler'] = (float)$projectFinance->getMontantHt() * (1 + ($tva/100) );
// $arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
// $arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
//// $compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndTva($facture,$tvaMultiple);
//// $arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
//
// $compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$projectFinance->getProject());
// $arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
//
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
// $arrays[$i]['Commentaire comptable'] = $facture->getCommentComptable();
// }
// $arrays[$i]['Code projet'] = $projectFinance->getProject()->getCodeProject();
// $arrays[$i]['libellé projet'] = $projectFinance->getProject()->getName();
// $arrays[$i]['Compteur facture associée'] = $numeroFacture;
// $arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
// $arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
// $arrays[$i]['bicFournisseur'] = $bicFournisseur;
// $arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
// $i++;
// }
// }else{
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Reglement';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
// $arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
if($facture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$a = count($avoirs);
$b = 1;
$avoirNum = '';
foreach ($avoirs as $item){
if($b == $a){
$avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir();
}else{
$avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir()." / ";
}
$b++;
}
$arrays[$i]['Commentaire comptable'] = substr($avoirNum, 0, 127) ;
}else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
}
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = $facture->getCompteurErpiPiece();
$arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
$arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
$arrays[$i]['bicFournisseur'] = $bicFournisseur;
$arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
else{
$arrays[$i]['Type de ligne'] = 'Reglement';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
if($facture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$a = count($avoirs);
$b = 1;
$avoirNum = '';
foreach ($avoirs as $item){
if($b == $a){
$avoirNum .='Avoir: ' . $item->getAvoir()->getNumeroAvoir();
}else{
$avoirNum .='Avoir: ' . $item->getAvoir()->getNumeroAvoir()." / ";
}
$b++;
}
$arrays[$i]['Commentaire comptable'] = substr($avoirNum, 0, 127);
}else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
}
// foreach ($facture->getProjectFactureFinance() as $projectFinance){
// $arrays[$i]['Code projet'] = $projectFinance->getProject()->getCodeProject();
// $arrays[$i]['libellé projet'] = $projectFinance->getProject()->getName();
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = $facture->getCompteurErpiPiece();
$arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
$arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
$arrays[$i]['bicFournisseur'] = $bicFournisseur;
$arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
// }
}
return $arrays;
}
public function c4ReglementsExportXls($arrays,$isNotSend = false,$date = false){
if($date){
$dateNow = $date;
}else{
$dateNow = new \DateTime();
}
$dateNowStr = '_'.$dateNow->format('Ymd').'_'.$dateNow->format('H').'h'.$dateNow->format('i');
$fileName = "C4_reglements".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"IBAN fournisseur");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(25);
$spreadsheet->getActiveSheet()->getStyle('A1:V1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Facture de charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['ibanFournisseur'])
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":T".$lastRow);
$writer = new Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
// $writer->setOutputEncoding('UTF-8');
$writer->save($file);
if($isNotSend){
}else{
$this->sendToServeur($fileName ,'/altarea/comptable',$this->params->get('comptable_altarea_directory'));
}
return $file;
}
public function getFacturesByRequestSelectAll($request){
$search = $request->get('search');
$spv = $request->get('spv');
$fournisseur = $request->get('fournisseur');
$status = $request->get('statusFactureFinance');
$btnTypeTab = $request->get('btnTypeTab');
$responsableProject = $request->get('responsableProject');
$responsableDevProject = $request->get('responsableDevProject');
$paiementFactureDate = $request->get('paiementFactureDate');
$paiementFactureDate1 = $request->get('paiementFactureDate1') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate1')) : null ;
$paiementFactureDate2 = $request->get('paiementFactureDate2') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate2')) : null;
$filters = [
'query' => trim(@$search['value']),
'spv' => $spv,
'fournisseur' => $fournisseur,
'status' => $status,
'paiementFactureDate' => $paiementFactureDate,
'btnTypeTab' => $btnTypeTab,
'paiementFactureDate1' => $paiementFactureDate1,
'paiementFactureDate2' => $paiementFactureDate2,
'responsableProject' => $responsableProject,
'responsableDevProject' => $responsableDevProject
];
$factureFinances = $this->em->getRepository(\App\Entity\FactureFinance::class)->search($filters);
return $factureFinances ;
}
public function sendToServeur($nameFile ,$pathServeur,$pathLocal){
$ftp_server="162.19.120.192";
$ftp_user_name="altarea-prod";
$ftp_user_pass="E_AeX_red2xi2vf1";
$conn_id = ftp_ssl_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true) or die("Cannot switch to passive mode");
if (ftp_put($conn_id, $pathServeur.'/'.$nameFile , $pathLocal.'/'.$nameFile, FTP_BINARY)) {
return true;
} else {
return false;
}
}
public function addPdFactureAssocieBrouillon($array){
$tab = [];
if($array){
foreach ($array as $item){
$tokenFile = $item['tokenFile'];
$tokenFacture= $item['tokenFacture'];
$docUpload = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $tokenFile]);
$factureBrouillon = $this->em->getRepository(FactureFinanceBrouillon::class)->findOneBy(['token' => $tokenFacture]);
if($docUpload && $factureBrouillon){
$factureBrouillon->setFileFacture($docUpload);
$this->em->persist($factureBrouillon);
$this->em->flush();
$tab[] = $factureBrouillon->getToken();
}
}
}
return $tab;
}
public function supprimeFactureBrouillon($request,$token)
{
$facture = $this->em->getRepository(FactureFinanceBrouillon::class)->findOneBy(['token'=>$token]);
if($facture){
$facture->setStatus(FactureFinance::STATUS_Brouillon_delete);
$this->em->persist($facture);
$this->em->flush();
}
return [
'success' => true,
];
}
public function getFacturesBrouillonByRequestSelectAll($request){
$search = $request->get('search');
$spv = $request->get('spv');
$fournisseur = $request->get('fournisseur');
$status = $request->get('statusFactureFinance');
$btnTypeTab = $request->get('btnTypeTab');
$responsableProject = $request->get('responsableProject');
$responsableDevProject = $request->get('responsableDevProject');
$paiementFactureDate = $request->get('paiementFactureDate');
$paiementFactureDate1 = $request->get('paiementFactureDate1') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate1')) : null ;
$paiementFactureDate2 = $request->get('paiementFactureDate2') ? \DateTime::createFromFormat('Y-m-d', $request->get('paiementFactureDate2')) : null;
$filters = [
'query' => trim(@$search['value']),
'spv' => $spv,
'fournisseur' => $fournisseur,
'status' => $status,
'paiementFactureDate' => $paiementFactureDate,
'btnTypeTab' => $btnTypeTab,
'paiementFactureDate1' => $paiementFactureDate1,
'paiementFactureDate2' => $paiementFactureDate2,
'responsableProject' => $responsableProject,
'responsableDevProject' => $responsableDevProject
];
$factureFinances = $this->em->getRepository(\App\Entity\FactureFinanceBrouillon::class)->search($filters);
return $factureFinances ;
}
public function getC1FacturesExportDateRange($dateStart,$dateEnd){
$factures = $this->em->getRepository(FactureFinance::class)->searchFactureValideDateRange($dateStart,$dateEnd);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDateFacture()?$facture->getDateFacture()->format('d/m/Y'):'';
$dateEcheance = $facture->getDelaiPaiementDate()?$facture->getDelaiPaiementDate()->format('d/m/Y'):'';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Facture';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
// $arrays[$i]['Montant à régler'] = (float)$tvaMultiple->getMontantTtc();
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = $facture->getCommentComptable();
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Facture de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$tvaMultiple->getMontantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$tvaMultiple->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTvaProject($facture,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
else{
$arrays[$i]['Type de ligne'] = 'Facture';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = $facture->getCommentComptable();
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Facture de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
return $arrays;
}
public function c1FacturesExportXlsDateRange($arrays,$dateStart,$dateEnd){
$dateNow = new \DateTime();
$dateNowStr = '_'.$dateStart->format('Ymd').'_'.$dateStart->format('H').'h'.$dateStart->format('i').'___'.$dateEnd->format('Ymd').'_'.$dateEnd->format('H').'h'.$dateEnd->format('i');
$fileName = "C1_factures".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"Autoliquidation")
->setCellValue('U1',"Montant TVA");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('U1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('U')->setWidth(25);
$spreadsheet->getActiveSheet()->getStyle('A1:U1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Facture de charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['Autoliquidation'])
->setCellValue('U'.$row , $array['Montant TVA'])
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('U'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":U".$lastRow);
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
$writer->save($file);
return $file;
}
public function getC2AvoirExportDateRange($dateStart,$dateEnd){
$avoirs = $this->em->getRepository(Avoir::class)->searchAvoirValideDateRange($dateStart,$dateEnd);
$arrays = [];
$i = 0;
foreach ($avoirs as $avoir){
$spvName = $avoir->getSpv()?$avoir->getSpv()->getName():'';
$spvCodeSage = $avoir->getSpv()?$avoir->getSpv()->getCodeSage():'';
$fournisseurCode = $avoir->getFournisseur()?$avoir->getFournisseur()->getCodeFournisseur():'';
$classification = $avoir->getClassification();
$dateComptable = $avoir->getDateAvoir()?$avoir->getDateAvoir()->format('d/m/Y'):'';
$dateEcheance = '';
$dateCreation = $avoir->getCreatedAt()?$avoir->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $avoir->getNumeroAvoir();
if(count($avoir->getTvaAvoir())>0 && $avoir->getTauxTva() == 0){
foreach ($avoir->getTvaAvoir() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Avoir';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Avoir de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndTva($avoir,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', $avoir->getNote());
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$avoirFactures = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir]);
$factureAssocie = '';
if ($avoirFactures) {
$h = 1;
$total = count($avoirFactures);
foreach ($avoirFactures as $avoirFacture) {
if ($total == $h) {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece();
} else {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece() . " / ";
}
$h++;
}
}
$arrays[$i]['Compteur facture associée'] = $factureAssocie;
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($tvaMultiple->getMontantTtc(), $tvaMultiple->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($avoir->getProjectAvoir())>0){
foreach ($avoir->getProjectAvoir() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Avoir de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
// if (count($avoir->getProjectAvoir()) == 1) {
// $arrays[$i]['Montant HT'] = (float)$avoir->getMonatantHt();
// } else {
// $arrays[$i]['Montant HT'] = (float)$project->getMontantHt();
// }
// $arrays[$i]['Montant TTC'] = '';
// $arrays[$i]['taux de TVA'] = '';
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndTvaProject($avoir,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($tvaMultiple->getMontantTtc(), $tvaMultiple->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
else {
$arrays[$i]['Type de ligne'] = 'Avoir';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Avoir de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]) ? self::CHARGE_INVESTISSEMENT_DEPENSE[$classification] : '';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir'=>$avoir->getId()]);
if($avoirs){
$montantTtc = (float)str_replace(',','.',$avoirs[0]->getMonatantAvoirTtc());
$tauxTva = $avoir->getTauxTva() && $avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$montantHt = $montantTtc / (1 + ($tauxTva/100));
$arrays[$i]['Montant HT'] = number_format((float)$montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$montantTtc,2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tauxTva,2,'.','');
$tvaMontant = $tauxTva * $montantHt / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
}else{
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$avoir->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$avoir->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$avoir->getTauxTva()),2,'.','');
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($avoir->getMonatantTtc(), $avoir->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$avoir->getTauxTva()) * (float)str_replace(',','.',$avoir->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
}
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndNotTva($avoir);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', $avoir->getNote());
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
$avoirFactures = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir]);
$factureAssocie = '';
if ($avoirFactures) {
$h = 1;
$total = count($avoirFactures);
foreach ($avoirFactures as $avoirFacture) {
if ($total == $h) {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece();
} else {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece() . " / ";
}
$h++;
}
}
$arrays[$i]['Compteur facture associée'] = $factureAssocie;
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
$i++;
if (count($avoir->getProjectAvoir()) > 0) {
foreach ($avoir->getProjectAvoir() as $project) {
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Avoir de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
if (count($avoir->getProjectAvoir()) == 1) {
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir->getId()]);
if ($avoirs) {
$montantTtc = (float)str_replace(',','.',$avoirs[0]->getMonatantAvoirTtc());
$tauxTva = $avoir->getTauxTva() && $avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$montantHt = $montantTtc / (1 + ($tauxTva / 100));
$arrays[$i]['Montant HT'] = number_format((float)$montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$montantTtc,2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tauxTva,2,'.','');
$tvaMontant = $tauxTva * $montantHt / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
} else {
$arrays[$i]['Montant HT'] = number_format((float)$avoir->getMonatantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$avoir->getMonatantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$avoir->getTauxTva(),2,'.','');
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($avoir->getMonatantTtc(), $avoir->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$avoir->getTauxTva()) * (float)str_replace(',','.',$avoir->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
}
}else{
$montantHt = (float)str_replace(',','.',$avoir->getMonatantHt());
$tauxTva = $avoir->getTauxTva() && (float)$avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$arrays[$i]['Montant HT'] = number_format($montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format($montantHt + (1 *( $tauxTva/100)),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$avoir->getTauxTva(),2,'.','');
if($avoir->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($avoir->getMonatantTtc(), $tauxTva)['tva'];
}else{
$tvaMontant = $tauxTva * $montantHt / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
}
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndNotTvaProject($avoir, $project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $avoir->getAutoliquidation() ? 1 : 0;
$i++;
}
}
}
}
return $arrays;
}
public function c2AvoirExportXlsDateRange($arrays,$dateStart,$dateEnd){
$dateNow = new \DateTime();
$dateNowStr = '_'.$dateStart->format('Ymd').'_'.$dateStart->format('H').'h'.$dateStart->format('i').'___'.$dateEnd->format('Ymd').'_'.$dateEnd->format('H').'h'.$dateEnd->format('i');
$fileName = "C2_avoirs".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"Autoliquidation")
->setCellValue('U1',"Montant TVA");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('U1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('U')->setWidth(25);
$spreadsheet->getActiveSheet()->getStyle('A1:U1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Avoir de charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['Autoliquidation'])
->setCellValue('U'.$row , $array['Montant TVA']);
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('U'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":U".$lastRow);
$writer = new Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
// $writer->setOutputEncoding('UTF-8');
$writer->save($file);
return $file;
}
public function getC3AcomptesExportDateRange($dateStart,$dateEnd){
$factures = $this->em->getRepository(FactureFinance::class)->searchAcompteValideDateRange($dateStart,$dateEnd);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDateFacture()?$facture->getDateFacture()->format('d/m/Y'):'';
$dateEcheance = $facture->getDelaiPaiementDate()?$facture->getDelaiPaiementDate()->format('d/m/Y'):'';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Acompte';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Acompte pour une charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance ? $dateEcheance : $dateComptable;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
// $arrays[$i]['Montant à régler'] = (float)$tvaMultiple->getMontantTtc();
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($tvaMultiple->getMontantTtc(), $tvaMultiple->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Acompte pour une charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTvaProject($facture,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($tvaMultiple->getMontantTtc(), $tvaMultiple->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
else{
$arrays[$i]['Type de ligne'] = 'Acompte';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Acompte pour une charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance ? $dateEcheance : $dateComptable;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Acompte pour une charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
return $arrays;
}
public function c3AcomptesExportXlsDateRange($arrays,$dateStart,$dateEnd){
$dateNow = new \DateTime();
$dateNowStr = '_'.$dateStart->format('Ymd').'_'.$dateStart->format('H').'h'.$dateStart->format('i').'___'.$dateEnd->format('Ymd').'_'.$dateEnd->format('H').'h'.$dateEnd->format('i');
$fileName = "C3_acomptes".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"Autoliquidation")
->setCellValue('U1',"Montant TVA");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('U1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('U')->setWidth(25);
$spreadsheet->getActiveSheet()->getStyle('A1:U1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Acompte pour une charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['Autoliquidation'])
->setCellValue('U'.$row , $array['Montant TVA'])
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('U'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":U".$lastRow);
$writer = new Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
// $writer->setOutputEncoding('UTF-8');
$writer->save($file);
return $file;
}
public function getC4ReglementsExportDateRange($dateStart,$dateEnd){
$factures = $this->em->getRepository(FactureFinance::class)->searchFacturePayeeDateRange($dateStart,$dateEnd);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = str_replace(" ","",$fournisseurBanque->getIban());
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
// $spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvName = '';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDate()?$facture->getDate()->format('d/m/Y'):'';
$dateEcheance = '';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
// if(count($facture->getProjectFactureFinance())>1){
// foreach ($facture->getProjectFactureFinance() as $projectFinance){
// $arrays[$i]['Type de ligne'] = 'Reglement';
// $arrays[$i]['Code Société'] = $spvName;
// $arrays[$i]['Code Sage'] = $spvCodeSage;
// $arrays[$i]['Code budgétaire'] = $facture->getClassification();
// $arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
// $arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$facture->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$facture->getClassification()]:'';
// $arrays[$i]['Date comptable'] = $dateComptable;
// $arrays[$i]['Date d’échéance'] = $dateEcheance;
// $arrays[$i]['Date de création dans ERPI'] = $dateCreation;
// $arrays[$i]['Montant HT'] = (float)$projectFinance->getMontantHt();
// if($facture->getTauxTva()){
// $tva = (float)$facture->getTauxTva();
// }else{
// $tva = 20;
// }
// $arrays[$i]['Montant TTC'] = (float)$projectFinance->getMontantHt() * (1 + ($tva/100) );
// $arrays[$i]['taux de TVA'] = $tva;
// $arrays[$i]['Montant à régler'] = (float)$projectFinance->getMontantHt() * (1 + ($tva/100) );
// $arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
// $arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
//// $compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndTva($facture,$tvaMultiple);
//// $arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
//
// $compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$projectFinance->getProject());
// $arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
//
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
// $arrays[$i]['Commentaire comptable'] = $facture->getCommentComptable();
// }
// $arrays[$i]['Code projet'] = $projectFinance->getProject()->getCodeProject();
// $arrays[$i]['libellé projet'] = $projectFinance->getProject()->getName();
// $arrays[$i]['Compteur facture associée'] = $numeroFacture;
// $arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
// $arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
// $arrays[$i]['bicFournisseur'] = $bicFournisseur;
// $arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
// $i++;
// }
// }else{
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Reglement';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
// $arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
if($facture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$a = count($avoirs);
$b = 1;
$avoirNum = '';
foreach ($avoirs as $item){
if($b == $a){
$avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir();
}else{
$avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir()." / ";
}
$b++;
}
$arrays[$i]['Commentaire comptable'] = $avoirNum;
}else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', $facture->getNote());
}
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = $facture->getCompteurErpiPiece();
$arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
$arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
$arrays[$i]['bicFournisseur'] = $bicFournisseur;
$arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
$i++;
}
}
else{
$arrays[$i]['Type de ligne'] = 'Reglement';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
if($facture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$a = count($avoirs);
$b = 1;
$avoirNum = '';
foreach ($avoirs as $item){
if($b == $a){
$avoirNum .='Avoir: ' . $item->getAvoir()->getNumeroAvoir();
}else{
$avoirNum .='Avoir: ' . $item->getAvoir()->getNumeroAvoir()." / ";
}
$b++;
}
$arrays[$i]['Commentaire comptable'] = $avoirNum;
}else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', $facture->getNote());
}
// foreach ($facture->getProjectFactureFinance() as $projectFinance){
// $arrays[$i]['Code projet'] = $projectFinance->getProject()->getCodeProject();
// $arrays[$i]['libellé projet'] = $projectFinance->getProject()->getName();
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = $facture->getCompteurErpiPiece();
$arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
$arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
$arrays[$i]['bicFournisseur'] = $bicFournisseur;
$arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
$i++;
}
// }
}
return $arrays;
}
public function c4ReglementsExportXlsDateRange($arrays,$dateStart,$dateEnd){
$dateNow = new \DateTime();
$dateNowStr = '_'.$dateStart->format('Ymd').'_'.$dateStart->format('H').'h'.$dateStart->format('i').'___'.$dateEnd->format('Ymd').'_'.$dateEnd->format('H').'h'.$dateEnd->format('i');
$fileName = "C4_reglements".$dateNowStr.".csv";
$file= $this->params->get('comptable_altarea_directory')."/".$fileName;
if(file_exists($file)){
$filesystem = new Filesystem();
$filesystem->remove($file);
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'ffffff'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => '002060'
]
],
];
$tableRand = [
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'C8D6EE'
]
],
];
$sheet->setCellValue('A1',"Type de ligne")
->setCellValue('B1',"Code Sage")
->setCellValue('C1',"Code budgétaire")
->setCellValue('D1',"Code fournisseur Evalua")
->setCellValue('E1',"Valeur de charge ou investissement")
->setCellValue('F1',"Date comptable")
->setCellValue('G1',"Date d’échéance")
->setCellValue('H1',"Date de création dans ERPI")
->setCellValue('I1',"Montant HT")
->setCellValue('J1',"Montant TTC")
->setCellValue('K1',"taux de TVA")
->setCellValue('L1',"Montant à régler")
->setCellValue('M1',"Référence facture fournisseur")
->setCellValue('N1',"Compteur ERPI pièce")
->setCellValue('O1',"Compteur ERPI écritures")
->setCellValue('P1',"Commentaire comptable")
->setCellValue('Q1',"Code projet")
->setCellValue('R1',"libellé projet")
->setCellValue('S1',"Compteur facture associée")
->setCellValue('T1',"IBAN fournisseur");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('G1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('H1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('I1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('J1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('K1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('L1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('M1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('N1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('O1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('P1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('Q1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('R1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('S1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('T1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('P')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('Q')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('R')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('S')->setWidth(25);
$spreadsheet->getActiveSheet()->getColumnDimension('T')->setWidth(25);
$spreadsheet->getActiveSheet()->getStyle('A1:T1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($arrays as $array){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $array['Type de ligne'])
->setCellValue('B'.$row , $array['Code Sage'])
->setCellValue('C'.$row , $array['Code budgétaire'])
->setCellValue('D'.$row , $array['Code fournisseur Evalua'])
->setCellValue('E'.$row , $array['Facture de charge'])
->setCellValue('F'.$row , $array['Date comptable'])
->setCellValue('G'.$row , $array['Date d’échéance'])
->setCellValue('H'.$row , $array['Date de création dans ERPI'])
->setCellValue('I'.$row , $array['Montant HT'])
->setCellValue('J'.$row , $array['Montant TTC'])
->setCellValue('K'.$row , $array['taux de TVA'])
->setCellValue('L'.$row , $array['Montant à régler'])
->setCellValue('M'.$row , $array['Référence facture fournisseur'])
->setCellValue('N'.$row , $array['Compteur ERPI pièce'])
->setCellValue('O'.$row , $array['Compteur ERPI écritures'])
->setCellValue('P'.$row , $array['Commentaire comptable'])
->setCellValue('Q'.$row , $array['Code projet'])
->setCellValue('R'.$row , $array['libellé projet'])
->setCellValue('S'.$row , $array['Compteur facture associée'])
->setCellValue('T'.$row , $array['ibanFournisseur'])
;
$spreadsheet->getActiveSheet()->getStyle('A'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('B'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('C'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('D'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('E'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('F'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('G'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('H'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('I'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('J'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('K'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('L'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('M'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('N'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('O'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('P'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('Q'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('R'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('S'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$spreadsheet->getActiveSheet()->getStyle('T'.$row)->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('E1E1E1'));
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":T".$lastRow);
$writer = new Csv($spreadsheet);
$writer->setDelimiter('|');
$writer->setEnclosure('');
$writer->setUseBOM(false);
// $writer->setOutputEncoding('UTF-8');
$writer->save($file);
return $file;
}
public function paginateFacturePaiementNewMiseEnpaiement($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$searchTabDate = $request->get('searchTabDate');
$search = $request->get('search');
$filters = [
'searchTabDate' => $searchTabDate,
'fournisseur' => $request->get('fournisseur'),
'spv' => $request->get('spv'),
'statusMiseEnPaiement' => $request->get('statusMiseEnPaiement'),
'query' => trim(@$search['value']),
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinance::class)->getFacturesValideMiseEnPaiement($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\FactureFinance::class)->getFacturesValideMiseEnPaiement($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\FactureFinance::class)->getFacturesValideMiseEnPaiement(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => count($recordsFiltered),
'recordsTotal' => count($recordsTotal),
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
foreach ($factureFinances as $factureFinance) {
$status =
$this->twig->render(
'admin/facture-finance/miseEnPaiement/default/statusMiseEnPaiementV2.html.twig', array(
'factureFinance' => $factureFinance,
));
$action = $this->twig->render(
'admin/facture-finance/miseEnPaiement/default/miseEnpaiementBtnV2.html.twig', array(
'factureFinance' => $factureFinance
));
$btnSelect =
$this->twig->render(
'admin/facture-finance/miseEnPaiement/default/btnSelectMiseEnPaiement.html.twig', array(
'factureFinance' => $factureFinance
));
if($factureFinance->getIsAvoir()){
$montantTtc = (float)str_replace([','], ".", str_replace([' '], "", $factureFinance->getMonatantRestantTtc())) ;
}else {
$montantTtc = (float)str_replace([','], ".", str_replace([' '], "", $factureFinance->getMonatantTtc())) ;
}
$output['data'][] = [
'responsive_id' => '',
'id' => $factureFinance->getId(),
'numeroFacture' => $factureFinance->getNumeroFacture(),
'monatantTtc' => $this->espaceNumber($montantTtc).'€',
'monatantHt' => $factureFinance->getMonatantHt() ? $this->espaceNumber($factureFinance->getMonatantHt()).'€' : '',
'tva' => $factureFinance->getTva() ? $factureFinance->getTva().'€' : '',
'category' => $factureFinance->getCategory() ? $factureFinance->getCategory() : '',
'fournisseur' => $factureFinance->getFournisseur() ? $factureFinance->getFournisseur()->getName() : '',
'developpeur' => $factureFinance->getDeveloppeur() ? $factureFinance->getDeveloppeur()->getFirstname().' '.$factureFinance->getDeveloppeur()->getLastname() : '',
'spv' => $factureFinance->getSpv() ? $factureFinance->getSpv()->getName() : '',
'dateValidation' => $factureFinance->getDateValidation() ? $factureFinance->getDateValidation()->format('d/m/Y') : '',
'createdAt' => $factureFinance->getCreatedAt() ? $factureFinance->getCreatedAt()->format('d/m/Y') : '',
'status' => $status,
'btnSelect' => $btnSelect,
'action' => $action
];
}
return $output;
}
public function getTabMiseEnPaiementDefault(){
$factures = $this->session->get('factureAcomfirme');
if($factures){
$array = $factures;
}else{
$array = [];
}
foreach ($array as $facture){
if($facture){
if($this->fournisseurService->checkFournisseurRibActive($facture->getFournisseur()) and (is_null($facture->getIsPaiement()) or $facture->getIsPaiement() == 0) and $this->checkFactureFinanceCodeProject($facture)) {
}else{
unset($array[$facture->getToken()]);
$this->session->set('factureAcomfirme',$array);
}
}
}
$tab = $this->twig->render(
'admin/facture-finance/miseEnPaiement/default/trMiseEnPaiementAconfirme.html.twig', array(
'factures' => $array
));
$arraySpv = [];
$montant = 0;
foreach ($array as $value){
if($value->getSpv()){
$arraySpv[$value->getSpv()->getId()] = $value->getSpv();
}
if($value->getIsAvoir()){
$montant += (float)str_replace([','], ".", str_replace([' '], "", $value->getMonatantRestantTtc())) ;
}else {
$montant += (float)str_replace([','], ".", str_replace([' '], "", $value->getMonatantTtc())) ;
}
}
$block = $this->twig->render(
'admin/facture-finance/miseEnPaiement/default/blockMiseEnPaiementAconfirme.html.twig', array(
'factures' => $array,
'spvs' => $arraySpv,
'montant' => $montant
));
if($array){
return [
'tab'=> $tab,
'block'=> $block,
];
}else{
return 0;
}
}
public function getTabMiseEnPaiement($token){
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$factures = $this->session->get('factureAcomfirme');
if($factures){
$array = $factures;
}else{
$array = [];
}
if($facture){
if($this->fournisseurService->checkFournisseurRibActive($facture->getFournisseur()) and $this->checkFactureFinanceCodeProject($facture)) {
$array[$token] = $facture;
}
if($this->checkAltareaFacture($facture)){
}else{
if($facture->getIsPaiement() == FactureFinance::STATUS_NOT_PAYE_SEPA){
$userCurrent = $this->security->getUser();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$userCurrent->getIsAccesValidationFactureMiseEnpaiement()) {
return 0;
}
}
$facture->setIsPaiement(null);
$this->em->persist($facture);
$this->em->flush();
$str = $this->security->getUser()->getFirstname().' '.$this->security->getUser()->getLastname().' a remis la facture '.' ('.$facture->getNumeroFacture().')'.' en mise en paiement';
$this->historyService->addHistoryFactureFinancePaiement($this->security->getUser(),$str,$facture);
}
}
$this->session->set('factureAcomfirme',$array);
}
$tab = $this->twig->render(
'admin/facture-finance/miseEnPaiement/default/trMiseEnPaiementAconfirme.html.twig', array(
'factures' => $array
));
$arraySpv = [];
$montant = 0;
foreach ($array as $value){
if($value->getSpv()){
$arraySpv[$value->getSpv()->getId()] = $value->getSpv();
}
if($value->getIsAvoir()){
$montant += (float)str_replace([','], ".", str_replace([' '], "", $value->getMonatantRestantTtc())) ;
}else {
$montant += (float)str_replace([','], ".", str_replace([' '], "", $value->getMonatantTtc())) ;
}
}
$block = $this->twig->render(
'admin/facture-finance/miseEnPaiement/default/blockMiseEnPaiementAconfirme.html.twig', array(
'factures' => $array,
'spvs' => $arraySpv,
'montant' => $montant
));
if($array){
return [
'tab'=> $tab,
'block'=> $block,
];
}else{
return 0;
}
}
public function getTabMiseEnPaiementDeselection($token){
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
$factures = $this->session->get('factureAcomfirme');
if($factures){
$array = $factures;
}else{
$array = [];
}
if($facture){
if(isset($array[$token])){
unset($array[$token]);
$this->session->set('factureAcomfirme',$array);
}
}
$tab = $this->twig->render(
'admin/facture-finance/miseEnPaiement/default/trMiseEnPaiementAconfirme.html.twig', array(
'factures' => $array
));
$arraySpv = [];
$montant = 0;
foreach ($array as $value){
if($value->getSpv()){
$arraySpv[$value->getSpv()->getId()] = $value->getSpv();
}
if($value->getIsAvoir()){
$montant += (float)str_replace([','], ".", str_replace([' '], "", $value->getMonatantRestantTtc())) ;
}else {
$montant += (float)str_replace([','], ".", str_replace([' '], "", $value->getMonatantTtc())) ;
}
}
$block = $this->twig->render(
'admin/facture-finance/miseEnPaiement/default/blockMiseEnPaiementAconfirme.html.twig', array(
'factures' => $array,
'spvs' => $arraySpv,
'montant' => $montant
));
if($array){
return [
'tab'=> $tab,
'block'=> $block,
];
}else{
return 0;
}
}
public function addPaiementFactureV2(){
$userCurrent = $this->security->getUser();
if (in_array("ROLE_SUPER_ADMINISTRATOR", $userCurrent->getRoles())) {
}else {
if (!$userCurrent->getIsAccesValidationFactureMiseEnpaiement()) {
return [
'messageErreur' => '<p>vous n\'êtes pas autorisé à comfirmer la mise en paiement</p>',
];
}
}
$facturesTab = $this->session->get('factureAcomfirme');
$tab = [];
foreach ($facturesTab as $value){
$facture = $this->em->getRepository(FactureFinance::class)->find($value->getId());
$tab[]= $facture;
}
$arrayFactures = [];
$array = [];
if($tab){
// update date Paiement si < date du jour
foreach ($tab as $facture){
if($facture->getIsPaiement() == 0 or is_null($facture->getIsPaiement())) {
$datePrevuPaiement = new \DateTime($facture->getDate()->format('Y-m-d') . ' 23:59:59');
$dateNow = new \DateTime();
$dateNow->modify('+1 day');
if ($datePrevuPaiement >= $dateNow) {
} else {
$datePrevuPaiement = $dateNow;
}
$facture->setDate($datePrevuPaiement);
$this->em->persist($facture);
$this->em->flush();
$arrayFactures[] = $facture;
}
}
// formate tableau mise en paiement
foreach ($arrayFactures as $itemFacture){
if($itemFacture->getSpv()){
$array[$itemFacture->getSpv()->getId().$itemFacture->getDateValidation()->format('Y-m-d').$itemFacture->getDate()->format('Y-m-d')]['factures'][] = $itemFacture;
$array[$itemFacture->getSpv()->getId().$itemFacture->getDateValidation()->format('Y-m-d').$itemFacture->getDate()->format('Y-m-d')]['spv'] = $itemFacture->getSpv();
$array[$itemFacture->getSpv()->getId().$itemFacture->getDateValidation()->format('Y-m-d').$itemFacture->getDate()->format('Y-m-d')]['dateValidation'] = $itemFacture->getDateValidation();
$array[$itemFacture->getSpv()->getId().$itemFacture->getDateValidation()->format('Y-m-d').$itemFacture->getDate()->format('Y-m-d')]['datePrevuPaiement'] = $itemFacture->getDate();
}
}
foreach ($array as $value){
$spv = $value['spv'];
$datePaiementPrevu = $value['datePrevuPaiement'];
$dateValidation = $value['dateValidation'];
$facturesValide = $value['factures'];
$factureFinancePaiement = $this->em->getRepository(FactureFinancePaiement::class)->findNotFichierBySpvAndDate($spv,$dateValidation,$datePaiementPrevu);
if($factureFinancePaiement){
}
else{
$factureFinancePaiement = new FactureFinancePaiement();
$factureFinancePaiement->setSpv($spv);
$factureFinancePaiement->setDatePrevu($dateValidation);
$factureFinancePaiement->setDatePaiementPrevu($datePaiementPrevu);
$this->em->persist($factureFinancePaiement);
$this->em->flush();
}
foreach ($facturesValide as $factureValide){
if($this->checkAltareaFacture($facture)){
}else{
if($this->fournisseurService->checkFournisseurRibActive($factureValide->getFournisseur()) and $this->checkFactureFinanceCodeProject($facture)) {
$factureValide->setIsPaiement(FactureFinance::STATUS_PAYE_SEPA);
$this->em->persist($factureValide);
$factureFinancePaiementDetailNew = $this->em->getRepository(FactureFinancePaiementDetail::class)->findOneBy(['factureFinance'=>$factureValide->getId()]);
$factureDetailNotExist = false;
if(!$factureFinancePaiementDetailNew){
$factureFinancePaiementDetailNew = new FactureFinancePaiementDetail();
$factureDetailNotExist = true;
}
$factureFinancePaiementDetailNew->setFactureFinance($factureValide);
$factureFinancePaiementDetailNew->setDatePrevu($dateValidation);
$factureFinancePaiementDetailNew->setFactureFinancePaiement($factureFinancePaiement);
$this->em->persist($factureFinancePaiementDetailNew);
$this->em->flush();
if($factureDetailNotExist) {
$str = $this->security->getUser()->getFirstname() . ' ' . $this->security->getUser()->getLastname() . ' a validé la mise en paiement : ' . $factureValide->getFournisseur()->getName() . ' (' . $factureValide->getNumeroFacture() . ')';
$this->historyService->addHistoryFactureFinancePaiement($this->security->getUser(), $str, $factureValide);
}
}
}
}
}
$this->session->remove('factureAcomfirme');
}
return $array;
}
public function getFacturePaiementNewMiseEnpaiement($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$searchTabDate = $request->get('searchTabDate');
$filters = [
'searchTabDate' => $searchTabDate,
'fournisseur' => $request->get('fournisseur'),
'spv' => $request->get('spv'),
'statusMiseEnPaiement' => $request->get('statusMiseEnPaiement'),
'query' => trim(@$search['value']),
];
$factureFinances= $this->em->getRepository(\App\Entity\FactureFinance::class)->getFacturesValideMiseEnPaiementFilter($filters);
return $factureFinances;
}
public function insertLogFichier($spv,$factures,$nameFichier){
$text = '';
foreach ($factures as $facture){
$text .= ' '.$facture->getNumeroFacture();
}
$log = new LogSendFichier();
$log->setLogText($text);
$log->setNameFichier($nameFichier);
$log->setSpvId($spv->getId());
$this->em->persist($log);
$this->em->flush();
}
public function checkFactureFinanceCodeProject($facture){
if($facture){
$projects = $facture->getProjectFactureFinance();
if(count($projects)>0){
foreach ($projects as $projectFacture){
$project = $projectFacture->getProject();
if($project && $project->getCodeProject()){
return true;
}else{
return false;
}
}
}
}
return true;
}
public function checkAltareaFacture($facture){
// if($facture){
// $projects = $facture->getProjectFactureFinance();
// if(count($projects)>0){
// foreach ($projects as $projectFacture){
// $project = $projectFacture->getProject();
// if($project && $project->getEntreprise() && $project->getEntreprise()->getIsAlteria()){
// return true;
// }else{
// return false;
// }
// }
// }
// }
return false;
}
public function extractFacturesPayer($factures,$request){
$file= $this->params->get('zips_directory')."/extraire_factures.xlsx";
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Head 2
$tableHead2 = [
'font'=>[
'color'=>[
'rgb'=>'0071c1'
],
'bold'=>true,
'size'=>12
],
'fill'=>[
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'rgb' => 'dcebf4'
]
],
];
$sheet->setCellValue('A1',"Numéro de facture")
->setCellValue('B1',"Date de facture")
->setCellValue('C1',"Date de réception")
->setCellValue('D1',"Date de paiement")
->setCellValue('E1',"Montant")
->setCellValue('F1',"Code Société");
// Borders a2 z2
$spreadsheet->getActiveSheet()->getStyle('A1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('B1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('C1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('D1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('E1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
$spreadsheet->getActiveSheet()->getStyle('F1')->getBorders()->getRight()->setBorderStyle(Border::BORDER_MEDIUM)->setColor(new Color('FFFFFF'));
//width
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(17);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(30);
$spreadsheet->getActiveSheet()->getStyle('A1:F1')->applyFromArray($tableHead2);
//loop through the data
//current row
$row=2;
foreach($factures as $facture){
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , (string)$facture->getNumeroFacture30Max())
->setCellValue('E'.$row , $facture->getMonatantTtc())
->setCellValue('F'.$row , $facture->getSpv()?$facture->getSpv()->getName():'')
;
$spreadsheet = $this->addStyleToCellDate('B',$row,$facture->getDateFacture(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('C',$row,$facture->getCreatedAt(),$spreadsheet);
$spreadsheet = $this->addStyleToCellDate('D',$row,$facture->getDatePaiement(),$spreadsheet);
//increment row
$row++;
}
$firstRow=1;
$lastRow=$row-1;
$spreadsheet->getActiveSheet()->setAutoFilter("A".$firstRow.":F".$lastRow);
$writer = new Xlsx($spreadsheet);
$writer->save($file);
return $file;
}
public function editClassification($request,$token)
{
$facture = $this->em->getRepository(FactureFinance::class)->findOneBy(['token'=>$token]);
if($facture){
$form = $this->form->create(FactureFinanceClassificationType::class, $facture);
$form->handleRequest($request);
if ($form->isSubmitted()) {
$this->em->persist($facture);
$this->em->flush();
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => true
];
}
}
return [
'form' => $form->createView(),
'factureFinance' => $facture,
'success' => false,
];
}
public function exportComptableNotSendByCompteur($arrayCompteur,$strType){
if($strType == 'facture'){
$arrays1 = $this->getC1FacturesExportByCompteur($arrayCompteur);
$this->c1FacturesExportXls($arrays1,true,false);
}
if($strType == 'avoir'){
$arrays2 = $this->getC2AvoirExportByCompteur($arrayCompteur);
$this->c2AvoirExportXls($arrays2,true,false);
}
if($strType == 'acompte'){
$arrays3 = $this->getC3AcomptesExportByCompteur($arrayCompteur);
$this->c3AcomptesExportXls($arrays3,true,false);
}
if($strType == 'reglement'){
$arrays4 = $this->getC4ReglementsExportByCompteur($arrayCompteur);
$this->c4ReglementsExportXls($arrays4,true,false);
}
}
public function getC1FacturesExportByCompteur($arrayCompteur){
$factures = $this->em->getRepository(FactureFinance::class)->searchFactureByCompteur($arrayCompteur);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDateFacture()?$facture->getDateFacture()->format('d/m/Y'):'';
$dateEcheance = $facture->getDelaiPaiementDate()?$facture->getDelaiPaiementDate()->format('d/m/Y'):'';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Facture';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
// $arrays[$i]['Montant à régler'] = (float)$tvaMultiple->getMontantTtc();
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127)) ;
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Facture de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$tvaMultiple->getMontantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$tvaMultiple->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTvaProject($facture,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
else{
$arrays[$i]['Type de ligne'] = 'Facture';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($facture->getMonatantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Facture de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$project->getMontantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
if($facture->getAutoliquidation() == 1){
$tvaMontant = $this->hTAndTTC($project->getMontantTtc(), $facture->getTauxTva())['tva'];
}else{
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$project->getMontantHt()) / 100;
}
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
}
}
return $arrays;
}
public function getC2AvoirExportByCompteur($arrayCompteur){
$avoirs = $this->em->getRepository(Avoir::class)->searchAvoirByCompteur($arrayCompteur);
$arrays = [];
$i = 0;
foreach ($avoirs as $avoir){
$spvName = $avoir->getSpv()?$avoir->getSpv()->getName():'';
$spvCodeSage = $avoir->getSpv()?$avoir->getSpv()->getCodeSage():'';
$fournisseurCode = $avoir->getFournisseur()?$avoir->getFournisseur()->getCodeFournisseur():'';
$classification = $avoir->getClassification();
$dateComptable = $avoir->getDateAvoir()?$avoir->getDateAvoir()->format('d/m/Y'):'';
$dateEcheance = '';
$dateCreation = $avoir->getCreatedAt()?$avoir->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $avoir->getNumeroAvoir();
if(count($avoir->getTvaAvoir())>0 && $avoir->getTauxTva() == 0){
foreach ($avoir->getTvaAvoir() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Avoir';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Avoir de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndTva($avoir,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($avoir->getNote(), 0, 127));
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$avoirFactures = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir]);
$factureAssocie = '';
if ($avoirFactures) {
$h = 1;
$total = count($avoirFactures);
foreach ($avoirFactures as $avoirFacture) {
if ($total == $h) {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece();
} else {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece() . " / ";
}
$h++;
}
}
$arrays[$i]['Compteur facture associée'] = $factureAssocie;
$i++;
if(count($avoir->getProjectAvoir())>0){
foreach ($avoir->getProjectAvoir() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Avoir de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
// if (count($avoir->getProjectAvoir()) == 1) {
// $arrays[$i]['Montant HT'] = (float)$avoir->getMonatantHt();
// } else {
// $arrays[$i]['Montant HT'] = (float)$project->getMontantHt();
// }
// $arrays[$i]['Montant TTC'] = '';
// $arrays[$i]['taux de TVA'] = '';
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndTvaProject($avoir,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$i++;
}
}
}
}
else {
$arrays[$i]['Type de ligne'] = 'Avoir';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Avoir de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]) ? self::CHARGE_INVESTISSEMENT_DEPENSE[$classification] : '';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir'=>$avoir->getId()]);
if($avoirs){
$montantTtc = (float)str_replace(',','.',$avoirs[0]->getMonatantAvoirTtc());
$tauxTva = $avoir->getTauxTva() && $avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$montantHt = $montantTtc / (1 + ($tauxTva/100));
$arrays[$i]['Montant HT'] = number_format((float)$montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$montantTtc,2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tauxTva,2,'.','');
}else{
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$avoir->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$avoir->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$avoir->getTauxTva()),2,'.','');
}
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndNotTva($avoir);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($avoir->getNote(), 0, 127));
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$avoirFactures = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir]);
$factureAssocie = '';
if ($avoirFactures) {
$h = 1;
$total = count($avoirFactures);
foreach ($avoirFactures as $avoirFacture) {
if ($total == $h) {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece();
} else {
$factureAssocie .= $avoirFacture->getFinanceFacture()->getCompteurErpiPiece() . " / ";
}
$h++;
}
}
$arrays[$i]['Compteur facture associée'] = $factureAssocie;
$i++;
if (count($avoir->getProjectAvoir()) > 0) {
foreach ($avoir->getProjectAvoir() as $project) {
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Avoir de charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
if (count($avoir->getProjectAvoir()) == 1) {
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['avoir' => $avoir->getId()]);
if ($avoirs) {
$montantTtc = (float)str_replace(',','.',$avoirs[0]->getMonatantAvoirTtc());
$tauxTva = $avoir->getTauxTva() && $avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$montantHt = $montantTtc / (1 + ($tauxTva / 100));
$arrays[$i]['Montant HT'] = number_format((float)$montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$montantTtc,2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tauxTva,2,'.','');
} else {
$arrays[$i]['Montant HT'] = number_format((float)$avoir->getMonatantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$avoir->getMonatantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$avoir->getTauxTva(),2,'.','');
}
}else{
$montantHt = (float)str_replace(',','.',$project->getMontantHt());
$tauxTva = $avoir->getTauxTva() && (float)$avoir->getTauxTva() != 0 ? (float)$avoir->getTauxTva() : 20;
$arrays[$i]['Montant HT'] = number_format($montantHt,2,'.','');
$arrays[$i]['Montant TTC'] = number_format($montantHt + (1 *( $tauxTva/100)),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$avoir->getTauxTva(),2,'.','');
}
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $avoir->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByAvoirAndNotTvaProject($avoir, $project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$i++;
}
}
}
}
return $arrays;
}
public function getC3AcomptesExportByCompteur($arrayCompteur){
$factures = $this->em->getRepository(FactureFinance::class)->searchFactureByCompteur($arrayCompteur);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDateFacture()?$facture->getDateFacture()->format('d/m/Y'):'';
$dateEcheance = $facture->getDelaiPaiementDate()?$facture->getDelaiPaiementDate()->format('d/m/Y'):'';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Acompte';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Acompte pour une charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance ? $dateEcheance : $dateComptable;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
// $arrays[$i]['Montant à régler'] = (float)$tvaMultiple->getMontantTtc();
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Acompte pour une charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndTvaProject($facture,$tvaMultiple,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$i++;
}
}
}
}
else{
$arrays[$i]['Type de ligne'] = 'Acompte';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Acompte pour une charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance ? $dateEcheance : $dateComptable;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPiece();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= $item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= $item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = '';
$i++;
if(count($facture->getProjectFactureFinance())>0){
foreach ($facture->getProjectFactureFinance() as $project){
$arrays[$i]['Type de ligne'] = 'Affectation projet';
$arrays[$i]['Code Société'] = '';
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = '';
$arrays[$i]['Acompte pour une charge'] = '';
$arrays[$i]['Date comptable'] = '';
$arrays[$i]['Date d’échéance'] = '';
$arrays[$i]['Date de création dans ERPI'] = '';
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$project->getMontantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = '';
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = '';
$arrays[$i]['Référence facture fournisseur'] = '';
$arrays[$i]['Compteur ERPI pièce'] = '';
$compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$project->getProject());
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
$arrays[$i]['Commentaire comptable'] = '';
$arrays[$i]['Code projet'] = $project->getProject()->getCodeProject();
$arrays[$i]['libellé projet'] = $project->getProject()->getName();
$arrays[$i]['Compteur facture associée'] = '';
$i++;
}
}
}
}
return $arrays;
}
public function getC4ReglementsExportByCompteur($arrayCompteur){
$factures = $this->em->getRepository(FactureFinance::class)->searchreglementByCompteur($arrayCompteur);
$arrays = [];
$i = 0;
foreach ($factures as $facture){
$banqueFournisseur = '';
$ibanFournisseur = '';
$bicFournisseur = '';
$codePaysFournisseur = '';
if ($facture->getFournisseur()) {
if($facture->getRib()) {
$fournisseurBanque = $facture->getRib();
}else {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId(), 'isDefault' => true]);
}
if (!$fournisseurBanque) {
$fournisseurBanque = $this->em->getRepository(Rib::class)->findOneBy(['fournisseur' => $facture->getFournisseur()->getId()]);
}
if ($fournisseurBanque) {
$banqueFournisseur = $fournisseurBanque->getBanque();
$ibanFournisseur = str_replace(" ","",$fournisseurBanque->getIban());
$bicFournisseur = $fournisseurBanque->getBic();
}
$codePaysFournisseur = $facture->getFournisseur()->getCountryCode();
}
// $spvName = $facture->getSpv()?$facture->getSpv()->getName():'';
$spvName = '';
$spvCodeSage = $facture->getSpv()?$facture->getSpv()->getCodeSage():'';
$fournisseurCode = $facture->getFournisseur()?$facture->getFournisseur()->getCodeFournisseur():'';
$classification = $facture->getClassification();
$dateComptable = $facture->getDate()?$facture->getDate()->format('d/m/Y'):'';
$dateEcheance = '';
$dateCreation = $facture->getCreatedAt()?$facture->getCreatedAt()->format('d/m/Y'):'';
$numeroFacture = $facture->getNumeroFacture();
// if(count($facture->getProjectFactureFinance())>1){
// foreach ($facture->getProjectFactureFinance() as $projectFinance){
// $arrays[$i]['Type de ligne'] = 'Reglement';
// $arrays[$i]['Code Société'] = $spvName;
// $arrays[$i]['Code Sage'] = $spvCodeSage;
// $arrays[$i]['Code budgétaire'] = $facture->getClassification();
// $arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
// $arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$facture->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$facture->getClassification()]:'';
// $arrays[$i]['Date comptable'] = $dateComptable;
// $arrays[$i]['Date d’échéance'] = $dateEcheance;
// $arrays[$i]['Date de création dans ERPI'] = $dateCreation;
// $arrays[$i]['Montant HT'] = (float)$projectFinance->getMontantHt();
// if($facture->getTauxTva()){
// $tva = (float)$facture->getTauxTva();
// }else{
// $tva = 20;
// }
// $arrays[$i]['Montant TTC'] = (float)$projectFinance->getMontantHt() * (1 + ($tva/100) );
// $arrays[$i]['taux de TVA'] = $tva;
// $arrays[$i]['Montant à régler'] = (float)$projectFinance->getMontantHt() * (1 + ($tva/100) );
// $arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
// $arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
//// $compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndTva($facture,$tvaMultiple);
//// $arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
//
// $compteurErpiPieceFactureProject = $this->em->getRepository(CompteurErpiEcriture::class)->findByFactureAndNotTvaProject($facture,$projectFinance->getProject());
// $arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFactureProject ? $compteurErpiPieceFactureProject->getCompteurErpiEcriture() : '';
//
// if($facture->getIsAvoir()){
// $avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
// $a = count($avoirs);
// $b = 1;
// $avoirNum = '';
// foreach ($avoirs as $item){
// if($b == $a){
// $avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir();
// }else{
// $avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir()." / ";
// }
// $b++;
// }
// $arrays[$i]['Commentaire comptable'] = $avoirNum;
// }else{
// $arrays[$i]['Commentaire comptable'] = $facture->getCommentComptable();
// }
// $arrays[$i]['Code projet'] = $projectFinance->getProject()->getCodeProject();
// $arrays[$i]['libellé projet'] = $projectFinance->getProject()->getName();
// $arrays[$i]['Compteur facture associée'] = $numeroFacture;
// $arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
// $arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
// $arrays[$i]['bicFournisseur'] = $bicFournisseur;
// $arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
// $i++;
// }
// }else{
if(count($facture->getTvaFactureFinance())>0 && $facture->getTauxTva() == 0){
foreach ($facture->getTvaFactureFinance() as $tvaMultiple){
$arrays[$i]['Type de ligne'] = 'Reglement';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $tvaMultiple->getClassification();
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()])?self::CHARGE_INVESTISSEMENT_DEPENSE[$tvaMultiple->getClassification()]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)$tvaMultiple->getMontantHt(),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)$tvaMultiple->getTauxTva(),2,'.','');
$arrays[$i]['Montant à régler'] = number_format((float)$tvaMultiple->getMontantTtc(),2,'.','');
// $arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndTva($facture,$tvaMultiple);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
if($facture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$a = count($avoirs);
$b = 1;
$avoirNum = '';
foreach ($avoirs as $item){
if($b == $a){
$avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir();
}else{
$avoirNum .= 'Avoir: ' .$item->getAvoir()->getNumeroAvoir()." / ";
}
$b++;
}
$arrays[$i]['Commentaire comptable'] = substr($avoirNum, 0, 127) ;
}else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
}
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = $facture->getCompteurErpiPiece();
$arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
$arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
$arrays[$i]['bicFournisseur'] = $bicFournisseur;
$arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
$arrays[$i]['Autoliquidation'] = 0;
$tvaMontant = (float)str_replace(',','.',$tvaMultiple->getTauxTva()) * (float)str_replace(',','.',$tvaMultiple->getMontantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
}
else{
$arrays[$i]['Type de ligne'] = 'Reglement';
$arrays[$i]['Code Société'] = $spvName;
$arrays[$i]['Code Sage'] = $spvCodeSage;
$arrays[$i]['Code budgétaire'] = $classification;
$arrays[$i]['Code fournisseur Evalua'] = $fournisseurCode;
$arrays[$i]['Facture de charge'] = isset(self::CHARGE_INVESTISSEMENT_DEPENSE[$classification])?self::CHARGE_INVESTISSEMENT_DEPENSE[$classification]:'';
$arrays[$i]['Date comptable'] = $dateComptable;
$arrays[$i]['Date d’échéance'] = $dateEcheance;
$arrays[$i]['Date de création dans ERPI'] = $dateCreation;
$arrays[$i]['Montant HT'] = number_format((float)str_replace(',','.',$facture->getMonatantHt()),2,'.','');
$arrays[$i]['Montant TTC'] = number_format((float)str_replace(',','.',$facture->getMonatantTtc()),2,'.','');
$arrays[$i]['taux de TVA'] = number_format((float)str_replace(',','.',$facture->getTauxTva()),2,'.','');
$arrays[$i]['Montant à régler'] = $this->getMontantFinalTtcFacture($facture);
$arrays[$i]['Référence facture fournisseur'] = $numeroFacture;
$arrays[$i]['Compteur ERPI pièce'] = $facture->getCompteurErpiPieceReglement();
$compteurErpiPieceFacture = $this->em->getRepository(CompteurErpiEcritureReglement::class)->findByFactureAndNotTva($facture);
$arrays[$i]['Compteur ERPI écritures'] = $compteurErpiPieceFacture ? $compteurErpiPieceFacture->getCompteurErpiEcriture() : '';
if($facture->getIsAvoir()){
$avoirs = $this->em->getRepository(AvoirFactureFinance::class)->findBy(['financeFacture'=>$facture->getId()]);
$a = count($avoirs);
$b = 1;
$avoirNum = '';
foreach ($avoirs as $item){
if($b == $a){
$avoirNum .='Avoir: ' . $item->getAvoir()->getNumeroAvoir();
}else{
$avoirNum .='Avoir: ' . $item->getAvoir()->getNumeroAvoir()." / ";
}
$b++;
}
$arrays[$i]['Commentaire comptable'] = substr($avoirNum, 0, 127);
}else{
$arrays[$i]['Commentaire comptable'] = preg_replace("/\r\n|\r|\n/", ' ', substr($facture->getNote(), 0, 127));
}
// foreach ($facture->getProjectFactureFinance() as $projectFinance){
// $arrays[$i]['Code projet'] = $projectFinance->getProject()->getCodeProject();
// $arrays[$i]['libellé projet'] = $projectFinance->getProject()->getName();
// }
$arrays[$i]['Code projet'] = '';
$arrays[$i]['libellé projet'] = '';
$arrays[$i]['Compteur facture associée'] = $facture->getCompteurErpiPiece();
$arrays[$i]['banqueFournisseur'] = $banqueFournisseur;
$arrays[$i]['ibanFournisseur'] = $ibanFournisseur;
$arrays[$i]['bicFournisseur'] = $bicFournisseur;
$arrays[$i]['codePaysFournisseur'] = $codePaysFournisseur;
$arrays[$i]['Autoliquidation'] = $facture->getAutoliquidation() ? 1 : 0;
$tvaMontant = (float)str_replace(',','.',$facture->getTauxTva()) * (float)str_replace(',','.',$facture->getMonatantHt()) / 100;
$arrays[$i]['Montant TVA'] = $tvaMontant;
$i++;
}
// }
}
return $arrays;
}
public function paginateLogAPI($request){
$length = $request->get('length');
$length = $length && ($length!=-1)?$length:0;
$start = $request->get('start');
$start = $length?($start && ($start!=-1)?$start:0)/$length:0;
$column = $search = $request->get('columns');
$order = $request->get('order')[0];
$columnOrder = $order['column'];
$dirOrder = $order['dir'];
$columNameOrder = $column[$columnOrder]['data'];
$search = $request->get('search');
$btnTypeTab = $request->get('btnTypeTab');
$filters = [
'query' => trim(@$search['value']),
'btnTypeTab' => $btnTypeTab,
'isError' => $request->get('isError'),
'numeroDocument' => $request->get('numeroDocument'),
];
$results= $this->em->getRepository(\App\Entity\EfacData::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder);
$recordsFiltered= $this->em->getRepository(\App\Entity\EfacData::class)->search($filters, $start, $length, true,$columNameOrder, $dirOrder,true);
$recordsTotal= $this->em->getRepository(\App\Entity\EfacData::class)->search(array(), $start, $length, true,$columNameOrder, $dirOrder,true);
$output = array(
'data' => array(),
'recordsFiltered' => isset($recordsFiltered['result']) ? $recordsFiltered['result'] : 0,
'recordsTotal' => isset($recordsTotal['result']) ? $recordsTotal['result'] : 0,
);
$baseurl = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
foreach ($results as $result) {
// N° de Facture | Avoir : extrait depuis le contenu JSON du log
$numFacture = '';
$dataEfac = $result->getDataEfac();
if ($dataEfac) {
$decoded = json_decode($dataEfac, true);
if (is_array($decoded) && isset($decoded['documentList']) && is_array($decoded['documentList'])) {
$numeros = [];
foreach ($decoded['documentList'] as $document) {
if (isset($document['invoice_number_fournisseur']) && $document['invoice_number_fournisseur']) {
$numeros[] = $document['invoice_number_fournisseur'];
}
}
$numFacture = implode(', ', $numeros);
}
}
// Bouton "Voir" pour afficher le contenu du log (data-efac) dans une modal
$action = '';
if ($dataEfac) {
$action = '<a href="#" class="btn btn-primaryCustom btn-sm showDataEfac" style="color: #fff !important;" data-data="' . htmlspecialchars($dataEfac, ENT_QUOTES) . '">Voir</a>';
}
// Msg : "Ok" pour le succès (200) ; sinon bouton "Voir le msg" ouvrant une modal avec le message formaté
$rawMsg = $result->getMsg();
if ((string)$rawMsg === '200') {
$msg = 'Ok';
} elseif ($rawMsg) {
$msg = '<a href="#" class="btn btn-primaryCustom btn-sm showMsgEfac" style="color: #fff !important;" data-msg="' . htmlspecialchars($rawMsg, ENT_QUOTES) . '">Voir le msg</a>';
} else {
$msg = '';
}
$output['data'][] = [
'responsive_id' => '',
'id' => $result->getId(),
'numFacture' => $numFacture,
'transactionId' => $result->getTransactionId(),
'msg' => $msg,
'createdAt' => $result->getCreatedAt() ? $result->getCreatedAt()->format('d/m/Y H:i') : '',
'action' => $action,
];
}
return $output;
}
/**
* Rend le message d'un log Efac lisible (décodage unicode / extraction des messages JSON).
*/
public function formatEfacMsg($rawMsg)
{
if ((string)$rawMsg === '200') {
return 'Ok';
}
if (!$rawMsg) {
return '';
}
$decoded = json_decode($rawMsg, true);
if (is_array($decoded)) {
$messages = [];
if (isset($decoded['message'])) {
$messages[] = $decoded['message'];
} else {
foreach ($decoded as $item) {
if (is_array($item) && isset($item['message'])) {
$messages[] = $item['message'];
} elseif (is_string($item)) {
$messages[] = $item;
}
}
}
return $messages ? implode(' | ', $messages) : json_encode($decoded, JSON_UNESCAPED_UNICODE);
}
$msgDecoded = json_decode('"' . str_replace('"', '\"', $rawMsg) . '"');
return $msgDecoded !== null ? $msgDecoded : $rawMsg;
}
/**
* Envoie au super administrateur l'ensemble des logs Efac du jour.
*/
public function sendLogEfacDuJour()
{
$date = new \DateTime();
$results = $this->em->getRepository(\App\Entity\EfacData::class)->findByDay($date);
$logs = [];
foreach ($results as $result) {
// N° de Facture | Avoir : extrait depuis le contenu JSON du log
$numFacture = '';
$dataEfac = $result->getDataEfac();
if ($dataEfac) {
$decoded = json_decode($dataEfac, true);
if (is_array($decoded) && isset($decoded['documentList']) && is_array($decoded['documentList'])) {
$numeros = [];
foreach ($decoded['documentList'] as $document) {
if (isset($document['invoice_number_fournisseur']) && $document['invoice_number_fournisseur']) {
$numeros[] = $document['invoice_number_fournisseur'];
}
}
$numFacture = implode(', ', $numeros);
}
}
$logs[] = [
'numFacture' => $numFacture,
'transactionId' => $result->getTransactionId(),
'msg' => $this->formatEfacMsg($result->getMsg()),
];
}
$this->notification->sendLogEfacDuJour('Logs API Efac du ' . $date->format('d/m/Y'), $logs, $date);
return count($logs);
}
}