<?php
namespace App\Controller;
use App\Entity\JOURNAL;
use App\Entity\Bpartner;
use App\Entity\Gaccentry;
use App\Entity\CompteTier;
use App\Entity\Gaccentryd;
use App\Entity\Partenaire;
use Psr\Log\LoggerInterface;
use Doctrine\DBAL\Connection;
use Doctrine\ORM\Query\Expr\Join;
use App\Service\ConnectionService;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class EDIController extends AbstractController
{
private $em;
public function __construct(ConnectionService $em)
{
$this->em = $em;
}
#[Route('/edi', name: 'app_edi')]
public function index(): Response
{
return $this->render('edi/index.html.twig', [
'controller_name' => 'EDIController',
]);
}
#[Route('/getCodeAdonix', name: 'app_getCodeAdonix')]
public function getCodeAdonix(): Response
{
$results = $this->em->getEntity()->getRepository(Gaccentry::class)->findByDate(); // Adjust the method to match your repository
// dd($results);
foreach ($results as $entry) {
// Access properties using getters or directly
$num = $entry->getNum(); // Assuming you have a getNum() method
// Use $num in your SQL query
$searchAdonix = $this->em->getSage()->fetchAllAssociative("SELECT REF_0, NUM_0 FROM HCZ.GACCENTRY WHERE REF_0 = '".$num."' ");
if ($searchAdonix) {
# code...
// dd($searchAdonix);
$entry->setObservationFczFlag6($searchAdonix[0]['NUM_0']);
$entry->setFczFlag6(8);
$this->em->getEntity()->persist($entry);
}
}
$this->em->getEntity()->flush();
return new Response('ok');
}
#[Route('/PieceControle', name: 'app_PieceControle')]
public function PieceControle(): Response
{
$conditionMet = false;
$Gaccentries = $this->em->getEntity()->getRepository(Gaccentry::class)->findPieceValid();
// dd($Gaccentries);
$sumArray = [];
foreach ($Gaccentries as $key => $Gac) {
// fcz_flag6 = 8 Is Exsit In Table Comptabilité sage
$num = $Gac->getNum();
$RefCheck = $this->em->getSage()->fetchAllAssociative("SELECT REF_0,NUM_0 FROM HCZ.GACCENTRY WHERE REF_0 = '".$num."' ");
foreach ($RefCheck as $key => $value) {
if ($RefCheck) {
$Gac->setObservationFczFlag6($value['NUM_0']);
$Gac->setFczFlag6(8);
$conditionMet = true;
}
}
// fcz_flag6 = 4 Is Exsit In dbcom
$NumCheck = $this->em->getDbcom()->fetchAllAssociative("SELECT NUM_0,NUMX3_0 FROM YGAS WHERE NUM_0 = '".$num."' ");
// dd($NumCheck);
foreach ($NumCheck as $key => $value) {
if ($NumCheck) {
$Gac->setObservationFczFlag6(empty($value['NUMX3_0']) ? $value['NUM_0'] : $Gac->getObservationFczFlag6());
$Gac->setFczFlag6(4);
$Gac->setFczFlag3(1);
$conditionMet = true;
}
}
// fcz_flag6 = 9 Piece a Probleme
$jouCheck = $Gac->getJou();
$matchingJournals = $this->em->getEntity()->getRepository(JOURNAL::class)->findJournal($jouCheck);
if (!$matchingJournals) {
$Gac->setObservationFczFlag6('JOURNAL N EXISTE PAS DANS SAGE' . ' ' . $jouCheck);
$Gac->setFczFlag6(9);
$conditionMet = true;
}
$cpy1Check = $Gac->getCpy1();
$matchingCpy = $this->em->getEntity()->getRepository(Partenaire::class)->findCpy($cpy1Check);
if (!$matchingCpy) {
$Gac->setObservationFczFlag6('DOSSIER N EXISTE PAS DANS SAGE' . ' ' . $cpy1Check);
$Gac->setFczFlag6(9);
$conditionMet = true;
}
$fcy1Check = $Gac->getFcy1();
$matchingFcy = $this->em->getEntity()->getRepository(Partenaire::class)->findFcy($fcy1Check);
if (!$matchingFcy) {
$Gac->setObservationFczFlag6('SOUS DOSSIER N EXISTE PAS DANS SAGE' . ' ' . $fcy1Check);
$Gac->setFczFlag6(9);
$conditionMet = true;
}
if ($Gac->getCur() != 'MAD') {
$Gac->setObservationFczFlag6('DEVISE NON MAD' . ' ' . $Gac->getCur());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
$Year = (int) $Gac->getAccdat()->format('Y');
if ($Year < 2023 || $Year > 2024 || $Year == 2023) {
// if ($Year < 2023 || $Year > 2024 ) {
// dd('Hi');
$Gac->setObservationFczFlag6('DIFFÉRENCE DE DATE DE 2024');
$Gac->setFczFlag6(9);
$conditionMet = true;
}
if ($Gac->getDesvcr() && strpos($Gac->getDesvcr(), ';') !== false) {
$Gac->setObservationFczFlag6('DÉSIGNATION AVEC POINT-VIRGULE');
$Gac->setFczFlag6(9);
$conditionMet = true;
}
if ($Gac->getAccdat()->format('Y-m-d H:i:s') !== $Gac->getDuddat()->format('Y-m-d H:i:s') || $Gac->getAccdat()->format('Y-m-d H:i:s') !== $Gac->getRatdat()->format('Y-m-d H:i:s') ) {
// dd($Gac->getAccdat(),$Gad->getAccdat());
$Gac->setObservationFczFlag6('DIFFÉRENCE DATE');
$Gac->setFczFlag6(9);
$conditionMet = true;
}
$typCheck = $Gac->getTyp1();
$sum = "0";
$matchingType = $this->em->getEntity()->getRepository(JOURNAL::class)->findType($typCheck);
if ($matchingType) {
$Gaccentryds = $Gac->getGaccentryds();
if ($Gaccentryds->isEmpty()) {
$Gac->setObservationFczFlag6('PIÈCE SANS DET');
$Gac->setFczFlag6(9);
$conditionMet = true;
}else {
foreach ($Gaccentryds as $key => $Gad) {
if ($Gac->getTyp1() !== $Gad->getTyp0()) {
$Gac->setObservationFczFlag6('TYPES NE SONT PAS LES MÊMES' . ' ' .$Gac->getTyp1() . ' ' . $Gad->getTyp0() );
$Gac->setFczFlag6(9);
$conditionMet = true;
}
if ($Gac->getAccdat()->format('Y-m-d H:i:s') !== $Gad->getAccdat()->format('Y-m-d H:i:s')) {
// dd($Gac->getAccdat(),$Gad->getAccdat());
$Gac->setObservationFczFlag6('DIFFÉRENCE DE 2024');
$Gac->setFczFlag6(9);
$conditionMet = true;
}
// dd("Hi date");
if ($Gad->getAmtcur() < 0) {
$Gac->setObservationFczFlag6('MONTANT NÉGATIF' . ' ' . $Gad->getAmtcur());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
if ($Gad->getSns() !== 1 && $Gad->getSns() !== -1 ) {
$Gac->setObservationFczFlag6('SENS DIFFÉRENCE DE 1 ET -1' . ' ' . $Gad->getSns());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
$cceCheck = $Gad->getCce0();
$matchingCce = $this->em->getEntity()->getRepository(Partenaire::class)->findCce($cceCheck);
if (!$matchingCce) {
$Gac->setObservationFczFlag6('CCE N EXISTE PAS DANS SAGE' . ' ' . $cceCheck);
$Gac->setFczFlag6(9);
$conditionMet = true;
}
$accCheck = $Gad->getAcc();
$cleanaccCheck = str_replace(array("\r", "\n"), '', $accCheck);
$matchingAcc = $this->em->getEntity()->getRepository(CompteTier::class)->findAccByAcc($cleanaccCheck);
if (!$matchingAcc) {
$Gac->setObservationFczFlag6('ACC N EXISTE PAS DANS SAGE' . ' ' . $Gad->getAcc());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
foreach ($matchingAcc as $key => $value) {
if ($value['sac'] == '2') {
if (substr($Gad->getAcc(), 0, 1) == '3') {
if ($Gad->getBpr()) {
$customerCheck = $Gad->getBpr();
$cleanaccCheckCustomer = str_replace(array("\r", "\n"), '', $customerCheck);
$matchingCustomer = $this->em->getEntity()->getRepository(Bpartner::class)->findCustomer($cleanaccCheckCustomer);
if (!$matchingCustomer) {
$Gac->setObservationFczFlag6('CLIENT N EXISTE PAS DANS SAGE ' . ' ' . $Gad->getBpr());
$Gac->setFczFlag6(9);
$conditionMet = true;
// if ($matchingCustomer->getActive() == 1) {
// // dd($matchingSupplier);
// $Gac->setObservationFczFlag6('CUSTOMER NOT ACTIVE IN SAGE' . ' ' . $Gad->getBpr());
// $Gac->setFczFlag6(9);
// $conditionMet = true;
// }
}
elseif ($matchingCustomer?->getActive() === 1) {
// dd($matchingCustomer);
$Gac->setObservationFczFlag6('CLIENT NON ACTIF DANS SAGE' . ' ' . $Gad->getBpr());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
}else {
$Gac->setObservationFczFlag6('COMPTE CLIENT COLLECTIF SANS TIER' . ' ' . $Gad->getAcc());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
}if (substr($Gad->getAcc(), 0, 1) == '4') {
if ($Gad->getBpr()) {
$supplierCheck = $Gad->getBpr();
$cleanaccCheckSupplier = str_replace(array("\r", "\n"), '', $supplierCheck);
$matchingSupplier = $this->em->getEntity()->getRepository(Bpartner::class)->findSupplier($cleanaccCheckSupplier);
if (!$matchingSupplier) {
$Gac->setObservationFczFlag6('FOURNISSEUR N EXISTE PAS DANS SAGE' . ' ' . $Gad->getBpr());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
elseif ($matchingSupplier->getActive() == 1) {
$Gac->setObservationFczFlag6('FOURNISSEUR NON ACTIF DANS SAGE' . ' ' . $Gad->getBpr());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
// dd($matchingSupplier);
// if ($matchingSupplier->getActive() == 1) {
// // dd($matchingSupplier);
// $Gac->setObservationFczFlag6('SUPPLIER NOT ACTIVE IN SAGE' . ' ' . $Gad->getBpr());
// $Gac->setFczFlag6(9);
// $conditionMet = true;
// }
// elseif($matchingSupplier->getActive() == null) {
// $Gac->setObservationFczFlag6('SUPPLIER IS NUL' . ' ' . $Gad->getBpr());
// $Gac->setFczFlag6(9);
// $conditionMet = true;
// }
}else {
$Gac->setObservationFczFlag6('COMPTE FOURNISSEUR COLLECTIF SANS TIER' . ' ' . $Gad->getAcc());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
}
}
$all_acc = substr($Gad->getAcc(), 0, 1);
if ($all_acc == '5' || $all_acc == '6' || $all_acc == '7' || $all_acc == '2' || $all_acc == '1') {
if ($Gad->getBpr()) {
// dd($Gac->getBpr());
$Gac->setObservationFczFlag6('COMPTE' . $Gad->getAcc() . 'AVEC TIER ' . $Gad->getBpr());
$Gac->setFczFlag6(9);
$conditionMet = true;
}
}
// if ($all_acc == '7' || $all_acc == '2' || $all_acc == '1') {
// if ($Gad->getBpr()) {
// $Gac->setObservationFczFlag6('ACC ' . $Gad->getAcc() . ' HAS TIER '. $Gad->getBpr());
// $Gac->setFczFlag6(9);
// $conditionMet = true;
// }
// }
}
// $amtcur = round($Gad->getAmtcur(), 2);
// if ($Gad->getSns() === -1) {
// $amtcur = -$amtcur;
// }
// $sum += $amtcur;
// $amtcurFormatted = number_format($amtcur, 2, '.', ''); // Format as a number with two decimal places.
// array_push($sumArray, $amtcurFormatted);
$amtcur = $Gad->getAmtcur();
$sens = $Gad->getSns();
$montant =$amtcur * $sens;
$sum += $montant;
}
}
$finalBalance = round($sum, 2); // Round to 2 decimal places for final balance
if ($finalBalance != 0 || $finalBalance != -0 ) {
$Gac->setObservationFczFlag6('PIECE DESEQUILIBREES' . ' ' . $finalBalance);
$Gac->setFczFlag6(9);
$conditionMet = true;
}
}else {
$Gac->setObservationFczFlag6('TYPE DOES NOT EXIST' . ' ' . $typCheck);
$Gac->setFczFlag6(9);
$conditionMet = true;
}
// fcz_flag6 = 2 Piece Sans Probleme
if (!$conditionMet) {
$Gac->setObservationFczFlag6('CONTROLLE DONE');
$Gac->setFczFlag6(2);
}
$this->em->getEntity()->persist($Gac);
}
$this->em->getEntity()->flush();
return new Response('ok');
}
}