diff --git a/addons/l10n_fr/__manifest__.py b/addons/l10n_fr/__manifest__.py
index 4b10e78820d..94c8c05855e 100644
--- a/addons/l10n_fr/__manifest__.py
+++ b/addons/l10n_fr/__manifest__.py
@@ -46,10 +46,6 @@ configuration of their taxes and fiscal positions manually.
'data/account_fiscal_position_template_data.xml',
'data/account_reconcile_model_template.xml',
'data/account_chart_template_configure_data.xml',
- 'data/account_sale_closure_cron.xml',
- 'views/account_sale_closure.xml',
- 'security/ir.model.access.csv',
- 'security/account_closing_intercompany.xml',
],
'post_init_hook': '_l10n_fr_post_init_hook',
}
diff --git a/addons/l10n_fr/models/__init__.py b/addons/l10n_fr/models/__init__.py
index a8fff1c9bc8..815ba6b271a 100644
--- a/addons/l10n_fr/models/__init__.py
+++ b/addons/l10n_fr/models/__init__.py
@@ -4,4 +4,3 @@
from . import l10n_fr
from . import account_chart_template
from . import res_company
-from . import account_closing
diff --git a/addons/l10n_fr/security/ir.model.access.csv b/addons/l10n_fr/security/ir.model.access.csv
deleted file mode 100644
index a3c5001986d..00000000000
--- a/addons/l10n_fr/security/ir.model.access.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_l10n_fr_account_sale_closing_user,l10n_fr.account.sale.closing.user,l10n_fr.model_account_sale_closing,base.group_user,1,0,0,0
\ No newline at end of file
diff --git a/addons/l10n_fr_pos_cert/__manifest__.py b/addons/l10n_fr_pos_cert/__manifest__.py
index 9e9dce4d0cf..7d96df708ce 100644
--- a/addons/l10n_fr_pos_cert/__manifest__.py
+++ b/addons/l10n_fr_pos_cert/__manifest__.py
@@ -26,11 +26,15 @@ The module adds following features:
'auto_install': True,
'application': False,
'data': [
- 'views/pos_inalterability_menuitem.xml',
'views/account_views.xml',
'views/l10n_fr_pos_cert_templates.xml',
'views/pos_views.xml',
+ 'views/account_sale_closure.xml',
+ 'views/pos_inalterability_menuitem.xml',
'report/pos_hash_integrity.xml',
+ 'data/account_sale_closure_cron.xml',
+ 'security/ir.model.access.csv',
+ 'security/account_closing_intercompany.xml',
],
'qweb': ['static/src/xml/pos.xml'],
'post_init_hook': '_setup_inalterability',
diff --git a/addons/l10n_fr/data/account_sale_closure_cron.xml b/addons/l10n_fr_pos_cert/data/account_sale_closure_cron.xml
similarity index 100%
rename from addons/l10n_fr/data/account_sale_closure_cron.xml
rename to addons/l10n_fr_pos_cert/data/account_sale_closure_cron.xml
diff --git a/addons/l10n_fr_pos_cert/models/__init__.py b/addons/l10n_fr_pos_cert/models/__init__.py
index 33657992e1c..771f4698144 100644
--- a/addons/l10n_fr_pos_cert/models/__init__.py
+++ b/addons/l10n_fr_pos_cert/models/__init__.py
@@ -4,3 +4,4 @@ from . import account_bank_statement
from . import account_fiscal_position
from . import res_company
from . import pos
+from . import account_closing
diff --git a/addons/l10n_fr/models/account_closing.py b/addons/l10n_fr_pos_cert/models/account_closing.py
similarity index 86%
rename from addons/l10n_fr/models/account_closing.py
rename to addons/l10n_fr_pos_cert/models/account_closing.py
index c498c978ea7..ecc77bac8a6 100644
--- a/addons/l10n_fr/models/account_closing.py
+++ b/addons/l10n_fr_pos_cert/models/account_closing.py
@@ -6,6 +6,7 @@ from odoo import models, api, fields
from odoo.fields import Datetime as FieldDateTime
from odoo.tools.translate import _
from odoo.exceptions import UserError
+from odoo.osv.expression import AND
class AccountClosing(models.Model):
@@ -27,8 +28,8 @@ class AccountClosing(models.Model):
total_interval = fields.Monetary(string="Period Total", help='Total in receivable accounts during the interval, excluding overlapping periods', readonly=True, required=True)
cumulative_total = fields.Monetary(string="Cumulative Grand Total", help='Total in receivable accounts since the beginnig of times', readonly=True, required=True)
sequence_number = fields.Integer('Sequence #', readonly=True, required=True)
- last_move_id = fields.Many2one('account.move', string='Last journal entry', help='Last Journal entry included in the grand total', readonly=True)
- last_move_hash = fields.Char(string='Last journal entry\'s inalteralbility hash', readonly=True)
+ last_order_id = fields.Many2one('pos.order', string='Last Pos Order', help='Last Pos order included in the grand total', readonly=True)
+ last_order_hash = fields.Char(string='Last Order entry\'s inalteralbility hash', readonly=True)
currency_id = fields.Many2one('res.currency', string='Currency', help="The company's currency", readonly=True, related='company_id.currency_id', store=True)
def _query_for_aml(self, company, first_move_sequence_number, date_start):
@@ -77,28 +78,35 @@ class AccountClosing(models.Model):
('frequency', '=', frequency),
('company_id', '=', company.id)], limit=1, order='sequence_number desc')
- first_move = self.env['account.move']
+ first_order = self.env['pos.order']
date_start = interval_dates['interval_from']
cumulative_total = 0
if previous_closing:
- first_move = previous_closing.last_move_id
+ first_order = previous_closing.last_order_id
date_start = previous_closing.create_date
cumulative_total += previous_closing.cumulative_total
- aml_aggregate = self._query_for_aml(company, first_move.secure_sequence_number, date_start)
+ domain = [('company_id', '=', company.id), ('state', 'in', ('paid', 'done', 'invoiced'))]
+ if first_order.l10n_fr_secure_sequence_number is not False and first_order.l10n_fr_secure_sequence_number is not None:
+ domain = AND([domain, [('l10n_fr_secure_sequence_number', '>', first_order.l10n_fr_secure_sequence_number)]])
+ elif date_start:
+ #the first time we compute the closing, we consider only from the installation of the module
+ domain = AND([domain, [('date_order', '>=', date_start)]])
- total_interval = aml_aggregate['balance'] or 0
+ orders = self.env['pos.order'].search(domain, order='date_order desc')
+
+ total_interval = sum(orders.mapped('amount_total'))
cumulative_total += total_interval
# We keep the reference to avoid gaps (like daily object during the weekend)
- last_move = first_move
- if aml_aggregate['move_ids']:
- last_move = last_move.browse(aml_aggregate['move_ids'][0])
+ last_order = first_order
+ if orders:
+ last_order = orders[0]
return {'total_interval': total_interval,
'cumulative_total': cumulative_total,
- 'last_move_id': last_move.id,
- 'last_move_hash': last_move.inalterable_hash,
+ 'last_order_id': last_order.id,
+ 'last_order_hash': last_order.l10n_fr_secure_sequence_number,
'date_closing_stop': interval_dates['date_stop'],
'date_closing_start': date_start,
'name': interval_dates['name_interval'] + ' - ' + interval_dates['date_stop'][:10]}
diff --git a/addons/l10n_fr/security/account_closing_intercompany.xml b/addons/l10n_fr_pos_cert/security/account_closing_intercompany.xml
similarity index 100%
rename from addons/l10n_fr/security/account_closing_intercompany.xml
rename to addons/l10n_fr_pos_cert/security/account_closing_intercompany.xml
diff --git a/addons/l10n_fr_pos_cert/security/ir.model.access.csv b/addons/l10n_fr_pos_cert/security/ir.model.access.csv
new file mode 100644
index 00000000000..a2553eb8de9
--- /dev/null
+++ b/addons/l10n_fr_pos_cert/security/ir.model.access.csv
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_l10n_fr_pos_cert_account_sale_closing_user,l10n_fr_pos_cert.account.sale.closing.user,l10n_fr_pos_cert.model_account_sale_closing,base.group_user,1,0,0,0
diff --git a/addons/l10n_fr/views/account_sale_closure.xml b/addons/l10n_fr_pos_cert/views/account_sale_closure.xml
similarity index 93%
rename from addons/l10n_fr/views/account_sale_closure.xml
rename to addons/l10n_fr_pos_cert/views/account_sale_closure.xml
index e33549ffb4a..24e4c14cd71 100644
--- a/addons/l10n_fr/views/account_sale_closure.xml
+++ b/addons/l10n_fr_pos_cert/views/account_sale_closure.xml
@@ -37,8 +37,8 @@
-
-
+
+
diff --git a/addons/l10n_fr_pos_cert/views/pos_inalterability_menuitem.xml b/addons/l10n_fr_pos_cert/views/pos_inalterability_menuitem.xml
index efaab7ef24f..3557204c8a3 100644
--- a/addons/l10n_fr_pos_cert/views/pos_inalterability_menuitem.xml
+++ b/addons/l10n_fr_pos_cert/views/pos_inalterability_menuitem.xml
@@ -18,6 +18,6 @@
-
+