src/EventListener/JournalPaieListener.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\JournalBulletinLg;
  4. use App\Entity\JournalPaieDossier;
  5. use App\Entity\PBordereau;
  6. use App\Entity\PCompteComptable;
  7. use App\Entity\Prubrique;
  8. use App\Entity\PStatut;
  9. use App\Entity\TbulletinLg;
  10. use App\Entity\VMatrix;
  11. use App\Service\JournalPaieService;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\HttpKernel\Event\TerminateEvent;
  15. class JournalPaieListener
  16. {
  17.     private $entityManager;
  18.     private JournalPaieService $journalPaieService;
  19.     private $charge;
  20.     public function __construct(EntityManagerInterface  $entityManagerJournalPaieService $journalPaieService)
  21.     {
  22.         $this->entityManager $entityManager;
  23.         $this->journalPaieService $journalPaieService;
  24.     }
  25.     public function onKernelTerminate(TerminateEvent $event): void
  26.     {
  27.         $request $event->getRequest();
  28.         if (
  29.             $request->get('_route') === 'app_bulletin_employe_calcul' or
  30.             $request->get('_route') === 'app_bulletin_employe_calcul_all' or
  31.             $request->get('_route') === 'app_paie_indeminite_insert' or
  32.             $request->get('_route') === 'app_paie_honoraire_insert' or
  33.             $request->get('_route') === 'app_paie_remuneration_avance_insert' or
  34.             $request->get('_route') === 'app_paie_stc_insert' or
  35.             $request->get('_route') === 'app_tresorerie_bordereau_journal'
  36.         ) {
  37.             if ($request->request->get('bordoreauIds')) {
  38.                 $bordoreauIds json_decode($request->request->get('bordoreauIds'), true);
  39.                 try {
  40.                     $this->journalPaieService->processBordereaux($bordoreauIds);
  41.                 } catch (\Exception $e) {
  42.                     echo $e->getMessage();
  43.                     die;
  44.                 }
  45.             }
  46.         }
  47.         return;
  48.     }
  49. //public function onKernelTerminate(TerminateEvent $event)
  50. //    {
  51. //        $request = $event->getRequest();
  52. //
  53. //        if (
  54. //            $request->get('_route') === 'app_bulletin_employe_calcul' or
  55. //            $request->get('_route') === 'app_bulletin_employe_calcul_all' or
  56. //            $request->get('_route') === 'app_paie_indeminite_insert' or
  57. //            $request->get('_route') === 'app_paie_honoraire_insert' or
  58. //            $request->get('_route') === 'app_paie_remuneration_avance_insert' or
  59. //            $request->get('_route') === 'app_paie_stc_insert' or
  60. //            $request->get('_route') === 'app_tresorerie_bordereau_journal'
  61. //        ) {
  62. //            if ($request->request->get('bordoreauIds')) {
  63. //                $bordoreauIds = json_decode($request->request->get('bordoreauIds'));
  64. //
  65. //                foreach ($bordoreauIds as $key => $bordoreauId) {
  66. //                    $bordoreau = $this->entityManager->getRepository(PBordereau::class)->find($bordoreauId);
  67. //                    $this->charge = 0;
  68. //                    $this->entityManager->refresh($bordoreau);
  69. //                    foreach ($bordoreau->getActiveBulletins() as $key => $bulletin) {
  70. //                        $this->journalBulletin($bulletin);
  71. //                    }
  72. //                    if (number_format($this->charge, 2) == 0) {
  73. //                        $bordoreau->setStatut(
  74. //                            $this->entityManager->getRepository(PStatut::class)->find(2)
  75. //                        );
  76. //                    } else {
  77. //                        $bordoreau->setStatut(
  78. //                            $this->entityManager->getRepository(PStatut::class)->find(5)
  79. //                        );
  80. //                    }
  81. //                }
  82. //                $this->entityManager->flush();
  83. //            }
  84. //        }
  85. //
  86. //        return;
  87. //    }
  88. //
  89. //    public function journalBulletin($bulletin)
  90. //    {
  91. //        $cotisationsArray = [
  92. //            "cnss" => [50, 47, 53],
  93. //            "cimr" => [48],
  94. //            "ir" => [43],
  95. //            // "netpaye" => "K10010','K10011"
  96. //        ];
  97. //        $bordoreau = $bulletin->getBordereau();
  98. //        $primes = $this->entityManager->getRepository(Prubrique::class)->findBy(['id' => [4, 6, 7, 8, 9, 10, 93, 11, 16, 24, 25, 60, 76,94]]);
  99. //        if (in_array($bordoreau->getNatureContract()->getType()->getId(), [2, 6])) {
  100. //            $primes = [];
  101. //        } else {
  102. //            $primes = $this->entityManager->getRepository(TbulletinLg::class)->findBy(['bulletin' => $bulletin, 'active' => true, 'rubrique' => $primes]);
  103. //        }
  104. //
  105. //        if ($bulletin->getDossier()->getGroupement() == 'FCZ') {
  106. //            $prevelements = $this->entityManager->getRepository(Prubrique::class)->findBy(['id' => [5, 68, 30, 31, 33, 34, 35, 36, 37, 38, 39, 85, 80, 79, 78, 77, 82, 83, 45, 84]]);
  107. //            $prevelementCabs = $this->entityManager->getRepository(Prubrique::class)->findBy(['id' => [29, 32, 40, 41, 44, 46, 59]]); // if u change this ids please change also in TbulletinLgRepositry for regularisation
  108. //            $prevelements = $this->entityManager->getRepository(TbulletinLg::class)->findByGroup($bulletin,  $prevelements);
  109. //            $prevelementCabs = $this->entityManager->getRepository(TbulletinLg::class)->findByGroup($bulletin, $prevelementCabs);
  110. //        } else {
  111. //            $prevelements = $this->entityManager->getRepository(Prubrique::class)->findBy(['id' => [5, 68, 30, 31, 33, 34, 35, 36, 37, 38, 39, 85, 80, 79, 78, 77, 82, 83, 45, 84, 29, 32, 40, 41, 44, 46, 59]]);
  112. //            $prevelements = $this->entityManager->getRepository(TbulletinLg::class)->findByGroup($bulletin, $prevelements);
  113. //            $prevelementCabs = [];
  114. //        }
  115. //
  116. //
  117. //        // disable if exist already to insert new lines
  118. //        // $journalBulletinLgs = $bulletin->getJournalBulletinLgs();
  119. //        $class = JournalBulletinLg::class;
  120. //        $query = $this->entityManager->createQuery(
  121. //            "UPDATE $class e SET e.active = :newValue WHERE e.bulletin = :someValue and e.active = 1"
  122. //        );
  123. //        $query->setParameters([
  124. //            'newValue' => '0',
  125. //            'someValue' => $bulletin,
  126. //        ]);
  127. //        $query->execute();
  128. //        // foreach($journalBulletinLgs as $journalBulletinLg) {
  129. //        //     $journalBulletinLg->setActive(false);
  130. //        // }
  131. //
  132. //
  133. //        if ($bordoreau->getNatureContract()->getType()->getId() == 1 && $bordoreau->getType() == 'paie') {
  134. //            $salaireBase = $this->entityManager->getRepository(TbulletinLg::class)->findOneBy(['bulletin' => $bulletin, 'rubrique' => $this->entityManager->getRepository(Prubrique::class)->find(1), 'active' => true]);
  135. //            $salaireAnciennte = $this->entityManager->getRepository(TbulletinLg::class)->findOneBy(['bulletin' => $bulletin, 'rubrique' => $this->entityManager->getRepository(Prubrique::class)->find(2), 'active' => true]);
  136. //
  137. //            $montantSalaireBase = $salaireBase->getMontant();
  138. //            $montantSalaireBaseInitial = $salaireBase->getMontant();
  139. //
  140. //            $montantSalaireAnciennte = $salaireAnciennte ? $salaireAnciennte->getMontant() : 0;
  141. //            $montantSalaireAnciennteInitital = $salaireAnciennte ? $salaireAnciennte->getMontant() : 0;
  142. //        } else {
  143. //
  144. //            // if($bordoreau->getType() == 'regularisation') {
  145. //            //     $rubriques = $this->entityManager->getRepository(Prubrique::class)->findBy(['id' => [5]]);
  146. //            //     $salaireBase = $this->entityManager->getRepository(TbulletinLg::class)->findOneBy(['bulletin' => $bulletin, 'rubrique' => $rubriques, 'active' => true]);
  147. //            // } else {
  148. //            $rubriques = $this->entityManager->getRepository(Prubrique::class)->findBy(['id' => [3, 12, 13, 14, 15, 17, 18, 22, 26, 27, 61, 63, 64, 65, 66, 67, 69, 70, 88]]);
  149. //            $salaireBase = $this->entityManager->getRepository(TbulletinLg::class)->findOneBy(['bulletin' => $bulletin, 'rubrique' => $rubriques, 'active' => true]);
  150. //
  151. //            // }
  152. //            $montantSalaireBase = $salaireBase->getMontant();
  153. //            $montantSalaireBaseDevise = $salaireBase->getMontantDevise() ?? 0;
  154. //            $montantSalaireBaseInitial = $salaireBase->getMontant();
  155. //            $montantSalaireAnciennte = 0;
  156. //            $montantSalaireAnciennteInitital = 0;
  157. //        }
  158. //
  159. //        if ($montantSalaireBase == 0) {
  160. //            return;
  161. //        }
  162. //
  163. //        foreach ($cotisationsArray as $key => $cotisationArray) {
  164. //            $cotisations = $this->entityManager->getRepository(TbulletinLg::class)->findByCotisation($bulletin, $cotisationArray);
  165. //            $montantTotalCotisations = $this->entityManager->getRepository(TbulletinLg::class)->findByCotisationGroupBulletin($bulletin, $cotisationArray);
  166. //            if ($cotisations and $montantTotalCotisations) {
  167. //
  168. //                $montantInitial = round($montantTotalCotisations['montant'], 2);
  169. //
  170. //                $halfMontant = round(($montantTotalCotisations['montant'] / 2), 2);
  171. //                if ($halfMontant + $halfMontant != $montantInitial) {
  172. //                    $firstHalf = $halfMontant;
  173. //                    $secondHalf = $montantInitial - $halfMontant;
  174. //                } else {
  175. //                    $firstHalf = $secondHalf = $halfMontant;
  176. //                }
  177. //                if ($firstHalf > $montantSalaireAnciennte) {
  178. //                    $minus = round(($firstHalf - $montantSalaireAnciennte), 2);
  179. //                    $montantSalaireBase  = round(($montantSalaireBase  - ($secondHalf + $minus)), 2);
  180. //                    $montantSalaireAnciennte = 0;
  181. //                } else {
  182. //                    $montantSalaireBase  = round(($montantSalaireBase - $secondHalf), 2);
  183. //                    $montantSalaireAnciennte = round(($montantSalaireAnciennte - $firstHalf), 2);
  184. //                }
  185. //
  186. //                foreach ($cotisations as $cotisation) {
  187. //                    $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $cotisation->getRubrique(), 'natureContract' => $bordoreau->getNatureContract()]);
  188. //                    // $excute = self::det_element_insert($id_employe,$element['Eléments'],$element['ID_Eléments'],abs($element['Montant_App_HRM']),NULL,$period,$code_comptable,$element['ID_Bulletin'],$id_cotis,$qte,$type,$this->em);
  189. //                    if (!$pcompteComptable) {
  190. //                        echo $cotisation->getRubrique()->getId() . '/' . $bordoreau->getNatureContract()->getId();
  191. //                        die;
  192. //                    }
  193. //                    $journalBulletinLg = new JournalBulletinLg();
  194. //                    $journalBulletinLg->setRubrique($cotisation->getRubrique());
  195. //                    $journalBulletinLg->setBulletin($bulletin);
  196. //                    $journalBulletinLg->setMontant($cotisation->getMontant());
  197. //                    $journalBulletinLg->setQte($pcompteComptable->getQte());
  198. //                    $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  199. //                    $journalBulletinLg->setType($key);
  200. //                    $journalBulletinLg->setSens($pcompteComptable->getSens());
  201. //
  202. //                    $this->entityManager->persist($journalBulletinLg);
  203. //
  204. //                    $this->charge -= $journalBulletinLg->getMontant();
  205. //                }
  206. //
  207. //                $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $salaireBase->getRubrique(), 'natureContract' => $bordoreau->getNatureContract()]);
  208. //                // if($key == 'cimr') {
  209. //                //     echo $montantSalaireBaseInitial . '/' .$montantSalaireBase . '/' .$halfMontant;
  210. //                //     die;
  211. //                // }
  212. //                $journalBulletinLg = new JournalBulletinLg();
  213. //                $journalBulletinLg->setRubrique($salaireBase->getRubrique());
  214. //                $journalBulletinLg->setBulletin($bulletin);
  215. //                $journalBulletinLg->setMontant(round($montantSalaireBaseInitial - $montantSalaireBase, 2));
  216. //                $journalBulletinLg->setQte($pcompteComptable->getQte());
  217. //                $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  218. //                $journalBulletinLg->setType($key);
  219. //                $journalBulletinLg->setSens($pcompteComptable->getSens());
  220. //
  221. //
  222. //                $this->entityManager->persist($journalBulletinLg);
  223. //
  224. //                $this->charge += $journalBulletinLg->getMontant();
  225. //
  226. //                if ($bordoreau->getNatureContract()->getType()->getId() == 1   && $bordoreau->getType() == 'paie' && $salaireAnciennte) {
  227. //                    $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $salaireAnciennte->getRubrique(), 'natureContract' => $bordoreau->getNatureContract()]);
  228. //
  229. //                    $journalBulletinLg = new JournalBulletinLg();
  230. //                    $journalBulletinLg->setRubrique($salaireAnciennte->getRubrique());
  231. //                    $journalBulletinLg->setBulletin($bulletin);
  232. //                    $journalBulletinLg->setMontant(round($montantSalaireAnciennteInitital - $montantSalaireAnciennte, 2));
  233. //                    $journalBulletinLg->setQte($pcompteComptable->getQte());
  234. //                    $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  235. //                    $journalBulletinLg->setType($key);
  236. //                    $journalBulletinLg->setSens($pcompteComptable->getSens());
  237. //
  238. //
  239. //                    $this->entityManager->persist($journalBulletinLg);
  240. //
  241. //                    $this->charge += $journalBulletinLg->getMontant();
  242. //                }
  243. //
  244. //
  245. //                $montantSalaireBaseInitial = $montantSalaireBase;
  246. //                $montantSalaireAnciennteInitital = $montantSalaireAnciennte;
  247. //            }
  248. //        }
  249. //        $type = "netpaye";
  250. //
  251. //        $primesArrayInitital = [];
  252. //        // initialize the montant for each prime
  253. //        foreach ($primes as $prime) {
  254. //            array_push($primesArrayInitital, [
  255. //                'id' => $prime->getId(),
  256. //                'prime' => $prime,
  257. //                'montantInitial' => $prime->getMontant(),
  258. //                'montantFinal' => $prime->getMontant(),
  259. //                'montantMinus' => 0
  260. //            ]);
  261. //        }
  262. //
  263. //        usort($primesArrayInitital, fn ($a, $b) => $a['montantInitial'] <=> $b['montantInitial']);
  264. //
  265. //        $halfMontantPretArray = [];
  266. //        // calculate the montant for each prelevement
  267. //
  268. //        $keyToRemove = 'montantFinal';
  269. //
  270. //        // this array only for condition i keep the key to modify the montant thatt sould be removed in the original array primesArrayInitital
  271. //
  272. //
  273. //        foreach ($prevelementCabs as $key => $prevelementCab) {
  274. //
  275. //            $filtredPrimesArrayInitital = array_filter($primesArrayInitital, function ($subarray) use ($keyToRemove) {
  276. //                return $subarray[$keyToRemove] != 0;
  277. //            });
  278. //            if ($prevelementCab['montant'] > 0) {
  279. //                $nombrePrimes = count($filtredPrimesArrayInitital);
  280. //
  281. //                $details = [];
  282. //
  283. //                if (count($filtredPrimesArrayInitital) > 0) {
  284. //
  285. //                    $halfMontantPret = (($prevelementCab['montant'] / count($filtredPrimesArrayInitital)));
  286. //                    if ($this->hasMoreThanTwoDecimals($halfMontantPret)) {
  287. //                        $halfMontantPret = $this->roundUpToNDecimals($halfMontantPret, 2);
  288. //                    }
  289. //                    $reste = 0;
  290. //                    $montantMinusInitial = 0;
  291. //                    $montantDebit = 0;
  292. //                    foreach ($filtredPrimesArrayInitital as $key => $primeArray) {
  293. //
  294. //                        if ($primeArray['montantFinal'] == 0) {
  295. //                            $nombrePrimes = $nombrePrimes - 1;
  296. //                            $reste = $halfMontantPret - $primeArray['montantFinal'];
  297. //
  298. //                            if ($nombrePrimes == 0) {
  299. //                                $halfReste = round(($reste / 1), 2);
  300. //                            } else {
  301. //                                $halfReste = round(($reste / $nombrePrimes), 2);
  302. //                            }
  303. //                            $halfMontantPret += $halfReste;
  304. //
  305. //                            $montant = 0;
  306. //                        } elseif ($primeArray['montantFinal'] < $halfMontantPret) {
  307. //                            // echo $primeArray['montantFinal'] . '/'.$halfMontantPret;
  308. //                            // die;
  309. //                            $reste = $halfMontantPret - $primeArray['montantFinal'];
  310. //                            $primesArrayInitital[$key]['montantMinus'] = $primeArray['montantFinal'];
  311. //                            $montant = $primeArray['montantFinal'];
  312. //                            $primesArrayInitital[$key]['montantFinal'] = 0;
  313. //                            $montantMinusInitial += $montant;
  314. //                            $nombrePrimes = $nombrePrimes - 1;
  315. //                            if ($nombrePrimes == 0) {
  316. //                                $halfReste = round(($reste / 1), 2);
  317. //                            } else {
  318. //                                $halfReste = ($reste / $nombrePrimes);
  319. //                                if ($this->hasMoreThanTwoDecimals($halfReste)) {
  320. //                                    $halfReste = $this->roundUpToNDecimals($halfReste, 2);
  321. //                                }
  322. //                            }
  323. //                            $halfMontantPret += $halfReste;
  324. //                        } else {
  325. //                            if ($prevelementCab['montant'] < $montantMinusInitial + $halfMontantPret) {
  326. //                                $halfMontantPret = round($prevelementCab['montant'] - $montantMinusInitial, 2);
  327. //                            }
  328. //
  329. //                            $montant = $halfMontantPret;
  330. //                            $montantMinusInitial += $montant;
  331. //
  332. //
  333. //                            $primesArrayInitital[$key]['montantMinus'] = round($primesArrayInitital[$key]['montantMinus'] + $halfMontantPret, 2);
  334. //                            $primesArrayInitital[$key]['montantFinal'] = round($primesArrayInitital[$key]['montantFinal'] - $halfMontantPret, 2);
  335. //                            $filtredPrimesArrayInitital[$key]['montantMinus'] = round($filtredPrimesArrayInitital[$key]['montantMinus'] + $halfMontantPret, 2);
  336. //                            $filtredPrimesArrayInitital[$key]['montantFinal'] = round($filtredPrimesArrayInitital[$key]['montantFinal'] - $halfMontantPret, 2);
  337. //                        }
  338. //
  339. //                        $montantDebit += $montant;
  340. //
  341. //                        array_push($details, [
  342. //                            'prime' => $primeArray['prime'],
  343. //                            'montant' => $montant
  344. //                        ]);
  345. //                    }
  346. //                    // die;
  347. //                    // check if prelevement not completed from primes then debit from base and anciennete
  348. //                    $montantEcart = $prevelementCab['montant'] - $montantDebit;
  349. //
  350. //                    if ($nombrePrimes == 0 and $montantEcart  > 0) {
  351. //                        $halfMontantPret = round($montantEcart, 2);
  352. //                        $halfMontant = round(($montantEcart / 2), 2);
  353. //
  354. //                        if ($halfMontant + $halfMontant != $halfMontantPret) {
  355. //                            $firstHalf = $halfMontant;
  356. //                            $secondHalf = $halfMontantPret - $halfMontant;
  357. //                        } else {
  358. //                            $firstHalf = $secondHalf = $halfMontant;
  359. //                        }
  360. //
  361. //                        if ($firstHalf > $montantSalaireAnciennte) {
  362. //                            $minus = round(($firstHalf - $montantSalaireAnciennte), 2);
  363. //                            $montantSalaireBaseMinus  = round(($montantSalaireBase  - ($secondHalf + $minus)), 2);
  364. //                            $montantSalaireAnciennteMinus = 0;
  365. //                        } else {
  366. //                            $montantSalaireBaseMinus  = round(($montantSalaireBase - $secondHalf), 2);
  367. //                            $montantSalaireAnciennteMinus = round(($montantSalaireAnciennte - $firstHalf), 2);
  368. //                        }
  369. //
  370. //
  371. //
  372. //                        array_push($details, [
  373. //                            'prime' => $salaireBase,
  374. //                            'montant' => round($montantSalaireBase - $montantSalaireBaseMinus, 2)
  375. //                        ]);
  376. //
  377. //                        if ($bordoreau->getNatureContract()->getType()->getId() == 1 and $salaireAnciennte and $bordoreau->getType() == 'paie') {
  378. //                            array_push($details, [
  379. //                                'prime' => $salaireAnciennte,
  380. //                                'montant' => round($montantSalaireAnciennte - $montantSalaireAnciennteMinus, 2)
  381. //                            ]);
  382. //                        }
  383. //
  384. //                        $montantSalaireBase = $montantSalaireBaseMinus;
  385. //                        $montantSalaireAnciennte = $montantSalaireAnciennteMinus;
  386. //                    }
  387. //                } else {
  388. //                    // $montantSalaireBase;
  389. //                    // $montantSalaireAnciennteInitital;
  390. //
  391. //                    $halfMontantPret = round($prevelementCab['montant'], 2);
  392. //                    $halfMontant = round(($prevelementCab['montant'] / 2), 2);
  393. //
  394. //                    if ($halfMontant + $halfMontant != $halfMontantPret) {
  395. //                        $firstHalf = $halfMontant;
  396. //                        $secondHalf = $halfMontantPret - $halfMontant;
  397. //                    } else {
  398. //                        $firstHalf = $secondHalf = $halfMontant;
  399. //                    }
  400. //
  401. //                    if ($firstHalf > $montantSalaireAnciennte) {
  402. //                        $minus = round(($firstHalf - $montantSalaireAnciennte), 2);
  403. //                        $montantSalaireBaseMinus  = round(($montantSalaireBase  - ($secondHalf + $minus)), 2);
  404. //                        $montantSalaireAnciennteMinus = 0;
  405. //                    } else {
  406. //                        $montantSalaireBaseMinus  = round(($montantSalaireBase - $secondHalf), 2);
  407. //                        $montantSalaireAnciennteMinus = round(($montantSalaireAnciennte - $firstHalf), 2);
  408. //                    }
  409. //
  410. //
  411. //
  412. //                    array_push($details, [
  413. //                        'prime' => $salaireBase,
  414. //                        'montant' => round($montantSalaireBase - $montantSalaireBaseMinus, 2)
  415. //                    ]);
  416. //                    if ($bordoreau->getNatureContract()->getType()->getId() == 1 and $salaireAnciennte and $bordoreau->getType() == 'paie') {
  417. //                        array_push($details, [
  418. //                            'prime' => $salaireAnciennte,
  419. //                            'montant' => round($montantSalaireAnciennte - $montantSalaireAnciennteMinus, 2)
  420. //                        ]);
  421. //                    }
  422. //
  423. //                    $montantSalaireBase = $montantSalaireBaseMinus;
  424. //                    $montantSalaireAnciennte = $montantSalaireAnciennteMinus;
  425. //                }
  426. //
  427. //                array_push($halfMontantPretArray, [
  428. //                    'id' => $prevelementCab['id'],
  429. //                    'prelevement' => $prevelementCab,
  430. //                    'montant' => $halfMontantPret,
  431. //                    'montantInitial' => $prevelementCab['montant'],
  432. //                    'details' => $details
  433. //                ]);
  434. //            }
  435. //        }
  436. //
  437. //        // echo json_encode($halfMontantPretArray);
  438. //        // die;
  439. //        foreach ($primesArrayInitital as $primesArray) {
  440. //            $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $primesArray['prime']->getRubrique(), 'natureContract' => $bordoreau->getNatureContract()]);
  441. //
  442. //            $journalBulletinLg = new JournalBulletinLg();
  443. //            $journalBulletinLg->setRubrique($primesArray['prime']->getRubrique());
  444. //            $journalBulletinLg->setBulletin($bulletin);
  445. //            if (count($halfMontantPretArray) == 0) {
  446. //                $journalBulletinLg->setMontant(round($primesArray['montantInitial'], 2));
  447. //            } else {
  448. //                $journalBulletinLg->setMontant(round($primesArray['montantFinal'], 2));
  449. //            }
  450. //            $journalBulletinLg->setQte($pcompteComptable->getQte());
  451. //            $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  452. //            $journalBulletinLg->setType($type);
  453. //            $journalBulletinLg->setSens($pcompteComptable->getSens());
  454. //
  455. //            $this->entityManager->persist($journalBulletinLg);
  456. //
  457. //            $this->charge += $journalBulletinLg->getMontant();
  458. //        }
  459. //        // echo json_decode($prevelements);die;
  460. //        foreach ($prevelements as $prevelement) {
  461. //            // echo json_decode($prevelement['rubrique_id']);
  462. //            // die;
  463. //            $rubrique = $this->entityManager->getRepository(Prubrique::class)->find($prevelement['rubrique_id']);
  464. //            $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $rubrique, 'natureContract' => $bordoreau->getNatureContract()]);
  465. //
  466. //            $journalBulletinLg = new JournalBulletinLg();
  467. //            $journalBulletinLg->setRubrique($rubrique);
  468. //            $journalBulletinLg->setBulletin($bulletin);
  469. //            $journalBulletinLg->setMontant($prevelement['montant']);
  470. //            $journalBulletinLg->setQte($pcompteComptable->getQte());
  471. //            $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  472. //            $journalBulletinLg->setType($type);
  473. //            $journalBulletinLg->setSens($pcompteComptable->getSens());
  474. //            if ($bordoreau->getDevise() && $bordoreau->getDevise()->getId() != 1) {
  475. //                $journalBulletinLg->setMontantDevise($prevelement['montantDevise']);
  476. //            }
  477. //            $this->entityManager->persist($journalBulletinLg);
  478. //
  479. //            $this->charge -= $journalBulletinLg->getMontant();
  480. //        }
  481. //
  482. //        $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $salaireBase->getRubrique(), 'natureContract' => $bordoreau->getNatureContract()]);
  483. //
  484. //        $journalBulletinLg = new JournalBulletinLg();
  485. //        $journalBulletinLg->setRubrique($salaireBase->getRubrique());
  486. //        $journalBulletinLg->setBulletin($bulletin);
  487. //        $journalBulletinLg->setMontant(round($montantSalaireBase, 2));
  488. //        $journalBulletinLg->setQte($pcompteComptable->getQte());
  489. //        $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  490. //        $journalBulletinLg->setType($type);
  491. //        $journalBulletinLg->setSens($pcompteComptable->getSens());
  492. //        if ($bordoreau->getDevise() && $bordoreau->getDevise()->getId() != 1) {
  493. //            $journalBulletinLg->setMontantDevise($montantSalaireBaseDevise);
  494. //        }
  495. //
  496. //        $this->entityManager->persist($journalBulletinLg);
  497. //
  498. //        $this->charge += $journalBulletinLg->getMontant();
  499. //
  500. //        if ($bordoreau->getNatureContract()->getType()->getId() == 1 and $bordoreau->getType() == 'paie') {
  501. //            if(!$salaireAnciennte) {
  502. //                dd($salaireAnciennte, $bulletin);
  503. //            }
  504. //            $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $salaireAnciennte->getRubrique(), 'natureContract' => $bordoreau->getNatureContract()]);
  505. //
  506. //            $journalBulletinLg = new JournalBulletinLg();
  507. //            $journalBulletinLg->setRubrique($salaireAnciennte->getRubrique());
  508. //            $journalBulletinLg->setBulletin($bulletin);
  509. //            $journalBulletinLg->setMontant(round($montantSalaireAnciennte, 2));
  510. //            $journalBulletinLg->setQte($pcompteComptable->getQte());
  511. //            $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  512. //            $journalBulletinLg->setType($type);
  513. //            $journalBulletinLg->setSens($pcompteComptable->getSens());
  514. //
  515. //            $this->entityManager->persist($journalBulletinLg);
  516. //
  517. //            $this->charge += $journalBulletinLg->getMontant();
  518. //        }
  519. //
  520. //        foreach ($halfMontantPretArray as $halfMontantPret) {
  521. //            $rubrique = $this->entityManager->getRepository(Prubrique::class)->find($halfMontantPret['prelevement']['rubrique_id']);
  522. //            $type = $rubrique->getDesignation();
  523. //            foreach ($halfMontantPret['details'] as $det) {
  524. //
  525. //                $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $det['prime']->getRubrique(), 'natureContract' => $bordoreau->getNatureContract()]);
  526. //                $journalBulletinLg = new JournalBulletinLg();
  527. //                $journalBulletinLg->setRubrique($det['prime']->getRubrique());
  528. //                $journalBulletinLg->setBulletin($bulletin);
  529. //                $journalBulletinLg->setMontant($det['montant']);
  530. //                $journalBulletinLg->setQte($pcompteComptable->getQte());
  531. //                $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  532. //                $journalBulletinLg->setType($type);
  533. //                $journalBulletinLg->setSens($pcompteComptable->getSens());
  534. //
  535. //                $this->entityManager->persist($journalBulletinLg);
  536. //
  537. //                $this->charge += $journalBulletinLg->getMontant();
  538. //            }
  539. //
  540. //            $pcompteComptable = $this->entityManager->getRepository(PCompteComptable::class)->findOneBy(['rubrique' => $rubrique, 'natureContract' => $bordoreau->getNatureContract()]);
  541. //            $journalBulletinLg = new JournalBulletinLg();
  542. //            $journalBulletinLg->setRubrique($rubrique);
  543. //            $journalBulletinLg->setBulletin($bulletin);
  544. //            $journalBulletinLg->setMontant($halfMontantPret['montantInitial']);
  545. //            $journalBulletinLg->setQte($pcompteComptable->getQte());
  546. //            $journalBulletinLg->setCodeComptable($pcompteComptable->getCompteComptable());
  547. //            $journalBulletinLg->setType($type);
  548. //            $journalBulletinLg->setSens($pcompteComptable->getSens());
  549. //
  550. //            $this->entityManager->persist($journalBulletinLg);
  551. //
  552. //            $this->charge -= $journalBulletinLg->getMontant();
  553. //        }
  554. //    }
  555. //
  556. //
  557. //    function hasMoreThanTwoDecimals($number)
  558. //    {
  559. //        // Convert the number to a string to handle both integers and floats
  560. //        $numberStr = strval($number);
  561. //
  562. //        // Use a regular expression to check if the number has more than two decimals
  563. //        // The pattern matches a dot (decimal point), followed by at most two digits
  564. //        return preg_match('/\.\d{3,}/', $numberStr) === 1;
  565. //    }
  566. //
  567. //    function roundUpToNDecimals($number, $decimals)
  568. //    {
  569. //        $multiplier = pow(10, $decimals);
  570. //        return ceil($number * $multiplier) / $multiplier;
  571. //    }
  572. }