dvthanato/dv-thanato-tolotsoa-version #2
1
gestion/js/943.app.js
Normal file
1
gestion/js/943.app.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -513,6 +513,7 @@ class Bdd
|
||||
foreach($facturesList as $currentFacture) {
|
||||
$produits = $this->getProduitsDevisByDevisId($currentFacture->id_devis);
|
||||
$currentFacture->produits = $produits;
|
||||
$currentFacture->totalPrices = $this->getFactureTotalPrices($currentFacture->id);
|
||||
}
|
||||
return json_encode($facturesList);
|
||||
}
|
||||
@ -4944,7 +4945,7 @@ COMMENTAIRES: ".$comment;
|
||||
$conditions = [$clientGroupFacturationId,$year,$month];
|
||||
if(!empty($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);
|
||||
}
|
||||
$sql .= ";";
|
||||
@ -5172,6 +5173,26 @@ COMMENTAIRES: ".$comment;
|
||||
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 = [])
|
||||
{
|
||||
$sql = "SELECT
|
||||
@ -5723,4 +5744,80 @@ COMMENTAIRES: ".$comment;
|
||||
|
||||
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,'.','');
|
||||
}
|
||||
|
||||
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.totalTtc = myresp?.totalPrices?.total_ttc ?? 0;
|
||||
}
|
||||
|
||||
getDocumentStateLabel(documentState){
|
||||
@ -86,6 +88,7 @@ export class Facture {
|
||||
'<div>' + this.payment_date + '</div>',
|
||||
'<div><span class="badge '+this.isDocumentAlreadyGeneratedClass+'">' + this.isDocumentAlreadyGeneratedLabel + '</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>',
|
||||
];
|
||||
return myrow;
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
<th><?php p($l->t('Date de paiement'));?></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('Total TTC'));?></th>
|
||||
<th><?php p($l->t('Actions'));?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user