[FIX] l10n_fr_pos_cert: move sale closing on pos
The report sale closing that was working on journal and takes the sales total and cumulative total on periods of 'day', 'month' and 'years'. Is now based on the pos orders and moved to the pos certification module. closes odoo/odoo#36967 Task-id: 47990 Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
This commit is contained in:
@@ -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',
|
||||
}
|
||||
|
||||
@@ -4,4 +4,3 @@
|
||||
from . import l10n_fr
|
||||
from . import account_chart_template
|
||||
from . import res_company
|
||||
from . import account_closing
|
||||
|
||||
@@ -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
|
||||
|
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
+19
-11
@@ -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]}
|
||||
@@ -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
|
||||
|
+2
-2
@@ -37,8 +37,8 @@
|
||||
<group>
|
||||
<field name="total_interval"/>
|
||||
<field name="cumulative_total"/>
|
||||
<field name="last_move_id" groups="account.group_account_user"/>
|
||||
<field name="last_move_hash" groups="account.group_account_user"/>
|
||||
<field name="last_order_id" groups="account.group_account_user"/>
|
||||
<field name="last_order_hash" groups="account.group_account_user"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
@@ -18,6 +18,6 @@
|
||||
</field>
|
||||
</record>
|
||||
<menuitem id="pos_fr_statements_menu" name="French Statements" parent="point_of_sale.menu_point_rep" sequence="9" />
|
||||
<menuitem action="l10n_fr.action_list_view_account_sale_closing" id="menu_account_closing" parent="pos_fr_statements_menu" sequence="80"/>
|
||||
<menuitem action="l10n_fr_pos_cert.action_list_view_account_sale_closing" id="menu_account_closing" parent="pos_fr_statements_menu" sequence="80"/>
|
||||
<menuitem action="l10n_fr_pos_cert.action_check_pos_hash_integrity" id="menu_check_move_integrity_reporting" parent="pos_fr_statements_menu" sequence="90"/>
|
||||
</odoo>
|
||||
|
||||
Reference in New Issue
Block a user