src/Controller/AdminFinance/SciController.php line 73

  1. <?php
  2. namespace App\Controller\AdminFinance;
  3. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  5. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use App\Entity\AdminFinance\Bank\BankCompte;
  11. use App\Repository\AdminFinance\Bank\BankCompteRepository;
  12. use App\Entity\AdminFinance\Bank\BankMouvement;
  13. use App\Repository\AdminFinance\Bank\BankMouvementRepository;
  14. use App\Entity\AdminFinance\Bank\BankPatrimoine;
  15. use App\Repository\AdminFinance\Bank\BankPatrimoineRepository;
  16. use App\Entity\AdminFinance\Bank\BankPrelevement;
  17. use App\Repository\AdminFinance\Bank\BankMouvementCategorieRepository;
  18. use App\Repository\AdminFinance\Bank\BankTiersRepository;
  19. use App\Controller\AdminFinance\Bank\BankMouvementCrudController;
  20. use App\Controller\AdminFinance\Sci\SciBankMouvementCrudController;
  21. use App\Controller\AdminFinance\Sci\SciTiersCrudController;
  22. use App\Entity\Transverse\Tiers;
  23. /**
  24.  * Classe permettant d'afficher le tableau de bord dans la partie BackOffice
  25.  */
  26. class SciController extends AbstractDashboardController
  27. {
  28.     #[Route('/admin/sci/{year}'name'easyadmin_sci'requirements: ['year' => '\d+'])]
  29.     public function index(?int $year null, ?int $tags null): Response
  30.     {
  31.         $year = ($year === null)?date('Y'):$year;
  32.         $mvts $this->mvtRepository->findLastDebit(35self::SCI_ID);
  33.         $revenus $this->mvtRepository->sommeRevenusByMonth($yearself::SCI_ID);
  34.         $depenses $this->mvtRepository->sommeDepensesByMonth($yearself::SCI_ID);
  35.         return $this->render('adminfinance/sci/sci.html.twig', [ 
  36.             'year' => $year,
  37.             'revenus' => $revenus,
  38.             'depenses' => $depenses,
  39.             'mvts' => $mvts
  40.         ]);
  41.     }
  42.     /**
  43.      * Affichage du bilan comptable d'une année
  44.      * 
  45.      * @param int $year
  46.      * @return Response
  47.      */
  48.     #[Route('/admin/sci/bilan-comptable/{year}'name'easyadmin_sci_bilan_comptable'requirements: ['year' => '\d+'])]
  49.     public function bilanComptable(?int $year null): Response 
  50.     {
  51.         $year = ($year === null)?date('Y'):$year;
  52.         $sommeDebits $this->mvtRepository->mvtComptableByYear(self::SCI_IDtrue$year);
  53.         $sommeCredits $this->mvtRepository->mvtComptableByYear(self::SCI_IDfalse$year);
  54.         
  55.         return $this->render('adminfinance/sci/bilan-comptable.html.twig', [
  56.             'year' => $year,
  57.             'comptes' => $this->tiersRepository->findAll(),
  58.             'debits' => $sommeDebits'credits' => $sommeCredits,
  59.             'patrimoines' => $this->patrimoineRepository->findBy(['type' => BankPatrimoine::TYPE_IMMOBILIER_SCI'etat' => true])
  60.         ]);
  61.     }
  62.     /**
  63.      * Affichage de la synthèse fiscale d'un patrimoine
  64.      */
  65.     #[Route('/admin/sci/synthese-fiscale/{year}/{tags}'name'easyadmin_sci_synthese_fiscale'requirements: ['year' => '\d+'])]
  66.     public function syntheseFiscale(int $year nullint $tags null): Response 
  67.     {
  68.         $tags = ($tags === null)?3:$tags;
  69.         $year = ($year === null)?date('Y'):$year;
  70.         $patrimoine $this->patrimoineRepository->findOneBy(['type' => BankPatrimoine::TYPE_IMMOBILIER_SCI'tag'=> $tags'etat' => true]);
  71.         $mouvements $this->mvtRepository->mvtByYear(self::SCI_ID$year$tags, ['dateOperation','desc'], 15);
  72.         $sommes $this->mvtRepository->mvtFiscauxByYear(self::SCI_ID$year$tags);
  73.         array_push($sommes, ['indexFiscal'=>222'montant'=>20]);
  74.         
  75.         
  76.         return $this->render('adminfinance/sci/synthese-fiscale.html.twig', [
  77.             'year' => $year,
  78.             'patrimoine' => $patrimoine,
  79.             'comptes' => $sommes,
  80.             'mvts' => $mouvements
  81.         ]);
  82.     }
  83.     public function configureDashboard(): Dashboard
  84.     {
  85.         return Dashboard::new()
  86.             ->setTitle('BackOffice SCI');
  87.     }
  88.     public function configureMenuItems(): iterable
  89.     {
  90.         
  91.         // Partie Bancaire
  92.         //yield MenuItem::section('Banque', 'fa fa-home')->setCssClass('section');
  93.         //yield MenuItem::linkToCrud('Catégorie', 'fa fa-book', BankMouvementCategorie::class)->setController(BankMouvementCategorieCrudController::class);
  94.         //yield MenuItem::linkToCrud('Mouvement', 'fa fa-cash-register', BankMouvement::class)->setController(BankMouvementCrudController::class);;
  95.         //yield MenuItem::linkToCrud('Prelevement', 'fa fa-comments-dollar', BankPrelevement::class)->setController(BankPrelevementCrudController::class);;
  96.         // Partie SCI
  97.         yield MenuItem::section('Sci''fa fa-home')->setCssClass('section');
  98.         yield MenuItem::linkToUrl('Tableau de bord''fa fa-desktop'$this->generateUrl('easyadmin_sci', []));
  99.         yield MenuItem::linkToCrud('Mouvement''fa fa-money-bill-transfer'BankMouvement::class)->setController(SciBankMouvementCrudController::class);;
  100.         yield MenuItem::linkToCrud('Tiers''fa fa-person'Tiers::class )->setController(SciTiersCrudController::class);
  101.         yield MenuItem::linkToUrl('Bilan Cmpt. '.(date('Y')-1), 'fa fa-scale-balanced'$this->generateUrl('easyadmin_sci_bilan_comptable', ['year' => date('Y')-1]) );
  102.         // Partie Patrimoine
  103.         $patrimoines $this->patrimoineRepository->findBy(['type' => BankPatrimoine::TYPE_IMMOBILIER_SCI'etat' => true]);
  104.         foreach($patrimoines as $appartement) {
  105.             yield MenuItem::section($appartement->getNom() , 'fa fa-home')->setCssClass('section');
  106.             //yield MenuItem::linkToUrl('Synthèse Fiscale '.date('Y'), 'fa fa-tools', $this->generateUrl('easyadmin_sci_synthese_fiscale', ['year' => date('Y'), 'tags' => $appartement->getTag()->getId()]));
  107.             yield MenuItem::linkToUrl('Synthèse Fiscale '.(date('Y')-1), 'fa fa-cash-register'$this->generateUrl('easyadmin_sci_synthese_fiscale', ['year' => (date('Y')-1), 'tags' => $appartement->getTag()->getId()]));
  108.         }
  109.         yield MenuItem::section('')->setCssClass('section');
  110.         //yield MenuItem::linkToUrl('EasyAdmin', 'fa fa-tools', 'https://github.com/EasyCorp/EasyAdminBundle')->setLinkTarget('_blank')->setLinkRel('noreferrer');
  111.         yield MenuItem::linkToUrl('Retour Synt.''fa fa-backward'$this->generateUrl('easyadmin_finance'))->setCssClass('synthese');
  112.     }
  113.     const SCI_ID 5;
  114.     /**
  115.      * @var BankPatrimoineRepository 
  116.      */
  117.     private $patrimoineRepository;
  118.     /**
  119.      * @var BankMouvementCategorieRepository 
  120.      */
  121.     private $categorieRepository;
  122.     /**
  123.      * @var BankMouvementRepository 
  124.      */
  125.     private $mvtRepository;
  126.     /**
  127.      * @var BankTiersRepository 
  128.      */
  129.     private $tiersRepository;
  130.     public function __construct(BankPatrimoineRepository $patrimoineRepositoryBankMouvementCategorieRepository $categorieRepository
  131.             BankMouvementRepository $mvtRepositoryBankTiersRepository $tiersRepository) {
  132.         $this->patrimoineRepository $patrimoineRepository;
  133.         $this->categorieRepository $categorieRepository;
  134.         $this->mvtRepository $mvtRepository;
  135.         $this->tiersRepository $tiersRepository;
  136.     }
  137. }