[PYTHON] ~permit single selection of perdiod and journal and code tuning
authorLudovic CHEVALIER <ludovic@beurresarrasin.net>
Tue, 13 Sep 2022 10:04:17 +0000 (12:04 +0200)
committerLudovic CHEVALIER <ludovic@beurresarrasin.net>
Tue, 13 Sep 2022 10:04:17 +0000 (12:04 +0200)
wizard/account_export_csv.py

index 2bd51d5..790e793 100644 (file)
@@ -90,6 +90,27 @@ class AccountCSVExport(osv.osv_memory):
                 _(u'Crédit'),
                 ]
 
+    def format_row_sage(self, dico, numero_piece, side):
+        """docstring for format_row_sage"""
+        if side == "D":
+            debit = dico['debit']
+            credit = 0
+        if side == "C":
+            debit = 0
+            credit = dico['credit']
+        return [
+            dico['journal_code'],
+            numero_piece,
+            dico['date'],
+            dico['account_code'],
+            dico['compte_tiers'],
+            dico['general_analytic'],
+            dico['analytic_account'],
+            dico['client_name'],
+            debit,
+            credit,
+            ]
+
     def _get_rows_sage(self, cr, uid, ids,
                        fiscalyear_id,
                        period_range_ids,
@@ -106,7 +127,7 @@ class AccountCSVExport(osv.osv_memory):
         numero_piece = 0
         prev_period = 0
         prev_journal = 0
-        req = """
+        cr.execute("""
             select
                 aml.period_id,
                 aml.journal_id as journal_id,
@@ -127,95 +148,55 @@ class AccountCSVExport(osv.osv_memory):
                 period_id,
                 journal_id,
                 account_id
-           """ % {
-               'period_ids': tuple(period_range_ids),
-               'journal_ids': tuple(journal_ids),
-               'account_ids': tuple(account_ids),
-           }
-        cr.execute(req)
+           """,
+                   {
+                       'period_ids': tuple(period_range_ids),
+                       'journal_ids': tuple(journal_ids),
+                       'account_ids': tuple(account_ids),
+                       }
+        )
         res = cr.fetchall()
         rows = []
         for line in res:
+            dico = {}
             journal = journal_obj.browse(cr, uid, line[1], context=context)
-            journal_code = journal.code[0:2]
+            dico['journal_code'] = journal.code[0:2]
             period = period_obj.browse(cr, uid, line[0], context=context)
             if prev_journal != journal or prev_period != period:
                 numero_piece += 1
             year = int(period.code[3:7])
             month = int(period.code[0:2])
             day = calendar.monthrange(year, month)[1]
-            date = datetime.datetime(year, month, day).strftime("%d/%m/%Y")
+            dico['date'] = datetime.datetime(year, month, day).strftime("%d/%m/%Y")
             account = account_obj.browse(cr, uid, line[2], context=context)
-            account_code = account.code
-            client_name = journal.name.split(" - ", 1)[1].upper()
+            dico['account_code'] = account.code
+            dico['client_name'] = journal.name.split(" - ", 1)[1].upper()
             if account.type in ("receivable", "payable"):
-                compte_tiers = client_name
+                dico['compte_tiers'] = dico['client_name']
             else:
-                compte_tiers = ""
-            general_analytic = "G"
-            analytic_account = ""
-            debit = line[3]
-            credit = line[4]
-            if debit == credit:
+                dico['compte_tiers'] = ""
+            dico['general_analytic'] = "G"
+            dico['analytic_account'] = ""
+            dico['debit'] = line[3]
+            dico['credit'] = line[4]
+            if dico['debit'] == dico['credit']:
                 pass
             else:
-                if debit:
-                    rows.append([
-                        journal_code,
-                        numero_piece,
-                        date,
-                        account_code,
-                        compte_tiers,
-                        general_analytic,
-                        analytic_account,
-                        client_name,
-                        debit,
-                        0,
-                        ])
-                if credit:
-                    rows.append([
-                        journal_code,
-                        numero_piece,
-                        date,
-                        account_code,
-                        compte_tiers,
-                        general_analytic,
-                        analytic_account,
-                        client_name,
-                        0,
-                        credit,
-                        ])
+                if dico['debit']:
+                    row = self.format_row_sage(dico, numero_piece, "D")
+                    rows.append(row)
+                if dico['credit']:
+                    row = self.format_row_sage(dico, numero_piece, "C")
+                    rows.append(row)
                 if account.type == "other":
-                    general_analytic = "A"
-                    analytic_account = journal.code[3:]
-                    if debit:
-                        rows.append([
-                            journal_code,
-                            numero_piece,
-                            date,
-                            account_code,
-                            compte_tiers,
-                            general_analytic,
-                            analytic_account,
-                            client_name,
-                            debit,
-                            0,
-                            ])
-                    if credit:
-                        rows.append([
-                            journal_code,
-                            numero_piece,
-                            date,
-                            account_code,
-                            compte_tiers,
-                            general_analytic,
-                            analytic_account,
-                            client_name,
-                            0,
-                            credit,
-                            ])
-
-
+                    dico['general_analytic'] = "A"
+                    dico['analytic_account'] = journal.code[3:]
+                    if dico['debit']:
+                        row = self.format_row_sage(dico, numero_piece, "D")
+                        rows.append(row)
+                    if dico['credit']:
+                        row = self.format_row_sage(dico, numero_piece, "C")
+                        rows.append(row)
 
             prev_journal = journal
             prev_period = period