From 5e14418ab0e774148da25d73c7509c8188b4322c Mon Sep 17 00:00:00 2001 From: Tiavina Date: Wed, 5 Feb 2025 13:52:48 +0300 Subject: [PATCH] finish group facturation adress , wip column articles in facture recap --- gestion/lib/Db/Bdd.php | 16 +++- .../InvoiceRecap/InvoiceRecapService.php | 82 +++++++++++++------ 2 files changed, 69 insertions(+), 29 deletions(-) diff --git a/gestion/lib/Db/Bdd.php b/gestion/lib/Db/Bdd.php index 107b3c5..f62607b 100644 --- a/gestion/lib/Db/Bdd.php +++ b/gestion/lib/Db/Bdd.php @@ -379,6 +379,7 @@ class Bdd { .$this->tableprefix."facture.id, ".$this->tableprefix."facture.user_id, ".$this->tableprefix."facture.num, ".$this->tableprefix."facture.date, " .$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, " .$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, " + .$this->tableprefix."client.legal_one as client_siret, " .$this->tableprefix."client.mail as mail_client, ".$this->tableprefix."client.entreprise as client_entreprise, ".$this->tableprefix."client.fk_client_group_id as fk_client_group_id, " .$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin," @@ -413,16 +414,25 @@ class Bdd { .$this->tableprefix."devis.num as dnum,".$this->tableprefix."devis.version as adresse_devis,".$this->tableprefix."devis.comment as numero_commande, " .$this->tableprefix."client.adresse as adresse_client, ".$this->tableprefix."devis.date as date_soin, " .$this->tableprefix."client.mail as mail_client, ".$this->tableprefix."client.entreprise as client_entreprise, ".$this->tableprefix."client.fk_client_group_id as fk_client_group_id, " + .$this->tableprefix."client.legal_one as client_siret, " .$this->tableprefix."devis.id_client as id_client, date_paiement, type_paiement, id_devis, ".$this->tableprefix."client.nom as nom, prenom, entreprise, " .$this->tableprefix."lieu.id as lid, ".$this->tableprefix."lieu.nom as lieu,".$this->tableprefix."lieu.adresse as adresse_soin," .$this->tableprefix."defunt.id as id_defunt, ".$this->tableprefix."defunt.nom as nom_defunt," - .$this->tableprefix."facture.version, status_paiement + .$this->tableprefix."facture.version, status_paiement, " + .$this->tableprefix."client_group_facturation.id as group_id, " + .$this->tableprefix."client_group_facturation.group_facturation_name as group_name, " + .$this->tableprefix."client_group_facturation.address as group_address, " + .$this->tableprefix."client_group_facturation.postal_code as group_postal_code, " + .$this->tableprefix."client_group_facturation.city as group_city, " + .$this->tableprefix."client_group_facturation.email as group_email, " + .$this->tableprefix."client_group_facturation.siret_number as group_siret_number FROM (".$this->tableprefix."facture LEFT JOIN ".$this->tableprefix."devis on ".$this->tableprefix."facture.id_devis = ".$this->tableprefix."devis.id) LEFT JOIN ".$this->tableprefix."lieu on ".$this->tableprefix."devis.id_lieu = ".$this->tableprefix."lieu.id LEFT JOIN ".$this->tableprefix."client on ".$this->tableprefix."devis.id_client = ".$this->tableprefix."client.id LEFT JOIN ".$this->tableprefix."defunt on ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id - WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]." + LEFT JOIN ".$this->tableprefix."client_group_facturation on ".$this->tableprefix."client.fk_client_group_facturation_id = ".$this->tableprefix."client_group_facturation.id + WHERE YEAR(".$this->tableprefix."facture.date_paiement) = ".explode('-', string: $date)[2]." AND MONTH(".$this->tableprefix."facture.date_paiement) = ".explode('-', $date)[1]." AND ".$this->tableprefix."client.id = ? ORDER BY date_soin ASC"; $result = $this->execSQL($sql, array($clientId)); return $result; @@ -3687,7 +3697,7 @@ class Bdd { return true; } - private function getClientGroupFacturationById($clientGroupFacturationId){ + public function getClientGroupFacturationById($clientGroupFacturationId){ $sql = "SELECT * FROM ".$this->tableprefix."client_group_facturation as client_group_facturation WHERE client_group_facturation.id = ? ;"; diff --git a/gestion/lib/Service/InvoiceRecap/InvoiceRecapService.php b/gestion/lib/Service/InvoiceRecap/InvoiceRecapService.php index 311ba98..b5d84aa 100644 --- a/gestion/lib/Service/InvoiceRecap/InvoiceRecapService.php +++ b/gestion/lib/Service/InvoiceRecap/InvoiceRecapService.php @@ -88,18 +88,16 @@ class InvoiceRecapService { $storage = $this->rootFolder->getUserFolder($idNextcloud); $doesLogoExist = $this->doesLogoExist(); $doesSignatureExist = $this->doesSignatureImageExists(); - $tvaIntraCommuValue = ""; - $firstClient = $this->gestionBdd->getFirstClient(); - if($firstClient != null){ - $tvaIntraCommuValue = $firstClient["legal_one"]; - } $defaultConfig = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN)); $configurationAddresses = FileExportHelpers::GetAddressAndCityFromAddress($defaultConfig[0]->adresse); $configurationAddress = $configurationAddresses["address"]; $configurationAddressCity = $configurationAddresses["city"]; $factures = json_decode($this->gestionBdd->getClientFacturesByClientGroupFacturationIdAndDate($clientGroupId,$date)); $factures = array_filter($factures, callback: function($facture) {return $facture->id_client != NULL; }); - $groupName = ""; + $clientGroupFacturation = $this->gestionBdd->getClientGroupFacturationById($clientGroupId); + if($clientGroupFacturation == null){ + return null; + } foreach ($factures as $key => $facture) { $facture_temp = array( 'num' => $facture->num, @@ -118,8 +116,7 @@ class InvoiceRecapService { 'montant_htc' => 0, 'tva' => $defaultConfig[0]->tva_default, 'montant_tva' => 0, - 'montant_ttc' => 0, - 'group_facturation_name' => $facture->group_facturation_name + 'montant_ttc' => 0 ); $produits = json_decode($this->gestionBdd->getListProduit($facture->id_devis,$idNextcloud)); $produitsReferenceArray = []; @@ -156,7 +153,6 @@ class InvoiceRecapService { $pdf = new FPDF(); $pdf->AddFont('ComicSans','','Comic Sans MS.php'); $pdf->AddFont('ComicSans','B','comic-sans-bold.php'); - $groupName = $mois[0]['group_facturation_name']; $date_facture = $mois[0]['date_facture']; $date_temp = date("t-m-Y", strtotime($date_facture)); @@ -203,10 +199,16 @@ class InvoiceRecapService { $clientInfoYAxis = 40; $pdf->SetFont('ComicSans','',size: 11); $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); - $pdf->Cell( 0, 7, utf8_decode('Groupe '.$groupName)); + $pdf->Cell( 0, 7, utf8_decode($clientGroupFacturation["group_facturation_name"])); $clientInfoYAxis += 7; $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); + $pdf->Cell( 0, 7, trim(utf8_decode(html_entity_decode($clientGroupFacturation["address"])))); + $clientInfoYAxis += 7; + $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); + $pdf->Cell( 0, 7, trim(utf8_decode(html_entity_decode($clientGroupFacturation["postal_code"]. ' ' .$clientGroupFacturation["city"])))); // date facture + $clientInfoYAxis += 7; + $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); $pdf->Cell( 0, 7, "Saint Senoux, le ".utf8_decode($date_formated)); // observations @@ -291,7 +293,19 @@ class InvoiceRecapService { $clientInfoYAxis = 40; $pdf->SetFont('ComicSans','',size: 11); $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); - $pdf->Cell( 0, 7, utf8_decode('Groupe '.$groupName)); + $pdf->Cell( 0, 7, utf8_decode('Groupe '.$clientGroupFacturation["group_facturation_name"])); + $clientInfoYAxis += 7; + $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); + $pdf->Cell( 0, 7, trim(utf8_decode(html_entity_decode($clientGroupFacturation["address"])))); + $clientInfoYAxis += 7; + $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); + $pdf->Cell( 0, 7, trim(utf8_decode(html_entity_decode($clientGroupFacturation["postal_code"]. ' '.$clientGroupFacturation["city"])))); + $clientInfoYAxis += 7; + $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); + $pdf->Cell( 0, 7, FileExportHelpers::FormatTextForExport('Numéro') . ' Siret: ' . FileExportHelpers::FormatTextForExport($clientGroupFacturation["siret_number"])); + $clientInfoYAxis += 7; + $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); + $pdf->Cell( 0, 7, 'Email: ' . utf8_decode(html_entity_decode($clientGroupFacturation["email"])),0,1); // *********************** // le cadre des articles @@ -406,7 +420,7 @@ class InvoiceRecapService { strtoupper( FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1]) ). - '/GROUPE_'.$groupName.'_RECAP_FACTURE_'.strtoupper( + '/GROUPE_'.$clientGroupFacturation["group_facturation_name"].'_RECAP_FACTURE_'.strtoupper( FileExportHelpers::ConvertSpecialChar(explode(' ', $date_formated)[1]) ).'_'.$key_annee.'.pdf'; $storage->newFile($ff_pdf); @@ -422,11 +436,6 @@ class InvoiceRecapService { $data_factures = []; $storage = $this->rootFolder->getUserFolder($idNextcloud); $doesLogoExist = $this->doesLogoExist(); - $tvaIntraCommuValue = ""; - $firstClient = $this->gestionBdd->getFirstClient(); - if($firstClient != null){ - $tvaIntraCommuValue = $firstClient["legal_one"]; - } $defaultConfig = json_decode($this->gestionBdd->getConfiguration(self::DEFAULT_NEXTCLOUD_ADMIN)); $configurationAddresses = FileExportHelpers::GetAddressAndCityFromAddress($defaultConfig[0]->adresse); $configurationAddress = $configurationAddresses["address"]; @@ -455,6 +464,14 @@ class InvoiceRecapService { 'tva' => $defaultConfig[0]->tva_default, 'montant_tva' => 0, 'montant_ttc' => 0, + "group_id" => $facture->group_id, + "group_name" => $facture->group_name, + "group_address" => $facture->group_address, + "group_email" => $facture->group_email, + "group_city" => $facture->group_city, + "group_postal_code" => $facture->group_postal_code, + "group_siret_number" => $facture->group_siret_number, + "client_siret" => $facture->client_siret ); $produits = json_decode($this->gestionBdd->getListProduit($facture->id_devis,$idNextcloud)); $produitsReferenceArray = []; @@ -493,19 +510,32 @@ class InvoiceRecapService { $pdf->AddFont('ComicSans','','Comic Sans MS.php'); $pdf->AddFont('ComicSans','B','comic-sans-bold.php'); $current_client = ''; + $clientHeaderLabel = ''; $clientAddress = ''; $clientCity = ''; + $tvaIntraCommuValue = ''; + $clientMail = ''; $date_facture; - $j=1; foreach ($client as $key => $facture) { - if($j==1) { - $current_client = $facture['nom_client']; - $date_facture = $facture['date_facture']; + $current_client = $facture['nom_client']; + $clientHeaderLabel = $current_client; + $date_facture = $facture['date_facture']; + $isClientInsideGroup = $facture["group_id"] != null; + if($isClientInsideGroup){ + $clientHeaderLabel = $facture["group_name"]; + $clientAddress = $facture["group_address"]; + $clientCity = $facture["group_postal_code"]. " ".$facture["group_city"]; + $tvaIntraCommuValue = $facture["group_siret_number"]; + $clientMail = $facture["group_email"]; + } + else{ $clientAddresses = FileExportHelpers::GetAddressAndCityFromAddress($facture['adresse_client']); $clientAddress = $clientAddresses['address']; $clientCity = $clientAddresses['city']; + $tvaIntraCommuValue = $facture["client_siret"]; + $clientMail = $facture['mail_client']; } - $j++; + break; } $date_temp = date("t-m-Y", strtotime($date_facture)); $formatter = new IntlDateFormatter('fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::NONE); @@ -551,7 +581,7 @@ class InvoiceRecapService { $clientInfoYAxis = 40; $pdf->SetFont('ComicSans','',size: 11); $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); - $pdf->Cell( 0, 7, utf8_decode($current_client)); + $pdf->Cell( 0, 7, utf8_decode($clientHeaderLabel)); $clientInfoYAxis += 7; $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); $pdf->Cell( 0, 7, trim(utf8_decode(html_entity_decode($clientAddress)))); @@ -581,7 +611,7 @@ class InvoiceRecapService { // signature $pdf->SetFont('ComicSans','',11); $pdf->SetXY( 145, 145 ); $pdf->Cell( $pdf->GetStringWidth($defaultConfig[0]->nom.' '.$defaultConfig[0]->prenom), 0, utf8_decode(html_entity_decode($defaultConfig[0]->nom.' '.$defaultConfig[0]->prenom)), 0, 0, 'L'); - $signatureExists = $this->doesSignatureImageExists('sign.png'); + $signatureExists = $this->doesSignatureImageExists(); if($signatureExists){ $pdf->Image($this->defaultImagePath."sign.png", 135, 150, 60,40); } @@ -645,7 +675,7 @@ class InvoiceRecapService { $clientInfoYAxis = 40; $pdf->SetFont('ComicSans','',size: 11); $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); - $pdf->Cell( 0, 7, utf8_decode($current_client)); + $pdf->Cell( 0, 7, utf8_decode($clientHeaderLabel)); $clientInfoYAxis += 7; $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); $pdf->Cell( 0, 7, trim(utf8_decode(html_entity_decode($clientAddress)))); @@ -657,7 +687,7 @@ class InvoiceRecapService { $pdf->Cell( 0, 7, FileExportHelpers::FormatTextForExport('Numéro') . ' Siret: ' . FileExportHelpers::FormatTextForExport($tvaIntraCommuValue)); $clientInfoYAxis += 7; $pdf->SetXY($clientInfoXAxis,$clientInfoYAxis); - $pdf->Cell( 0, 7, 'Email: ' . utf8_decode(html_entity_decode($facture['mail_client'])),0,1); + $pdf->Cell( 0, 7, 'Email: ' . utf8_decode(html_entity_decode($clientMail)),0,1); // *********************** // le cadre des articles