Merge branch 'fixes/fix-stat-calcul-hytha' into staging
This commit is contained in:
commit
34461eed69
@ -1760,8 +1760,9 @@ class PageController extends Controller {
|
|||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
$data_factures = array();
|
$data_factures = array();
|
||||||
$factures = json_decode($this->myDb->getFactures($this->idNextcloud));
|
$factures = json_decode($this->myDb->getFacturesListWithDependencies());
|
||||||
foreach ($factures as $key => $facture) {
|
foreach ($factures as $key => $facture) {
|
||||||
|
$factureIsSingle = $facture->facture_type == FactureTypeConstant::TYPE_SINGLE;
|
||||||
$facture_temp = array(
|
$facture_temp = array(
|
||||||
'num' => $facture->num,
|
'num' => $facture->num,
|
||||||
'client' => $facture->entreprise,
|
'client' => $facture->entreprise,
|
||||||
@ -1774,19 +1775,65 @@ class PageController extends Controller {
|
|||||||
'montant_tva' => 0,
|
'montant_tva' => 0,
|
||||||
'montant_ttc' => 0,
|
'montant_ttc' => 0,
|
||||||
);
|
);
|
||||||
$produits = json_decode($this->getProduitsById($facture->id_devis));
|
if($factureIsSingle){
|
||||||
foreach ($produits as $key => $produit) {
|
$produits = json_decode($this->getProduitsById($facture->id_devis));
|
||||||
$htPrice = $produit->prix_unitaire;
|
foreach ($produits as $key => $produit) {
|
||||||
if($facture->fk_client_group_id != null || $facture->fk_client_group_id != 0){
|
$htPrice = $produit->prix_unitaire;
|
||||||
$price = $this->myDb->getProductPriceByClientGroupId($facture->fk_client_group_id,$produit->id);
|
if($facture->fk_client_group_id != null || $facture->fk_client_group_id != 0){
|
||||||
if($price != null){
|
$price = $this->myDb->getProductPriceByClientGroupId($facture->fk_client_group_id,$produit->id);
|
||||||
$htPrice = $price;
|
if($price != null){
|
||||||
|
$htPrice = $price;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
$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{
|
||||||
|
$isFactureGroupForSingleClient = $facture->facture_client_id != null && $facture->facture_client_id != 0;
|
||||||
|
if($isFactureGroupForSingleClient){
|
||||||
|
$facture_temp["client"] = $facture->facture_client_entreprise;
|
||||||
|
$facture_temp["nom_client"] = $facture->facture_client_name;
|
||||||
|
$devisList = $this->myDb->getDevisByClientIdAndMonthYear(
|
||||||
|
$facture->facture_client_id,
|
||||||
|
$facture->facture_month,
|
||||||
|
$facture->facture_year,
|
||||||
|
[
|
||||||
|
DevisMentionConstant::FACTURED,
|
||||||
|
DevisMentionConstant::FACTURED_FORMATTED
|
||||||
|
]
|
||||||
|
);
|
||||||
}
|
}
|
||||||
$facture_temp['montant_htc'] += $htPrice * $produit->quantite;
|
else{
|
||||||
};
|
$facture_temp["client"] = $facture->facture_group_name;
|
||||||
$facture_temp['montant_tva'] = ($facture_temp['montant_htc'] * $facture_temp['tva'])/100;
|
$facture_temp["nom_client"] = $facture->facture_group_name;
|
||||||
$facture_temp['montant_ttc'] = $facture_temp['montant_tva'] + $facture_temp['montant_htc'];
|
$devisList = $this->myDb->getDevisByClientGroupFacturationIdAndMonthYear(
|
||||||
|
$facture->facture_client_group_facturation_id,
|
||||||
|
$facture->facture_month,
|
||||||
|
$facture->facture_year,
|
||||||
|
[
|
||||||
|
DevisMentionConstant::FACTURED,
|
||||||
|
DevisMentionConstant::FACTURED_FORMATTED
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
foreach($devisList as $currentDevis){
|
||||||
|
$produits = json_decode($this->getProduitsById($currentDevis['id']));
|
||||||
|
foreach ($produits as $key => $produit) {
|
||||||
|
$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 = $price;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$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'];
|
||||||
|
}
|
||||||
|
|
||||||
array_push($data_factures, $facture_temp);
|
array_push($data_factures, $facture_temp);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -365,13 +365,17 @@ class Bdd {
|
|||||||
facture.fk_client_group_facturation_id as facture_client_group_facturation_id,
|
facture.fk_client_group_facturation_id as facture_client_group_facturation_id,
|
||||||
facture.date_paiement,
|
facture.date_paiement,
|
||||||
facture.type_paiement,
|
facture.type_paiement,
|
||||||
facture.id_devis,
|
facture.id_devis,
|
||||||
facture.version,
|
facture.version,
|
||||||
facture.status_paiement,
|
facture.status_paiement,
|
||||||
facture_client.nom as facture_client_name,
|
facture_client.nom as facture_client_name,
|
||||||
|
facture_client.entreprise as facture_client_entreprise,
|
||||||
|
facture_client.fk_client_group_id as facture_client_group_id,
|
||||||
facture_client_group_facturation.group_facturation_name as facture_group_name,
|
facture_client_group_facturation.group_facturation_name as facture_group_name,
|
||||||
facture.document_generated_date as facture_document_generated_date,
|
facture.document_generated_date as facture_document_generated_date,
|
||||||
facture.document_sent_date as facture_document_sent_date,
|
facture.document_sent_date as facture_document_sent_date,
|
||||||
|
facture.month as facture_month,
|
||||||
|
facture.year as facture_year,
|
||||||
devis.num as dnum,
|
devis.num as dnum,
|
||||||
devis.comment as dcomment,
|
devis.comment as dcomment,
|
||||||
client.entreprise,
|
client.entreprise,
|
||||||
@ -2064,41 +2068,39 @@ class Bdd {
|
|||||||
|
|
||||||
public function retrieveTotalInvoicesForTheYear(){
|
public function retrieveTotalInvoicesForTheYear(){
|
||||||
$sql = "SELECT
|
$sql = "SELECT
|
||||||
EXTRACT(YEAR FROM facture.date_paiement) AS y,
|
EXTRACT(YEAR FROM devis.date) AS y,
|
||||||
EXTRACT(MONTH FROM facture.date_paiement) AS m,
|
EXTRACT(MONTH FROM devis.date) AS m,
|
||||||
SUM(
|
SUM(
|
||||||
COALESCE(client_group_discount.ht_amount,produit.prix_unitaire)
|
COALESCE(client_group_discount.ht_amount,produit.prix_unitaire)
|
||||||
* produit_devis.quantite
|
* produit_devis.quantite
|
||||||
) AS total
|
) AS total
|
||||||
FROM ".$this->tableprefix."facture AS facture
|
from oc_gestion_devis as devis
|
||||||
JOIN ".$this->tableprefix."devis AS devis
|
JOIN oc_gestion_produit_devis AS produit_devis
|
||||||
ON MONTH(facture.date_paiement) = MONTH(devis.date) AND
|
|
||||||
YEAR(facture.date_paiement) = YEAR(devis.date)
|
|
||||||
JOIN ".$this->tableprefix."produit_devis AS produit_devis
|
|
||||||
ON devis.id = produit_devis.devis_id
|
ON devis.id = produit_devis.devis_id
|
||||||
JOIN ".$this->tableprefix."produit AS produit
|
JOIN oc_gestion_produit AS produit
|
||||||
ON produit_devis.produit_id = produit.id
|
ON produit_devis.produit_id = produit.id
|
||||||
JOIN ".$this->tableprefix."client AS client
|
JOIN oc_gestion_client AS client
|
||||||
ON devis.id_client = client.id
|
ON devis.id_client = client.id
|
||||||
LEFT JOIN ".$this->tableprefix."client_group AS client_group
|
JOIN oc_gestion_client_group AS client_group
|
||||||
ON client.fk_client_group_id = client_group.id
|
ON client.fk_client_group_id = client_group.id
|
||||||
LEFT JOIN ".$this->tableprefix."client_group_discount AS client_group_discount
|
JOIN oc_gestion_client_group_discount AS client_group_discount
|
||||||
ON client_group.id = client_group_discount.fk_client_group_id
|
ON client_group.id = client_group_discount.fk_client_group_id
|
||||||
AND produit.id = client_group_discount.fk_produit_id
|
AND produit.id = client_group_discount.fk_produit_id
|
||||||
WHERE
|
WHERE
|
||||||
(devis.mentions = ? OR devis.mentions = ?)
|
(devis.mentions = ? OR devis.mentions = ?)
|
||||||
GROUP BY
|
GROUP BY
|
||||||
EXTRACT(YEAR FROM facture.date_paiement),
|
EXTRACT(YEAR FROM devis.`date`),
|
||||||
EXTRACT(MONTH FROM facture.date_paiement)
|
EXTRACT(MONTH FROM devis.`date`)
|
||||||
ORDER BY
|
ORDER BY
|
||||||
EXTRACT(YEAR FROM facture.date_paiement) DESC,
|
EXTRACT(YEAR FROM devis.`date`) DESC,
|
||||||
EXTRACT(MONTH FROM facture.date_paiement);";
|
EXTRACT(MONTH FROM devis.`date`);";
|
||||||
|
|
||||||
return $this->execSQL($sql, [
|
return $this->execSQL($sql, [
|
||||||
DevisMentionConstant::FACTURED,
|
DevisMentionConstant::FACTURED,
|
||||||
DevisMentionConstant::FACTURED_FORMATTED
|
DevisMentionConstant::FACTURED_FORMATTED
|
||||||
]);
|
]);
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Annual turnover per month without VAT
|
* Annual turnover per month without VAT
|
||||||
*/
|
*/
|
||||||
@ -2135,25 +2137,22 @@ class Bdd {
|
|||||||
|
|
||||||
public function getStatArticleAnnuel($idNextcloud, $annee) {
|
public function getStatArticleAnnuel($idNextcloud, $annee) {
|
||||||
$sql = "SELECT p.id, p.reference,
|
$sql = "SELECT p.id, p.reference,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 1 THEN pd.quantite ELSE 0 END), 0) AS janvier,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 1 THEN pd.quantite ELSE 0 END), 0) AS janvier,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 2 THEN pd.quantite ELSE 0 END), 0) AS fevrier,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 2 THEN pd.quantite ELSE 0 END), 0) AS fevrier,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 3 THEN pd.quantite ELSE 0 END), 0) AS mars,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 3 THEN pd.quantite ELSE 0 END), 0) AS mars,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 4 THEN pd.quantite ELSE 0 END), 0) AS avril,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 4 THEN pd.quantite ELSE 0 END), 0) AS avril,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 5 THEN pd.quantite ELSE 0 END), 0) AS mai,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 5 THEN pd.quantite ELSE 0 END), 0) AS mai,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 6 THEN pd.quantite ELSE 0 END), 0) AS juin,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 6 THEN pd.quantite ELSE 0 END), 0) AS juin,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 7 THEN pd.quantite ELSE 0 END), 0) AS juillet,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 7 THEN pd.quantite ELSE 0 END), 0) AS juillet,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 8 THEN pd.quantite ELSE 0 END), 0) AS aout,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 8 THEN pd.quantite ELSE 0 END), 0) AS aout,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 9 THEN pd.quantite ELSE 0 END), 0) AS septembre,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 9 THEN pd.quantite ELSE 0 END), 0) AS septembre,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 10 THEN pd.quantite ELSE 0 END), 0) AS octobre,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 10 THEN pd.quantite ELSE 0 END), 0) AS octobre,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 11 THEN pd.quantite ELSE 0 END), 0) AS novembre,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN pd.quantite ELSE 0 END), 0) AS novembre,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(f.date_paiement) = 12 THEN pd.quantite ELSE 0 END), 0) AS decembre
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN pd.quantite ELSE 0 END), 0) AS decembre
|
||||||
FROM ".$this->tableprefix."produit p
|
FROM ".$this->tableprefix."produit p
|
||||||
LEFT JOIN ".$this->tableprefix."produit_devis pd ON p.id = pd.produit_id
|
LEFT JOIN ".$this->tableprefix."produit_devis pd ON p.id = pd.produit_id
|
||||||
LEFT JOIN ".$this->tableprefix."devis d ON pd.devis_id = d.id
|
LEFT JOIN ".$this->tableprefix."devis d ON pd.devis_id = d.id
|
||||||
LEFT JOIN ".$this->tableprefix."facture f
|
WHERE YEAR(d.date) = ".$annee." AND pd.devis_id IS NOT NULL AND
|
||||||
ON MONTH(f.date_paiement) = MONTH(d.date) AND
|
|
||||||
YEAR(f.date_paiement) = YEAR(f.date)
|
|
||||||
WHERE YEAR(f.date_paiement) = ".$annee." AND pd.devis_id IS NOT NULL AND
|
|
||||||
(d.mentions = ? or d.mentions = ?)
|
(d.mentions = ? or d.mentions = ?)
|
||||||
GROUP BY p.id, p.reference;";
|
GROUP BY p.id, p.reference;";
|
||||||
return $this->execSQL($sql, [
|
return $this->execSQL($sql, [
|
||||||
@ -2179,9 +2178,6 @@ class Bdd {
|
|||||||
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN 1 ELSE 0 END), 0) AS novembre,
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 11 THEN 1 ELSE 0 END), 0) AS novembre,
|
||||||
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN 1 ELSE 0 END), 0) AS decembre
|
COALESCE(SUM(CASE WHEN MONTH(d.date) = 12 THEN 1 ELSE 0 END), 0) AS decembre
|
||||||
FROM ".$this->tableprefix."devis d
|
FROM ".$this->tableprefix."devis d
|
||||||
LEFT JOIN ".$this->tableprefix."facture f
|
|
||||||
ON MONTH(f.date_paiement) = MONTH(d.date) AND
|
|
||||||
YEAR(f.date_paiement) = YEAR(f.date)
|
|
||||||
LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id
|
LEFT JOIN ".$this->tableprefix."thanato thanato ON d.id_thanato = thanato.id
|
||||||
WHERE YEAR(d.date) = ".$annee." AND d.id_thanato IS NOT NULL AND
|
WHERE YEAR(d.date) = ".$annee." AND d.id_thanato IS NOT NULL AND
|
||||||
(d.mentions = ? or d.mentions = ?)
|
(d.mentions = ? or d.mentions = ?)
|
||||||
@ -4320,6 +4316,28 @@ COMMENTAIRES: ".$comment;
|
|||||||
return FactureTypeConstant::TYPE_SINGLE;
|
return FactureTypeConstant::TYPE_SINGLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getDevisByClientGroupFacturationIdAndMonthYear($clientGroupFacturationId,$month,$year,$mentionsFilters = []){
|
||||||
|
$sql = "SELECT devis.id ,devis.id_client,client.fk_client_group_id
|
||||||
|
FROM ".$this->tableprefix."devis as devis
|
||||||
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
||||||
|
WHERE
|
||||||
|
client.fk_client_group_facturation_id = ? AND
|
||||||
|
YEAR(devis.date) = ? AND
|
||||||
|
MONTH(devis.date) = ?
|
||||||
|
";
|
||||||
|
|
||||||
|
$conditions = [$clientGroupFacturationId,$year,$month];
|
||||||
|
if(!empty($mentionFilters)){
|
||||||
|
$mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?'));
|
||||||
|
$sql .= " AND ". $this->tableprefix."devis.mentions IN ($mentionsFilterPlaceholders)";
|
||||||
|
$conditions = array_merge($conditions, $mentionFilters);
|
||||||
|
}
|
||||||
|
$sql.= ";";
|
||||||
|
$result = $this->execSQLNoJsonReturn($sql,$conditions);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
public function getDevisIdsByClientGroupFacturationIdAndMonthYear($clientGroupFacturationId,$month,$year,$mentionFilters = []){
|
public function getDevisIdsByClientGroupFacturationIdAndMonthYear($clientGroupFacturationId,$month,$year,$mentionFilters = []){
|
||||||
$sql = "SELECT devis.id
|
$sql = "SELECT devis.id
|
||||||
FROM ".$this->tableprefix."devis as devis
|
FROM ".$this->tableprefix."devis as devis
|
||||||
@ -4346,8 +4364,29 @@ COMMENTAIRES: ".$comment;
|
|||||||
return $devisIds;
|
return $devisIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getDevisByClientIdAndMonthYear($clientId,$month,$year,$mentionFilters = []){
|
||||||
|
$sql = "SELECT devis.id,devis.id_client,client.fk_client_group_id
|
||||||
|
FROM ".$this->tableprefix."devis as devis
|
||||||
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
||||||
|
WHERE
|
||||||
|
client.id = ? AND
|
||||||
|
YEAR(devis.date) = ? AND
|
||||||
|
MONTH(devis.date) = ?";
|
||||||
|
|
||||||
|
$conditions = [$clientId,$year,$month];
|
||||||
|
if(!empty($mentionFilters)){
|
||||||
|
$mentionsFilterPlaceholders = implode(',', array_fill(0, count($mentionFilters), '?'));
|
||||||
|
$sql .= " AND devis.mentions IN ($mentionsFilterPlaceholders)";
|
||||||
|
$conditions = array_merge($conditions, $mentionFilters);
|
||||||
|
}
|
||||||
|
$sql.= ";";
|
||||||
|
$result = $this->execSQLNoJsonReturn($sql,$conditions);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
public function getDevisIdsByClientIdAndMonthYear($clientId,$month,$year,$mentionFilters = []){
|
public function getDevisIdsByClientIdAndMonthYear($clientId,$month,$year,$mentionFilters = []){
|
||||||
$sql = "SELECT devis.id
|
$sql = "SELECT devis.id,devis.id_client,client.fk_client_group_id
|
||||||
FROM ".$this->tableprefix."devis as devis
|
FROM ".$this->tableprefix."devis as devis
|
||||||
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
LEFT JOIN ".$this->tableprefix."client as client on devis.id_client = client.id
|
||||||
WHERE
|
WHERE
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user