diff --git a/gestion/lib/Controller/PageController.php b/gestion/lib/Controller/PageController.php index e20251a..4712966 100644 --- a/gestion/lib/Controller/PageController.php +++ b/gestion/lib/Controller/PageController.php @@ -2570,7 +2570,9 @@ class PageController extends Controller private function refreshFEC() { + $current_config = json_decode($this->myDb->getConfiguration($this->idNextcloud)); + $clean_folder = html_entity_decode($current_config[0]->path).'/'; try { @@ -2581,11 +2583,6 @@ class PageController extends Controller foreach ($factures as $key => $facture) { $factureIsSingle = $facture->facture_type == FactureTypeConstant::TYPE_SINGLE; - // Logique TVA : si tva = 0 alors 0%, si tva = 1 alors taux par défaut - $tva_rate = 0; // Par défaut - if (isset($facture->tva) && $facture->tva == 1) { - $tva_rate = isset($current_config[0]->tva_default) ? floatval($current_config[0]->tva_default) : 0; - } $facture_temp = array( 'num' => $facture->num, @@ -2595,27 +2592,41 @@ class PageController extends Controller 'date_facture' => $facture->date_paiement, 'defunt' => $facture->nom_defunt, 'montant_htc' => 0, - 'tva' => $tva_rate, // Utiliser le taux calculé + 'tva' => $current_config[0]->tva_default, 'montant_tva' => 0, 'montant_ttc' => 0, ); if($factureIsSingle) { + + + + + + + + + $produits = json_decode($this->getProduitsById($facture->id_devis)); foreach ($produits as $key => $produit) { - $htPrice = isset($produit->prix_unitaire) ? floatval($produit->prix_unitaire) : 0; + $htPrice = $produit->prix_unitaire; if($facture->fk_client_group_id != null || $facture->fk_client_group_id != 0) { $price = $this->myDb->getProductPriceByClientGroupId($facture->fk_client_group_id, $produit->id); if($price != null) { - $htPrice = floatval($price); + $htPrice = $price; } } - $quantite = isset($produit->quantite) ? floatval($produit->quantite) : 0; - $facture_temp['montant_htc'] += $htPrice * $quantite; + $facture_temp['montant_htc'] += $htPrice * $produit->quantite; }; $facture_temp['montant_tva'] = ($facture_temp['montant_htc'] * $facture_temp['tva']) / 100; $facture_temp['montant_ttc'] = $facture_temp['montant_tva'] + $facture_temp['montant_htc']; + + + } else { + + + $devis = $this->myDb->getDevisByFkFactureId($facture->id); $factureGroupIsRelatedToAnyDevis = $devis != null; $mentionFilters = [ @@ -2623,6 +2634,7 @@ class PageController extends Controller DevisMentionConstant::FACTURED_FORMATTED ]; + $isFactureGroupForSingleClient = $facture->facture_client_id != null && $facture->facture_client_id != 0; if($isFactureGroupForSingleClient) { $facture_temp["client"] = $facture->facture_client_entreprise; @@ -2658,17 +2670,29 @@ class PageController extends Controller } foreach($devisList as $currentDevis) { + + + + + + + + $produits = json_decode($this->getProduitsById($currentDevis['id'])); foreach ($produits as $key => $produit) { - $htPrice = isset($produit->prix_unitaire) ? floatval($produit->prix_unitaire) : 0; + $htPrice = $produit->prix_unitaire; if($currentDevis["fk_client_group_id"] != null || $currentDevis["fk_client_group_id"] != 0) { $price = $this->myDb->getProductPriceByClientGroupId($currentDevis["fk_client_group_id"], $produit->id); if($price != null) { - $htPrice = floatval($price); + $htPrice = $price; } } - $quantite = isset($produit->quantite) ? floatval($produit->quantite) : 0; - $facture_temp['montant_htc'] += $htPrice * $quantite; + $facture_temp['montant_htc'] += $htPrice * $produit->quantite; + + + + + }; } $facture_temp['montant_tva'] = ($facture_temp['montant_htc'] * $facture_temp['tva']) / 100; @@ -2677,7 +2701,6 @@ class PageController extends Controller array_push($data_factures, $facture_temp); }; - $data_temp = array(); foreach ($data_factures as $key => $facture) { $datesplit = explode('-', $facture['date_facture']); @@ -2691,7 +2714,7 @@ class PageController extends Controller } } } - + // var_dump($data_temp); //parcours annee foreach ($data_temp as $key_annee => $annee) { //parcours annee @@ -2703,8 +2726,8 @@ class PageController extends Controller foreach ($annee as $key_mois => $mois) { $fec_temp_txt = 'Code journal'.TAB1.utf8_decode('Date écriture').TAB1.'Code compte'.TAB1.utf8_decode('Intitulé compte').TAB1.utf8_decode('Pièce').TAB1.utf8_decode('Libellé écriture').TAB1.utf8_decode('Débit origine').TAB1.utf8_decode('Crédit origine').TAB1.utf8_decode('Débit euro').TAB1.utf8_decode('Crédit euro').TAB1.'Lettrage'.TAB1.'Lettrage n+1'.TAB1.'Lettrage partiel'.TAB1.'Monnaie'.TAB1.'ISO Monnaie'.TAB1.'taux change'.TAB1.'Section analytique 1'.TAB1.'Section analytique 2'.TAB1.'Section analytique 3'.PHP_EOL.PHP_EOL; + // $fec_temp = 'NUMERO'.';'.'CLIENT'.';'.'DEFUNT'.';'.'DATE'.';'.'MONTANTHTC'.';'.'TVA'.';'.'MONTANTTVA'.';'.'MONTANTTTC'."\n"; $fec_temp = 'Code journal'.';'.utf8_decode('Date écriture').';'.'Code compte'.';'.utf8_decode('Intitulé compte').';'.utf8_decode('Pièce').';'.utf8_decode('Libellé écriture').';'.utf8_decode('Débit origine').';'.utf8_decode('Crédit origine').';'.utf8_decode('Débit euro').';'.utf8_decode('Crédit euro').';'.'Lettrage'.';'.'Lettrage n+1'.';'.'Lettrage partiel'.';'.'Monnaie'.';'.'ISO Monnaie'.';'.'taux change'.';'.'Section analytique 1'.';'.'Section analytique 2'.';'.'Section analytique 3'."\n\n"; - foreach ($mois as $key => $facture) { $fec_temp_txt = $fec_temp_txt.'VT'.TAB1.$facture['date_facture'].TAB1.$facture['client'].TAB1.$facture['client'].TAB1.$facture['num'].TAB1.$facture['nom_client'].TAB1.$facture['montant_ttc'].TAB1.'0'.TAB1.$facture['montant_htc'].TAB1.'0'.TAB1.''.TAB1.'FAUX'.TAB1.'FAUX'.TAB1.'E'.TAB1.''.TAB1.'1'.TAB1.''.TAB1.''.TAB1.''.PHP_EOL.PHP_EOL; $fec_temp_txt = $fec_temp_txt.'VT'.TAB1.$facture['date_facture'].TAB1.'706000'.TAB1.'VENTES DE MARCHANDISES'.TAB1.$facture['num'].TAB1.$facture['client'].TAB1.'0'.TAB1.$facture['montant_htc'].TAB1.'0'.TAB1.$facture['montant_htc'].TAB1.''.TAB1.'FAUX'.TAB1.'FAUX'.TAB1.'E'.TAB1.''.TAB1.'1'.TAB1.''.TAB1.''.TAB1.''.PHP_EOL.PHP_EOL; @@ -2714,7 +2737,6 @@ class PageController extends Controller $fec_temp = $fec_temp.'VT'.';'.$facture['date_facture'].';706000;VENTES DE MARCHANDISES;'.$facture['num'].';'.$facture['client'].';0;'.$facture['montant_htc'].';0;'.$facture['montant_htc'].';'.''.';'.'FAUX'.';'.'FAUX'.';'.'E'.';'.''.';'.'1'.';'.''.';'.''.';'.''."\n\n"; $fec_temp = $fec_temp.'VT'.';'.$facture['date_facture'].';445710;;'.$facture['num'].';'.$facture['client'].';;'.$facture['montant_tva'].';;'.$facture['montant_tva'].";;;;;;;;;\n\n"; } - $ff = $_clean_folder.'FEC_'.$key_mois.'_'.$key_annee.'.csv'; $this->storage->newFile($ff); $file = $this->storage->get($ff); @@ -2724,16 +2746,19 @@ class PageController extends Controller $this->storage->newFile($ff_txt); $file_txt = $this->storage->get($ff_txt); $file_txt->putContent($fec_temp_txt); + // $file->putContent(implode(';', array('Jane Smith', 'janesmith@example.com', '555-5678')) . "\n"); } } } catch(\OCP\Files\NotFoundException $e) { } + } catch(\OCP\Files\NotPermittedException $e) { } } + private function signatureImageExists(string $signatureImageName) { diff --git a/gestion/lib/Db/Bdd.php b/gestion/lib/Db/Bdd.php index 3ce0b79..2cf2c1c 100644 --- a/gestion/lib/Db/Bdd.php +++ b/gestion/lib/Db/Bdd.php @@ -488,15 +488,6 @@ class Bdd client.adresse as adresse_cli,client.mail as mail_cli, client.telephone as telephone_cli,client.legal_one as legalone_cli, client.fk_client_group_id as fk_client_group_id, - - COALESCE( - client.is_tva, - CASE - WHEN facture.fk_client_group_facturation_id IS NOT NULL THEN client_group_tva.is_tva - ELSE facture_client.is_tva - END - ) as tva, - defunt.id as id_defunt, defunt.nom as nom_defunt, lieu.id as lid, @@ -511,7 +502,6 @@ class Bdd LEFT JOIN ".$this->tableprefix."facture_status as facture_status on facture.fk_facture_status_key = facture_status.facture_status_key LEFT JOIN ".$this->tableprefix."client as facture_client on facture.fk_client_id = facture_client.id LEFT JOIN ".$this->tableprefix."client_group_facturation as facture_client_group_facturation on facture.fk_client_group_facturation_id = facture_client_group_facturation.id - LEFT JOIN ".$this->tableprefix."client as client_group_tva on facture.fk_client_group_facturation_id = client_group_tva.fk_client_group_facturation_id ORDER BY facture.id DESC, facture.date_paiement DESC"; $result = $this->execSQL($sql, array()); return $result; @@ -5520,22 +5510,21 @@ COMMENTAIRES: ".$comment; return $devisList; } - public function getDevisIdsGroupByFactureId($factureId, $mentionFilters = []) - { + public function getDevisIdsGroupByFactureId($factureId,$mentionFilters = []){ $sql = "SELECT devis.id FROM ".$this->tableprefix."devis as devis WHERE devis.fk_facture_id = ? "; $conditions = [$factureId]; - if(!empty($mentionFilters)) { + if(!empty($mentionFilters)){ $mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?')); $sql .= " AND devis.mentions IN ($mentionsFilterPlaceholders)"; $conditions = array_merge($conditions, $mentionFilters); } - $sql .= ";"; - $devisList = $this->execSQLNoJsonReturn($sql, $conditions); + $sql.= ";"; + $devisList = $this->execSQLNoJsonReturn($sql,$conditions); $devisIds = []; - foreach($devisList as $devis) { + foreach($devisList as $devis){ $devisIds[] = $devis['id']; } return $devisIds; @@ -6104,7 +6093,7 @@ COMMENTAIRES: ".$comment; private function getProductsTotalPrices($products) { $configs = json_decode($this->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD)); - $currentConfig = $configs[0]; + $currentConfig = $configs[0]; $totalHt = 0; $totalTtc = 0; foreach ($products as $product) { @@ -6120,12 +6109,11 @@ COMMENTAIRES: ".$comment; ]; } - private function getDevisIdsListByFactureId($factureId) - { + private function getDevisIdsListByFactureId($factureId){ $factureData = $this->getFactureByFactureId(factureId: $factureId); $isFactureGroupOfDevis = $factureData["facture_type"] == FactureTypeConstant::TYPE_GROUP; $factureDevisIdsList = []; - if($isFactureGroupOfDevis) { + if($isFactureGroupOfDevis){ $isFactureForSingleClient = $factureData['fk_client_id'] != null && $factureData['fk_client_id'] != 0; $devisMentionFilters = [ DevisMentionConstant::FACTURED_FORMATTED, @@ -6134,25 +6122,24 @@ COMMENTAIRES: ".$comment; $devis = $this->getDevisByFkFactureId($factureId); $factureGroupIsRelatedToAnyDevis = $devis != null; if (!$factureGroupIsRelatedToAnyDevis) { - if($isFactureForSingleClient) { + if($isFactureForSingleClient){ $factureDevisIdsList = $this->getDevisIdsByClientIdAndMonthYear( $factureData['fk_client_id'], $factureData['month'], - $factureData['year'], - $devisMentionFilters + $factureData['year'],$devisMentionFilters ); - } else { + }else{ $factureDevisIdsList = $this->getDevisIdsByClientGroupFacturationIdAndMonthYear( $factureData['fk_client_group_facturation_id'], - $factureData['month'], - $factureData['year'], - $devisMentionFilters - ); + $factureData['month'], + $factureData['year'],$devisMentionFilters + ); } - } else { - $factureDevisIdsList = $this->getDevisIdsGroupByFactureId($factureId, $devisMentionFilters); + }else{ + $factureDevisIdsList = $this->getDevisIdsGroupByFactureId($factureId, $devisMentionFilters ); } - } else { + } + else{ $factureDevisIdsList = $factureData['id_devis'] ? [$factureData['id_devis']] : []; } return $factureDevisIdsList; @@ -6164,8 +6151,8 @@ COMMENTAIRES: ".$comment; $totalHt = 0; $totalTtc = 0; $tva = 0; - foreach($factureDevisIds as $devisId) { - $clientTvaStatus = $this->getClientTvaStatus($devisId, BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD); + foreach($factureDevisIds as $devisId){ + $clientTvaStatus = $this->getClientTvaStatus($devisId,BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD); $products = $this->getDevisProduits($devisId); $totalPrices = $this->getProductsTotalPrices($products); $totalHt += $totalPrices["total_ht"];