<?php
namespace App\Controller;
use App\Entity\JOURNAL;
use App\Entity\SAGE\GACCDUDATE;
use App\Entity\SAGE\GACCENTRYA;
use App\Entity\SAGE\GACCENTRY as sageGaccentries;
use App\Entity\SAGE\GACCENTRYD as sageGaccentryd;
use App\Entity\Bpartner;
use App\Entity\Gaccentry as outputGaccentries;
use App\Entity\CompteTier;
use App\Entity\Gaccentryd;
use App\Entity\Genratenum;
use App\Entity\Partenaire;
use Psr\Log\LoggerInterface;
use Doctrine\DBAL\Connection;
use Doctrine\ORM\Query\Expr\Join;
use App\Service\ConnectionService;
use Doctrine\DBAL\Driver\Exception;
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;
private $client;
public function __construct(ConnectionService $em,HttpClientInterface $client)
{
$this->em = $em;
$this->client = $client;
}
#[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(outputGaccentries::class)->findByDate(); // Adjust the method to match your repository
// dd($results);
foreach ($results as $entry) {
$num = $entry->getNum();
// 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) {
$entry->setObservationFczFlag6($searchAdonix[0]['NUM_0']);
$entry->setFczFlag6(8);
$this->em->getEntity()->persist($entry);
}
}
$this->em->getEntity()->flush();
return new Response('ok');
}
#[Route('/sage/accnum', name: 'app_sage_accnum')]
public function accnum()
{
try {
$this->em->getInterface()->beginTransaction();
// Get the last account number (type is used as the account number here)
$accnum = $this->em->getEntity()->getRepository(Genratenum::class)->findLastAccnum();
// Get the list of pieces to process
$pieceCaImport = $this->em->getEntity()->getRepository(outputGaccentries::class)->findCaAccnum();
// Iterate through each piece in the import
foreach ($pieceCaImport as $piece) {
// dd($piece);
$piece->setFczFlag3(1);
$Gaccentryds = $piece->getGaccentryds();
foreach ($Gaccentryds as $det) {
$accnum++; // Increment account number
$det->setPcg($accnum); // Set Pcg with the current account number
$accnum++; // Increment account number again
$det->setPca($accnum); // Set Pca with the current account number
}
}
$this->em->getEntity()->flush(); // Save all changes to the database
$updateAccnum = $this->em->getInterface()->fetchAssociative("UPDATE genratenum SET type = '".$accnum."' WHERE id = 810699");
$this->em->getInterface()->commit();
} catch (Exception $e) {
if ($this->em->getInterface()->isTransactionActive()) {
$this->em->getInterface()->rollBack();
}
return new JsonResponse("Error: " . $e->getMessage());
}
// return new JsonResponse($accnum);
return new JsonResponse("ok");
}
#[Route('/anomalie', name: 'app_anomalie')]
public function anomalie(Request $request): Response
{
// Construire la requĂȘte Doctrine pour chercher les anomalies
$queryBuilder = $this->em->getEntity()->createQueryBuilder()
->select('g.typ', 'g.num', 'g.accdat', 'g.desvcr', 'g.observation_fcz_flag6')
->from(outputGaccentries::class, 'g')
->where('g.fcz_flag6 = 9')
->andWhere('g.fczFlag5 = 1')
->andWhere('g.fczFlag3 = 0');
// Execute the main query
$results = $queryBuilder->getQuery()->getResult();
foreach ($results as &$row) {
$row['accdat'] = $row['accdat']->format('Y-m-d'); // Adjust format as needed
}
// Return the response
return new JsonResponse($results);
}
#[Route('/anomalie/observationPiece', name: 'app_anomalie_observationPiece')]
public function observationPiece(Request $request): JsonResponse
{
$qb = $this->em->getEntity()->createQueryBuilder();
$qb->select('DISTINCT CASE
WHEN o.observation_fcz_flag6 LIKE :date THEN :dateLabel
WHEN o.observation_fcz_flag6 LIKE :fournisseur THEN :fournisseurLabel
WHEN o.observation_fcz_flag6 LIKE :client THEN :clientLabel
WHEN o.observation_fcz_flag6 LIKE :type THEN :typeLabel
WHEN o.observation_fcz_flag6 LIKE :desequilibrees THEN :desequilibreesLabel
WHEN o.observation_fcz_flag6 LIKE :det THEN :detLabel
WHEN o.observation_fcz_flag6 LIKE :acc THEN :cmpLabel
ELSE :otherLabel
END AS Observ')
->from('App\Entity\Gaccentry', 'o')
->where('o.fczFlag3 = :fczFlag3')
->andWhere('o.fcz_flag6 = :fczFlag6')
->andWhere('o.fczFlag5 = :fczFlag2')
->setParameter('date', '%DATE%')
->setParameter('dateLabel', 'DATE')
->setParameter('fournisseur', '%FOURNISSEUR%')
->setParameter('fournisseurLabel', 'FOURNISSEUR')
->setParameter('client', '%CLIENT%')
->setParameter('clientLabel', 'CLIENT')
->setParameter('acc', '%ACC N EXISTE%')
->setParameter('cmpLabel', 'compte')
->setParameter('type', '%TYPE%')
->setParameter('typeLabel', 'TYPE')
->setParameter('desequilibrees', '%DESEQUILIBREES%')
->setParameter('desequilibreesLabel', 'PIECE DESEQUILIBREES')
->setParameter('det', '%DET%')
->setParameter('detLabel', 'SANS DET')
->setParameter('otherLabel', 'OTHER')
->setParameter('fczFlag3', 0)
->setParameter('fczFlag6', 9)
->setParameter('fczFlag2', 1);
$observationFlags = $qb->getQuery()->getResult();
$options = [];
foreach ($observationFlags as $flag) {
$options[] = $flag['Observ'];
}
return new JsonResponse($options);
}
#[Route('/suivi/returnPiece', name: 'app_suivi_returnPiece')]
public function suiviReturnPiece(Request $request): Response
{
// Step 1: Retrieve the $num parameter from the query string
$num = $request->query->get('num');
// Step 2: Check if $num is present; return an error if it's missing
if (!$num) {
return new JsonResponse(['error' => 'Missing num parameter'], 400);
}
// Step 3: Perform the database queries using $num
$queryBuilderGaccentry = $this->em->getEntity()->createQueryBuilder()
->select('g.num', 'g.desvcr', 'g.accdat', 'g.observation_fcz_flag6','g.id')
->from(outputGaccentries::class, 'g')
->where('g.num = :num')
->setParameter('num', $num);
$queryBuilderGaccentryd = $this->em->getEntity()->createQueryBuilder()
->select('d.typ0', 'd.cce0', 'd.acc', 'd.bpr', 'd.amtcur', 'd.acc', 'd.sns', 'd.lin', 'd.id')
->from(outputGaccentries::class, 'd')
->where('d.num = :num')
->setParameter('num', $num);
// Step 4: Execute the queries
$outputGaccentry = $queryBuilderGaccentry->getQuery()->getResult();
$outputGaccentryd = $queryBuilderGaccentryd->getQuery()->getResult();
// Step 5: Format the accdat field in the result
foreach ($outputGaccentry as &$entry) {
if ($entry['accdat'] instanceof \DateTime) {
// Format the DateTime object to 'Y-m-d H:i:s.u' format
$entry['accdat'] = $entry['accdat']->format('Y-m-d H:i:s'); // Example: '2024-01-02 00:00:00.0'
}
}
// Step 6: Prepare the data for the response
$data = [
'outputGaccentry' => $outputGaccentry,
'outputGaccentryd' => $outputGaccentryd,
];
// Step 3: Send the formatted data as a JSON response
return new JsonResponse($data);
}
#[Route('/bpsupplier', name: 'opp_bpsupplier')]
public function bpsupplier(Request $request): JsonResponse
{
$bpsupplierAdonix = $this->em->getSage()->fetchAllAssociative("SELECT BPSNUM_0 , ENAFLG_0 FROM HCZ.BPSUPPLIER");
// Fetching all existing suppliers of type 'SUPPLIER' in one query
$bPartnerRepository = $this->em->getEntity()->getRepository(Bpartner::class);
$existingSuppliers = $bPartnerRepository->findBy(['type' => 'SUPPLIER']);
// Creating a map of existing suppliers for fast lookup
$existingSuppliersMap = [];
foreach ($existingSuppliers as $supplier) {
$existingSuppliersMap[$supplier->getPartner()] = $supplier;
}
// Processing the bpsupplierAdonix data
foreach ($bpsupplierAdonix as $bpsupplier) {
$partner = $bpsupplier["BPSNUM_0"];
$active = $bpsupplier["ENAFLG_0"];
if (isset($existingSuppliersMap[$partner])) {
$supplier = $existingSuppliersMap[$partner];
if ($supplier->getActive() !== $active) {
$supplier->setActive($active);
$this->em->getEntity()->persist($supplier); // Persist only when there's a change
}
} else {
$creationSupplier = new Bpartner();
$creationSupplier->setPartner($partner);
$creationSupplier->setActive($active);
$creationSupplier->setType("SUPPLIER");
$this->em->getEntity()->persist($creationSupplier);
}
}
// Flush all changes at once
$this->em->getEntity()->flush();
return new JsonResponse(['message' => 'Process supplier completed successfully']);
}
#[Route('/bpcustomer', name: 'app_bpcustomer')]
public function bpcustomer(Request $request): Response
{
$bpcustomerAdonix = $this->em->getSage()->fetchAllAssociative("SELECT BPCNUM_0 , BPCSTA_0 FROM HCZ.BPCUSTOMER");
// Fetching all existing customers of type 'SUPPLIER' in one query
$bPartnerRepository = $this->em->getEntity()->getRepository(Bpartner::class);
$existingCustomers = $bPartnerRepository->findBy(['type' => 'CUSTOMER']);
// Creating a map of existing customers for fast lookup
$existingCustomersMap = [];
foreach ($existingCustomers as $customer) {
$existingCustomersMap[$customer->getPartner()] = $customer;
}
// Processing the bpcustomerAdonix data
foreach ($bpcustomerAdonix as $bpcustomer) {
$partner = $bpcustomer["BPCNUM_0"];
$active = $bpcustomer["BPCSTA_0"];
if (isset($existingCustomersMap[$partner])) {
$customer = $existingCustomersMap[$partner];
if ($customer->getActive() !== $active) {
$customer->setActive($active);
$this->em->getEntity()->persist($customer); // Persist only when there's a change
}
} else {
$creationCustomer = new Bpartner();
$creationCustomer->setPartner($partner);
$creationCustomer->setActive($active);
$creationCustomer->setType("CUSTOMER");
$this->em->getEntity()->persist($creationCustomer);
}
}
// Flush all changes at once
$this->em->getEntity()->flush();
return new JsonResponse(['message' => 'Process customer completed successfully']);
}
#[Route('/PieceControle', name: 'app_PieceControle')]
public function PieceControle(): Response
{
$conditionMet = false;
$Gaccentries = $this->em->getEntity()->getRepository(outputGaccentries::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 > 2025 || $Year == 2023) {
if ($Year < 2024 || $Year > 2025 || $Year == 2024) {
$Gac->setObservationFczFlag6('DIFFĂRENCE DE DATE DE 2025');
$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();
// dd($Gaccentryds);
if ($Gaccentryds->isEmpty()) {
$Gac->setObservationFczFlag6('PIĂCE SANS DET');
$Gac->setFczFlag6(9);
$conditionMet = true;
}else {
foreach ($Gaccentryds as $key => $Gad) {
// dd($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');
}
#[Route('/sage/inserted', name: 'app_sage_inserted')]
public function inserted()
{
try {
$this->em->getSage()->beginTransaction();
$this->em->getInterface()->beginTransaction();
$pieceCaImport = $this->em->getEntity()->getRepository(outputGaccentries::class)->findCAUgouv();
// dd($pieceCaImport);
if ($pieceCaImport) {
foreach ($pieceCaImport as $piece) {
$piece->setFczFlag5(1);
$piece->setFczFlag3(1);
$piece->setFczFlag6(2);
$adonixGaccentry = new sageGaccentries();
$adonixGaccentry->setUPDTICK0("1");
$adonixGaccentry->setTYP0($piece->getTyp());
$adonixGaccentry->setNUM0($piece->getNum());
$adonixGaccentry->setCPY0($piece->getCpy1());
$adonixGaccentry->setFCY0($piece->getFcy1());
$adonixGaccentry->setJOU0($piece->getJou());
$adonixGaccentry->setFIY0(11);
$adonixGaccentry->setPER0(12);
$adonixGaccentry->setBOLLATO0('');
$adonixGaccentry->setYREFE30('');
$adonixGaccentry->setYREFE20('');
$adonixGaccentry->setYREFE10('');
$adonixGaccentry->setYREFE0($piece->getId());
$adonixGaccentry->setACCDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentry->setENTDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentry->setVALDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentry->setDUDDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentry->setBANDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentry->setRATDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentry->setCAT0(1);
$adonixGaccentry->setSTA0(1);
$adonixGaccentry->setFNLPSTDAT0('1753-01-01 00:00:00.000');
$adonixGaccentry->setORIMOD0(2);
$adonixGaccentry->setDACDIA0('STDCO');
$adonixGaccentry->setFLGDAS0(1);
$adonixGaccentry->setFLGFUP0(1);
$adonixGaccentry->setFLGPAZ0(4);
$adonixGaccentry->setFLGREP0(1);
$adonixGaccentry->setFLGGEN0(1);
$adonixGaccentry->setTYPDUD0(2);
$adonixGaccentry->setBANCIB0('');
$adonixGaccentry->setCUR0('MAD');
$adonixGaccentry->setTYPRAT0(1);
$adonixGaccentry->setLED0('RFG');
$adonixGaccentry->setLED1('RFA');
$adonixGaccentry->setLED2('');
$adonixGaccentry->setLED3('');
$adonixGaccentry->setLED4('');
$adonixGaccentry->setLED5('');
$adonixGaccentry->setLED6('');
$adonixGaccentry->setLED7('');
$adonixGaccentry->setLED8('');
$adonixGaccentry->setLED9('');
$adonixGaccentry->setCURLED0('MAD');
$adonixGaccentry->setCURLED1('MAD');
$adonixGaccentry->setCURLED2('');
$adonixGaccentry->setCURLED3('');
$adonixGaccentry->setCURLED4('');
$adonixGaccentry->setCURLED5('');
$adonixGaccentry->setCURLED6('');
$adonixGaccentry->setCURLED7('');
$adonixGaccentry->setCURLED8('');
$adonixGaccentry->setCURLED9('');
$adonixGaccentry->setRATMLT0(1);
$adonixGaccentry->setRATMLT1(0);
$adonixGaccentry->setRATMLT2(0);
$adonixGaccentry->setRATMLT3(0);
$adonixGaccentry->setRATMLT4(0);
$adonixGaccentry->setRATMLT5(0);
$adonixGaccentry->setRATMLT6(0);
$adonixGaccentry->setRATMLT7(0);
$adonixGaccentry->setRATMLT8(0);
$adonixGaccentry->setRATMLT9(0);
$adonixGaccentry->setRATDIV0(1);
$adonixGaccentry->setRATDIV1(0);
$adonixGaccentry->setRATDIV2(0);
$adonixGaccentry->setRATDIV3(0);
$adonixGaccentry->setRATDIV4(0);
$adonixGaccentry->setRATDIV5(0);
$adonixGaccentry->setRATDIV6(0);
$adonixGaccentry->setRATDIV7(0);
$adonixGaccentry->setRATDIV8(0);
$adonixGaccentry->setRATDIV9(0);
$adonixGaccentry->setDESVCR0($piece->getDesvcr());
$adonixGaccentry->setREF0($piece->getRef());
$adonixGaccentry->setBPRVCR0('');
$adonixGaccentry->setBPRDATVCR0('1753-01-01 00:00:00.000');
$adonixGaccentry->setREFSIM0('');
$adonixGaccentry->setREFINT0('');
$adonixGaccentry->setNUMDCL0(0);
$adonixGaccentry->setRVS0(0);
$adonixGaccentry->setRVSDAT0('1753-01-01 00:00:00.000');
$adonixGaccentry->setRVSORITYP0('');
$adonixGaccentry->setRVSORINUM0('');
$adonixGaccentry->setEXPNUM0(1);
$adonixGaccentry->setCREDAT0((new \DateTime())->format('Y-m-d'));
$adonixGaccentry->setCREUSR0('AHAZ');
$adonixGaccentry->setUPDDAT0((new \DateTime())->format('Y-m-d'));
$adonixGaccentry->setUPDUSR0('AHAZ');
$adonixGaccentry->setORIGIN0(3);
$adonixGaccentry->setCREDATTIM0((new \DateTime())->format('Y-m-d H:i:s')); // For current date and time
$adonixGaccentry->setUPDDATTIM0((new \DateTime())->format('Y-m-d H:i:s'));
$adonixGaccentry->setAUUID0('xxxx');
$adonixGaccentry->setFNLPSTNUM0('');
$adonixGaccentry->setFNLPSTNUM1('');
$adonixGaccentry->setFNLPSTNUM2('');
$adonixGaccentry->setFNLPSTNUM3('');
$adonixGaccentry->setFNLPSTNUM4('');
$adonixGaccentry->setFNLPSTNUM5('');
$adonixGaccentry->setFNLPSTNUM6('');
$adonixGaccentry->setFNLPSTNUM7('');
$adonixGaccentry->setFNLPSTNUM8('');
$adonixGaccentry->setFNLPSTNUM9('');
$adonixGaccentry->setPJT0('');
$adonixGaccentry->setORICOD0("YGASANA");
$adonixGaccentry->setYPCNUM0($piece->getCode());
$adonixGaccentry->setYFLG0(0);
$this->em->getAdonix()->persist($adonixGaccentry);
foreach ($piece->getGaccentryds() as $key => $det) {
$adonixGaccentrydPcg = new sageGaccentryd();
$adonixGaccentrydPcg->setUPDTICK0(1);
$adonixGaccentrydPcg->setTYP0($det->getTyp0());
$adonixGaccentrydPcg->setNUM0($det->getNum());
$adonixGaccentrydPcg->setLIN0($det->getLin());
$adonixGaccentrydPcg->setLEDTYP0(1);
$adonixGaccentrydPcg->setLED0('RFG');
$adonixGaccentrydPcg->setACCNUM0($det->getPcg());
$adonixGaccentrydPcg->setCHRNUM0('');
$adonixGaccentrydPcg->setIDTLIN0($det->getLin());
$adonixGaccentrydPcg->setCPY0($piece->getCpy1());
$adonixGaccentrydPcg->setFCYLIN0($piece->getFcy1());
$adonixGaccentrydPcg->setACCDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentrydPcg->setFIY0(11);
$adonixGaccentrydPcg->setPER0(12);
$adonixGaccentrydPcg->setCOA0('PCG');
$adonixGaccentrydPcg->setSAC0($det->getSac() ?? '');
$adonixGaccentrydPcg->setACC0($det->getAcc());
$adonixGaccentrydPcg->setBPR0($det->getBpr() ?? '');
$adonixGaccentrydPcg->setDSP0('');
$adonixGaccentrydPcg->setSNS0($det->getSns());
$adonixGaccentrydPcg->setCUR0('MAD');
$adonixGaccentrydPcg->setAMTCUR0($det->getamtcur());
$adonixGaccentrydPcg->setCURLED0('MAD');
$adonixGaccentrydPcg->setAMTLED0($det->getamtcur());
$adonixGaccentrydPcg->setAMTFLG0(0);
$adonixGaccentrydPcg->setAMTLED10(0);
$adonixGaccentrydPcg->setUOM0('');
$adonixGaccentrydPcg->setQTY0(1);
$adonixGaccentrydPcg->setDES0($det->getDes());
$adonixGaccentrydPcg->setREFINTLIN0('');
$adonixGaccentrydPcg->setOFFACC0('');
$adonixGaccentrydPcg->setCSLCOD0('');
$adonixGaccentrydPcg->setCSLFLO0('');
$adonixGaccentrydPcg->setSTT10('');
$adonixGaccentrydPcg->setSTT20('');
$adonixGaccentrydPcg->setSTT30('');
$adonixGaccentrydPcg->setMTC0('');
$adonixGaccentrydPcg->setMTCDAT0('1753-01-01 00:00:00');
$adonixGaccentrydPcg->setMTCDATMIN0('1753-01-01 00:00:00');
$adonixGaccentrydPcg->setMTCDATMAX0('1753-01-01 00:00:00');
$adonixGaccentrydPcg->setFLGMTC0(0);
$adonixGaccentrydPcg->setFREREF0($det->getFreref0() ?? '');
$adonixGaccentrydPcg->setCHK0('');
$adonixGaccentrydPcg->setCHKDAT0('1753-01-01 00:00:00');
$adonixGaccentrydPcg->setMRK0('');
$adonixGaccentrydPcg->setTAX0('');
$adonixGaccentrydPcg->setTAX20('');
$adonixGaccentrydPcg->setTAX30('');
$adonixGaccentrydPcg->setAMTVAT0(0);
$adonixGaccentrydPcg->setINDEDVAT0(0);
$adonixGaccentrydPcg->setEXPNUM0(1);
$adonixGaccentrydPcg->setACCNUMORI0(0);
$adonixGaccentrydPcg->setACCNUMDOE0(0);
$adonixGaccentrydPcg->setCAPFLOTYP0('');
$adonixGaccentrydPcg->setVATRAT0(0);
$adonixGaccentrydPcg->setVATDEDRAT0(0);
$adonixGaccentrydPcg->setCREDATTIM0((new \DateTime())->format('Y-m-d H:i:s'));
$adonixGaccentrydPcg->setUPDDATTIM0((new \DateTime())->format('Y-m-d H:i:s'));
$adonixGaccentrydPcg->setAUUID0(0xE52EA92BB5832);
$adonixGaccentrydPcg->setCREUSR0('AHAZ');
$adonixGaccentrydPcg->setUPDUSR0('AHAZ');
$adonixGaccentrydPcg->setCSLBPR0('');
$adonixGaccentrydPcg->setPJTLIN0('');
$adonixGaccentrydPcg->setPCCCOD0('');
$adonixGaccentrydPcg->setBSITRS0('');
$adonixGaccentrydPcg->setYLETTR0('');
$adonixGaccentrydPcg->setYBPCANC0('');
$adonixGaccentrydPcg->setYREFE0($piece->getId());
$adonixGaccentrydPcg->setYREFE10($det->getId());
$adonixGaccentrydPcg->setYREFE20('');
$adonixGaccentrydPcg->setYREFE30($det->getFczAccLibelle() ?? '');
$adonixGaccentrydPcg->setAMTCURHIS0(0);
$adonixGaccentrydPcg->setHISACC0($det->getAcc());
$this->em->getAdonix()->persist($adonixGaccentrydPcg);
$adonixGaccentrydPca = clone $adonixGaccentrydPcg;
$adonixGaccentrydPca->setBPR0('');
$adonixGaccentrydPca->setSAC0('');
$adonixGaccentrydPca->setLED0('RFA');
$adonixGaccentrydPca->setCOA0('PCA');
$adonixGaccentrydPca->setACCNUM0($det->getPca());
$adonixGaccentrydPca->setLEDTYP0(2);
$this->em->getAdonix()->persist($adonixGaccentrydPca);
$adonixGaccentrya = new GACCENTRYA();
$adonixGaccentrya->setUPDTICK0(1);
$adonixGaccentrya->setTYP0($det->getTyp0());
$adonixGaccentrya->setNUM0($det->getNum());
$adonixGaccentrya->setLIN0($det->getLin());
$adonixGaccentrya->setLEDTYP0(2);
$adonixGaccentrya->setANALIN0(1);
$adonixGaccentrya->setIDTLIN0($det->getLin());
$adonixGaccentrya->setLED0('RFA');
$adonixGaccentrya->setCPY0($piece->getCpy1());
$adonixGaccentrya->setFCYLIN0($piece->getFcy1());
$adonixGaccentrya->setACCDAT0($this->dateString($piece->getAccdat()));
$adonixGaccentrya->setACCNUM0($det->getPca());
$adonixGaccentrya->setCOA0('PCA');
$adonixGaccentrya->setACC0($det->getAcc());
$adonixGaccentrya->setBPR0('');
$adonixGaccentrya->setDIE0('CCT');
$adonixGaccentrya->setDIE1('');
$adonixGaccentrya->setDIE2('');
$adonixGaccentrya->setDIE3('');
$adonixGaccentrya->setDIE4('');
$adonixGaccentrya->setDIE5('');
$adonixGaccentrya->setDIE6('');
$adonixGaccentrya->setDIE7('');
$adonixGaccentrya->setDIE8('');
$adonixGaccentrya->setCCE0($det->getcce0());
$adonixGaccentrya->setCCE1('');
$adonixGaccentrya->setCCE2('');
$adonixGaccentrya->setCCE3('');
$adonixGaccentrya->setCCE4('');
$adonixGaccentrya->setCCE5('');
$adonixGaccentrya->setCCE6('');
$adonixGaccentrya->setCCE7('');
$adonixGaccentrya->setCCE8('');
$adonixGaccentrya->setSNS0($det->getSns());
$adonixGaccentrya->setCUR0('MAD');
$adonixGaccentrya->setAMTCUR0($det->getamtcur());
$adonixGaccentrya->setCURLED0('MAD');
$adonixGaccentrya->setAMTLED0($det->getamtcur());
$adonixGaccentrya->setUOM0('');
$adonixGaccentrya->setQTY0(0);
$adonixGaccentrya->setACCNUMDOE0(0);
$adonixGaccentrya->setCREDATTIM0((new \DateTime())->format('Y-m-d H:i:s'));
$adonixGaccentrya->setUPDDATTIM0((new \DateTime())->format('Y-m-d H:i:s'));
$adonixGaccentrya->setAUUID0(0xE52EA92BB5832);
$adonixGaccentrya->setCREUSR0('ADMIN');
$adonixGaccentrya->setUPDUSR0('ADMIN');
$adonixGaccentrya->setYREFE0(0);
$adonixGaccentrya->setYREFE10(0);
$adonixGaccentrya->setYREFE20('');
$adonixGaccentrya->setYREFE30('');
$adonixGaccentrya->setAMTCURHIS0(0);
$adonixGaccentrya->setHISACC0('');
$this->em->getAdonix()->persist($adonixGaccentrya);
if (!empty($det->getBpr())) {
$ACCNUM1 = $det->getPcg();
$A7 = "1";
$NUMDUD_0 = $ACCNUM1 . '/' . $A7;
$adonixGaccdudate = new GACCDUDATE();
$adonixGaccdudate->setUPDTICK0(1);
$adonixGaccdudate->setTYP0($det->getTyp0());
$adonixGaccdudate->setNUM0($det->getNum());
$adonixGaccdudate->setLIG0($det->getLin());
$adonixGaccdudate->setDUDLIG0(1);
$adonixGaccdudate->setACCNUM0($det->getPcg());
$adonixGaccdudate->setCPY0($piece->getCpy1());
$adonixGaccdudate->setFCY0($piece->getFcy1());
$adonixGaccdudate->setCUR0('MAD');
$adonixGaccdudate->setSAC0($det->getSac());
$adonixGaccdudate->setBPR0($det->getBpr());
$adonixGaccdudate->setBPRTYP0(2);
$adonixGaccdudate->setBPRPAY0($det->getBpr());
$adonixGaccdudate->setBPAPAY0('A01');
$adonixGaccdudate->setDUDDAT0($this->dateString($piece->getAccdat()));
$adonixGaccdudate->setPAM0('CHQ');
$adonixGaccdudate->setPAMTYP0(1);
$adonixGaccdudate->setDEP0('');
$adonixGaccdudate->setSNS0($det->getSns());
$adonixGaccdudate->setAMTCUR0($det->getAmtcur());
$adonixGaccdudate->setAMTLOC0($det->getAmtcur());
$adonixGaccdudate->setPAYCUR0(0);
$adonixGaccdudate->setPAYLOC0(0);
$adonixGaccdudate->setTMPCUR0(0);
$adonixGaccdudate->setTMPLOC0(0);
$adonixGaccdudate->setFLGFUP0(0);
$adonixGaccdudate->setLEVFUP0(0);
$adonixGaccdudate->setDATFUP0('1753-01-01 00:00:00');
$adonixGaccdudate->setDPTCOD0('');
$adonixGaccdudate->setFLGPAZ0(4);
$adonixGaccdudate->setSOI0(1);
$adonixGaccdudate->setSOINUM0('');
$adonixGaccdudate->setDUDSTA0(2);
$adonixGaccdudate->setDINAMT0(0);
$adonixGaccdudate->setIBDAMT0(0);
$adonixGaccdudate->setVAT0(0);
$adonixGaccdudate->setFIY0(11);
$adonixGaccdudate->setPER0(12);
$adonixGaccdudate->setEXPSENDAT0('1753-01-01 00:00:00');
$adonixGaccdudate->setSENDAT0('1753-01-01 00:00:00');
$adonixGaccdudate->setSENINS0(0);
$adonixGaccdudate->setBPRFCT0('');
$adonixGaccdudate->setFCTVCR0('');
$adonixGaccdudate->setFLGCLE0(1);
$adonixGaccdudate->setPAYDAT0('1753-01-01 00:00:00');
$adonixGaccdudate->setTYPDUD0(3);
$adonixGaccdudate->setNUMDUD0($NUMDUD_0);
$adonixGaccdudate->setCREDAT0((new \DateTime())->format('Y-m-d'));
$adonixGaccdudate->setCREUSR0('AHAZ');
$adonixGaccdudate->setCREDATTIM0((new \DateTime())->format('Y-m-d H:i:s'));
$adonixGaccdudate->setUPDDATTIM0((new \DateTime())->format('Y-m-d H:i:s'));
$adonixGaccdudate->setAUUID0(0x2648915EB8E78C5937A2);
$adonixGaccdudate->setUPDUSR0('AHAZ');
$adonixGaccdudate->setUMRNUM0('');
$adonixGaccdudate->setBELVCS0('');
$adonixGaccdudate->setBIDNUMMAN0('');
$adonixGaccdudate->setBADBTRULE0(0);
$adonixGaccdudate->setYREFE0(0);
$adonixGaccdudate->setYREFE10(0);
$adonixGaccdudate->setYREFE20('');
$adonixGaccdudate->setYREFE30('');
$adonixGaccdudate->setAMTCURHIS0(0);
$adonixGaccdudate->setHISACC0('');
$this->em->getAdonix()->persist($adonixGaccdudate);
}else {
continue;
}
}
}
}
$this->em->getAdonix()->flush();
$this->em->getEntity()->flush();
$this->em->getInterface()->commit();
} catch (Exception $e) {
$this->em->getInterface()->rollBack();
return new JsonResponse("Error: " . $e->getMessage());
}
return new JsonResponse('ok');
}
function dateString($date){
if($date)
if ($date->format('Y') == '-0001' ) return '';
else return $date->format('Y-m-d') ;
else return '';
}
}