diff --git a/gestion/lib/Db/Bdd.php b/gestion/lib/Db/Bdd.php index 948ba33..27cb40a 100644 --- a/gestion/lib/Db/Bdd.php +++ b/gestion/lib/Db/Bdd.php @@ -5318,7 +5318,7 @@ COMMENTAIRES: ".$comment; $configuration = $this->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD); $configuration = json_decode($configuration); $currentConfig = $configuration[0]; - $tvaValue = $currentConfig->tva_default; + $isFactureSingleClient = $facture['fk_client_id'] != null && $facture['fk_client_id'] != 0; @@ -5329,6 +5329,21 @@ COMMENTAIRES: ".$comment; $devis = $this->getDevisByFkFactureId($factureId); $factureGroupIsRelatedToAnyDevis = $devis != null; + // LOGIQUE TVA SIMPLIFIÉE + $tvaValue = 0; + $isTvaApplicable = false; + + // Récupérer le statut TVA du client de cette facture + $clientId = $facture['fk_client_id']; + if ($clientId != null && $clientId != 0) { + $client = $this->getClientById($clientId); + + // is_tva = 0 → Pas de TVA, is_tva = 1 → TVA par défaut + if (isset($client['is_tva']) && $client['is_tva'] == 1) { + $isTvaApplicable = true; + $tvaValue = (float)$currentConfig->tva_default; + } + } if($isFactureSingleClient) { $client = $this->getClientById($facture['fk_client_id']); @@ -5337,6 +5352,7 @@ COMMENTAIRES: ".$comment; $facture['client_address'] = $client["client_address"]; $facture['siret'] = $client["client_legal_one"]; $facture['mail'] = $client["client_mail"]; + if (!$factureGroupIsRelatedToAnyDevis) { $devisList = $this->getDevisDataByClientIdAndMonthYear( $facture['fk_client_id'], @@ -5344,7 +5360,6 @@ COMMENTAIRES: ".$comment; $facture['year'], $devisMentionFilters ); - } else { $devisList = $this->getDevisDataGroupByFactureId($factureId, $devisMentionFilters); } @@ -5355,6 +5370,7 @@ COMMENTAIRES: ".$comment; $facture['client_address'] = $clientGroupFacturation["address"] . ' - ' .$clientGroupFacturation["postal_code"] . ' ' . $clientGroupFacturation['city']; $facture['siret'] = $clientGroupFacturation["siret_number"]; $facture['mail'] = $clientGroupFacturation["email"]; + if (!$factureGroupIsRelatedToAnyDevis) { $devisList = $this->getDevisDataByClientGroupFacturationIdAndMonthYear( $facture['fk_client_group_facturation_id'], @@ -5366,22 +5382,36 @@ COMMENTAIRES: ".$comment; $devisList = $this->getDevisDataGroupByFactureId($factureId, $devisMentionFilters); } } + $factureTotalHt = 0; $factureTotalTva = 0; $factureTotalTtc = 0; + foreach($devisList as &$currentDevis) { $totalHt = 0; $totalTva = 0; $totalTtc = 0; $devisProducts = $this->getDevisProduits($currentDevis['devis_id']); + foreach($devisProducts as $currentProduct) { $valueHt = $currentProduct['produit_price'] * $currentProduct['quantite']; - $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt, $tvaValue); + + // CALCUL SIMPLE : TVA OU PAS TVA + if ($isTvaApplicable) { + // Client soumis à TVA : utiliser le taux par défaut + $valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt, $tvaValue); + $tvaAmount = $valueTtc - $valueHt; + } else { + // Client exonéré : TTC = HT + $valueTtc = $valueHt; + $tvaAmount = 0; + } + $totalHt += $valueHt; $totalTtc += $valueTtc; - $tvaAmount = $valueTtc - $valueHt; $totalTva += $tvaAmount; } + $currentDevis["totalHt"] = $totalHt; $currentDevis["totalTtc"] = $totalTtc; $currentDevis["totalTva"] = $totalTva; @@ -5390,10 +5420,19 @@ COMMENTAIRES: ".$comment; $factureTotalTva += $totalTva; $facture["devisList"][] = $currentDevis; } + $facture["totalHt"] = $factureTotalHt; $facture["totalTtc"] = $factureTotalTtc; $facture["totalTva"] = $factureTotalTva; $facture["isFactureClientGroup"] = !$isFactureSingleClient; + + // INFOS TVA POUR LE TEMPLATE + $facture["tvaInfo"] = [ + 'is_applicable' => $isTvaApplicable, + 'rate' => $tvaValue, + 'is_exempt' => !$isTvaApplicable + ]; + return $facture; } diff --git a/gestion/templates/content/factureGroupDetails.php b/gestion/templates/content/factureGroupDetails.php index a43b6b2..39699dd 100644 --- a/gestion/templates/content/factureGroupDetails.php +++ b/gestion/templates/content/factureGroupDetails.php @@ -2,16 +2,17 @@ use OC\URLGenerator; use OCA\Gestion\Helpers\PriceHelpers; + $facture = $_['facture']; $factureOrderNumber = $facture->facture_order_number == '' ? '-' : $facture->facture_order_number; $factureCaseNumber = $facture->facture_case_number == '' ? '-' : $facture->facture_case_number; -$isFactureClientGroup = $facture->isFactureClientGroup; +$isFactureClientGroup = $facture->isFactureClientGroup; $currentConfig = json_decode($_['configuration'])[0]; ?>
-

num); ?> +

num); ?>


@@ -34,7 +35,7 @@ $currentConfig = json_decode($_['configuration'])[0]; } else { echo ""; } - ?> +?>
t('TO')); ?> @@ -42,7 +43,7 @@ $currentConfig = json_decode($_['configuration'])[0];

group_name; ?>
- client_name; ?>
@@ -88,8 +89,8 @@ $currentConfig = json_decode($_['configuration'])[0]; devisList; - foreach ($devisList as $currentDevis) { - ?> +foreach ($devisList as $currentDevis) { + ?> devis_full_number; ?> defunt_nom; ?> @@ -113,26 +114,43 @@ $currentConfig = json_decode($_['configuration'])[0]; class="mb-2 btn btn-outline-success sendmail" >t('Send by email'));?>

-
- - - - - - - - - - - - - - - - - -
t('Total without VAT')); ?>t('VAT Rate')); ?>t('Total VAT')); ?>t('Total Price')); ?>
totalHt).'€'); ?>tva_default).'€'); ?>totalTva).'€'); ?>totalTtc).'€'); ?>
-
+
+ + + + + + + + + + + + + + + + + +
t('Total without VAT')); ?>t('VAT Rate')); ?>t('Total VAT')); ?>t('Total Price')); ?>
totalHt).'€'; ?> + tvaInfo) && $facture->tvaInfo->is_exempt) { + echo 'Exonéré'; + } else { + echo PriceHelpers::formatDecimalPrice($facture->tvaInfo->rate).'%'; + } +?> + + tvaInfo) && $facture->tvaInfo->is_exempt) { + echo '0,00€'; +} else { + echo PriceHelpers::formatDecimalPrice($facture->totalTva).'€'; +} +?> + totalTtc).'€'; ?>
+

t('Please set in global configuration')); ?>