dv thanato list ttc value in facture list
This commit is contained in:
parent
3321ec6966
commit
7422890c87
@ -513,6 +513,7 @@ class Bdd
|
|||||||
foreach($facturesList as $currentFacture) {
|
foreach($facturesList as $currentFacture) {
|
||||||
$produits = $this->getProduitsDevisByDevisId($currentFacture->id_devis);
|
$produits = $this->getProduitsDevisByDevisId($currentFacture->id_devis);
|
||||||
$currentFacture->produits = $produits;
|
$currentFacture->produits = $produits;
|
||||||
|
$currentFacture->totalPrices = $this->getFactureTotalPrices($currentFacture->id);
|
||||||
}
|
}
|
||||||
return json_encode($facturesList);
|
return json_encode($facturesList);
|
||||||
}
|
}
|
||||||
@ -4944,7 +4945,7 @@ COMMENTAIRES: ".$comment;
|
|||||||
$conditions = [$clientGroupFacturationId,$year,$month];
|
$conditions = [$clientGroupFacturationId,$year,$month];
|
||||||
if(!empty($mentionFilters)) {
|
if(!empty($mentionFilters)) {
|
||||||
$mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?'));
|
$mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?'));
|
||||||
$sql .= " AND ". $this->tableprefix."devis.mentions IN ($mentionsFilterPlaceholders)";
|
$sql .= " AND "."devis.mentions IN ($mentionsFilterPlaceholders)";
|
||||||
$conditions = array_merge($conditions, $mentionFilters);
|
$conditions = array_merge($conditions, $mentionFilters);
|
||||||
}
|
}
|
||||||
$sql .= ";";
|
$sql .= ";";
|
||||||
@ -5172,6 +5173,26 @@ COMMENTAIRES: ".$comment;
|
|||||||
return $devisList;
|
return $devisList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)){
|
||||||
|
$mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?'));
|
||||||
|
$sql .= " AND devis.mentions IN ($mentionsFilterPlaceholders)";
|
||||||
|
$conditions = array_merge($conditions, $mentionFilters);
|
||||||
|
}
|
||||||
|
$sql.= ";";
|
||||||
|
$devisList = $this->execSQLNoJsonReturn($sql,$conditions);
|
||||||
|
$devisIds = [];
|
||||||
|
foreach($devisList as $devis){
|
||||||
|
$devisIds[] = $devis['id'];
|
||||||
|
}
|
||||||
|
return $devisIds;
|
||||||
|
}
|
||||||
|
|
||||||
public function getDevisDataGroupByFactureId($factureId, $mentionFilters = [])
|
public function getDevisDataGroupByFactureId($factureId, $mentionFilters = [])
|
||||||
{
|
{
|
||||||
$sql = "SELECT
|
$sql = "SELECT
|
||||||
@ -5723,4 +5744,80 @@ COMMENTAIRES: ".$comment;
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getProductsTotalPrices($products)
|
||||||
|
{
|
||||||
|
$configs = json_decode($this->getConfiguration(BddConstant::DEFAULT_ADMIN_ID_NEXTCLOUD));
|
||||||
|
$currentConfig = $configs[0];
|
||||||
|
$totalHt = 0;
|
||||||
|
$totalTtc = 0;
|
||||||
|
foreach ($products as $product) {
|
||||||
|
$valueHt = $product['produit_price'] * $product['quantite'];
|
||||||
|
$valueTtc = PriceHelpers::calculPriceWithVatValue($valueHt, $currentConfig->tva_default);
|
||||||
|
$totalHt += $valueHt;
|
||||||
|
$totalTtc += $valueTtc;
|
||||||
|
}
|
||||||
|
return [
|
||||||
|
"total_ht" => $totalHt,
|
||||||
|
"total_ttc" => $totalTtc,
|
||||||
|
"tva" => $currentConfig->tva_default
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getDevisIdsListByFactureId($factureId){
|
||||||
|
$factureData = $this->getFactureByFactureId(factureId: $factureId);
|
||||||
|
$isFactureGroupOfDevis = $factureData["facture_type"] == FactureTypeConstant::TYPE_GROUP;
|
||||||
|
$factureDevisIdsList = [];
|
||||||
|
if($isFactureGroupOfDevis){
|
||||||
|
$isFactureForSingleClient = $factureData['fk_client_id'] != null && $factureData['fk_client_id'] != 0;
|
||||||
|
$devisMentionFilters = [
|
||||||
|
DevisMentionConstant::FACTURED_FORMATTED,
|
||||||
|
DevisMentionConstant::FACTURED
|
||||||
|
];
|
||||||
|
$devis = $this->getDevisByFkFactureId($factureId);
|
||||||
|
$factureGroupIsRelatedToAnyDevis = $devis != null;
|
||||||
|
if (!$factureGroupIsRelatedToAnyDevis) {
|
||||||
|
if($isFactureForSingleClient){
|
||||||
|
$factureDevisIdsList = $this->getDevisIdsByClientIdAndMonthYear(
|
||||||
|
$factureData['fk_client_id'],
|
||||||
|
$factureData['month'],
|
||||||
|
$factureData['year'],$devisMentionFilters
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
$factureDevisIdsList = $this->getDevisIdsByClientGroupFacturationIdAndMonthYear(
|
||||||
|
$factureData['fk_client_group_facturation_id'],
|
||||||
|
$factureData['month'],
|
||||||
|
$factureData['year'],$devisMentionFilters
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$factureDevisIdsList = $this->getDevisIdsGroupByFactureId($factureId, $devisMentionFilters );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$factureDevisIdsList = $factureData['id_devis'] ? [$factureData['id_devis']] : [];
|
||||||
|
}
|
||||||
|
return $factureDevisIdsList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getFactureTotalPrices($factureId)
|
||||||
|
{
|
||||||
|
$factureDevisIds = $this->getDevisIdsListByFactureId($factureId);
|
||||||
|
$totalHt = 0;
|
||||||
|
$totalTtc = 0;
|
||||||
|
$tva = 0;
|
||||||
|
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"];
|
||||||
|
$totalTtc += $clientTvaStatus == 1 ? $totalPrices["total_ttc"] : $totalPrices["total_ht"];
|
||||||
|
$tva = $totalPrices["tva"];
|
||||||
|
}
|
||||||
|
return [
|
||||||
|
"total_ht" => PriceHelpers::formatDecimalPriceWithCurrency($totalHt),
|
||||||
|
"total_ttc" => PriceHelpers::formatDecimalPriceWithCurrency($totalTtc),
|
||||||
|
"tva" => PriceHelpers::formatDecimalPriceWithCurrency($tva)
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,4 +17,9 @@ class PriceHelpers
|
|||||||
return number_format($price,2,'.','');
|
return number_format($price,2,'.','');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function formatDecimalPriceWithCurrency($price,$currency = '€')
|
||||||
|
{
|
||||||
|
return self::formatDecimalPrice($price) . $currency;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,6 +58,8 @@ export class Facture {
|
|||||||
this.clientName = ((myresp.facture_group_name == null || myresp.facture_group_name.length == 0) ? '-' : myresp.facture_group_name);
|
this.clientName = ((myresp.facture_group_name == null || myresp.facture_group_name.length == 0) ? '-' : myresp.facture_group_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.totalTtc = myresp?.totalPrices?.total_ttc ?? 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
getDocumentStateLabel(documentState){
|
getDocumentStateLabel(documentState){
|
||||||
@ -86,6 +88,7 @@ export class Facture {
|
|||||||
'<div>' + this.payment_date + '</div>',
|
'<div>' + this.payment_date + '</div>',
|
||||||
'<div><span class="badge '+this.isDocumentAlreadyGeneratedClass+'">' + this.isDocumentAlreadyGeneratedLabel + '</span></div>',
|
'<div><span class="badge '+this.isDocumentAlreadyGeneratedClass+'">' + this.isDocumentAlreadyGeneratedLabel + '</span></div>',
|
||||||
'<div><span class="badge '+this.isDocumentAlreadySentClass+'">' + this.isDocumentAlreadySentLabel + '</span></div>',
|
'<div><span class="badge '+this.isDocumentAlreadySentClass+'">' + this.isDocumentAlreadySentLabel + '</span></div>',
|
||||||
|
'<div><span>'+this.totalTtc + '</span></div>',
|
||||||
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.baseUrl +'"><button>' + t('gestion', 'Open') + '</button></a></div><div data-modifier="facture" data-id=' + this.id + ' data-table="facture" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>',
|
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.baseUrl +'"><button>' + t('gestion', 'Open') + '</button></a></div><div data-modifier="facture" data-id=' + this.id + ' data-table="facture" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>',
|
||||||
];
|
];
|
||||||
return myrow;
|
return myrow;
|
||||||
|
|||||||
@ -39,6 +39,7 @@
|
|||||||
<th><?php p($l->t('Date de paiement'));?></th>
|
<th><?php p($l->t('Date de paiement'));?></th>
|
||||||
<th><?php p($l->t('Générée'));?></th>
|
<th><?php p($l->t('Générée'));?></th>
|
||||||
<th><?php p($l->t('Envoyée au client'));?></th>
|
<th><?php p($l->t('Envoyée au client'));?></th>
|
||||||
|
<th><?php p($l->t('Total TTC'));?></th>
|
||||||
<th><?php p($l->t('Actions'));?></th>
|
<th><?php p($l->t('Actions'));?></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user