From b1ee6bbab88a6c1bdfad84d107ee1bb013b64d57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20-=20Le=20Filament?= <remi@le-filament.com>
Date: Tue, 21 Dec 2021 16:07:35 +0100
Subject: [PATCH] [FIX] calculations for cashflow

---
 models/lefilament_tdb.py | 66 ++++++++++++++++++----------------------
 1 file changed, 30 insertions(+), 36 deletions(-)

diff --git a/models/lefilament_tdb.py b/models/lefilament_tdb.py
index b8dd290..75e48e2 100644
--- a/models/lefilament_tdb.py
+++ b/models/lefilament_tdb.py
@@ -62,33 +62,30 @@ class LeFilamentTdb(models.Model):
 
                 # Trésorerie
                 self.env.cr.execute(
-                    "SELECT SUM(amount_total_signed) \
-                    FROM account_move \
+                    "SELECT SUM(amount) \
+                    FROM account_bank_statement_line \
                     WHERE date < date_trunc('month', %s \
-                    + interval '1' month) \
-                    AND statement_line_id is not NULL;",
+                    + interval '1' month)",
                     (date_tdb,),
                 )
                 treso_total = self.env.cr.fetchone()[0]
                 # CHARGES
                 self.env.cr.execute(
-                    "SELECT SUM(amount_total_signed) \
-                    FROM account_move \
-                    WHERE amount_total_signed < 0 \
+                    "SELECT SUM(amount) \
+                    FROM account_bank_statement_line \
+                    WHERE amount < 0 \
                     AND date >= date_trunc('month', %s) \
-                    AND date < date_trunc('month', %s + interval '1' month) \
-                    AND statement_line_id is not NULL;",
+                    AND date < date_trunc('month', %s + interval '1' month)",
                     (date_tdb, date_tdb),
                 )
                 charges = self.env.cr.fetchone()[0]
                 # ENCAISSE
                 self.env.cr.execute(
-                    "SELECT SUM(amount_total_signed) \
-                    FROM account_move \
-                    WHERE amount_total_signed > 0 \
+                    "SELECT SUM(amount) \
+                    FROM account_bank_statement_line \
+                    WHERE amount > 0 \
                     AND date >= date_trunc('month', %s) \
-                    AND date < date_trunc('month', %s + interval '1' month) \
-                    AND statement_line_id is not NULL;",
+                    AND date < date_trunc('month', %s + interval '1' month)",
                     (date_tdb, date_tdb),
                 )
                 encaisse = self.env.cr.fetchone()[0]
@@ -240,23 +237,21 @@ class LeFilamentTdb(models.Model):
                     FROM account_bank_statement
                     ORDER BY ID DESC LIMIT 1
                 ) AS date_maj,
-                (SELECT SUM(amount_total_signed)
-                    FROM account_move
-                    WHERE statement_line_id is NOT NULL
+                (SELECT SUM(amount)
+                    FROM account_bank_statement_line
                 ) AS tresorerie,
-                (SELECT SUM(amount_total_signed)
-                    FROM account_move
-                    WHERE amount_total_signed > 0 AND date > %s
-                    AND statement_line_id is NOT NULL
+                (SELECT SUM(amount)
+                    FROM account_bank_statement_line
+                    WHERE amount > 0 AND date > %s
                 ) AS entree,
-                (SELECT SUM(amount_total_signed)
-                    FROM account_move
-                    WHERE amount_total_signed < 0 AND date > %s
+                (SELECT SUM(amount)
+                    FROM account_bank_statement_line
+                    WHERE amount < 0 AND date > %s
                     AND statement_line_id is NOT NULL
                 ) AS sortie,
-                (SELECT SUM(amount_total_signed)
-                    FROM account_move
-                    WHERE date > %s AND statement_line_id is NOT NULL
+                (SELECT SUM(amount)
+                    FROM account_bank_statement_line
+                    WHERE date > %s
                 ) AS variation,
                 (SELECT SUM(e.total_amount)
                     FROM hr_expense_sheet es, hr_expense e
@@ -329,13 +324,12 @@ class LeFilamentTdb(models.Model):
         self._cr.execute(
             """
             SELECT to_char(date_trunc('month', date),'YYYY-MM') AS mois,
-                SUM(CASE WHEN amount_total_signed > 0
+                SUM(CASE WHEN amount > 0
                     THEN amount_total_signed ELSE 0 END) AS entree,
-                SUM(CASE WHEN amount_total_signed < 0
+                SUM(CASE WHEN amount < 0
                     THEN amount_total_signed ELSE 0 END) AS sortie,
-                SUM(amount_total_signed) AS variation
-            FROM account_move
-            WHERE statement_line_id is not NULL
+                SUM(amount) AS variation
+            FROM account_bank_statement_line
             GROUP BY date_trunc('month', date)
             ORDER BY date_trunc('month', date);
             """
@@ -366,11 +360,10 @@ class LeFilamentTdb(models.Model):
         self._cr.execute(
             """
             SELECT to_char(date_trunc('month', date),'YYYY-MM') AS mois,
-                SUM(SUM(amount_total_signed)) OVER (
+                SUM(SUM(amount)) OVER (
                     ORDER BY date_trunc('month', date)
                 ) AS treso
-            FROM account_move
-            WHERE statement_line_id is not NULL
+            FROM account_bank_statement_line
             GROUP BY date_trunc('month', date)
             ORDER BY date_trunc('month', date) DESC LIMIT 6;
             """
@@ -403,7 +396,8 @@ class LeFilamentTdb(models.Model):
                     ELSE 0 END
                     ) AS f_client
             FROM account_move
-            WHERE state != 'draft' AND state != 'paid'
+            WHERE state = 'posted'
+            AND payment_state IN ('not_paid','in_payment','partial')
             GROUP BY date_trunc('month', invoice_date_due)
             ORDER BY date_trunc('month', invoice_date_due);
             """
-- 
GitLab