Add reconcile and unreconcile from general ledger lines

Closes #7360
This commit is contained in:
Cédric Krier committed 2023-03-13 23:52:18 +01:00
1 parent 9c85f825f9
commit c48e7b36c6
5 files changed
+87 -3

No files matched your search

+1
View File
@@ -1,3 +1,4 @@
* Add reconcile and unreconcile from general ledger lines
* Always raise exception when fiscal year or period are not found
* Remove support for Python 3.7
* Add support for Python 3.11
+7
View File
@@ -2460,6 +2460,13 @@ class GeneralLedgerLine(ModelSQL, ModelView):
account_parties[record_id] = id_
return account_parties
@classmethod
def reconcile(cls, *lines_list, **kwargs):
pool = Pool()
Line = pool.get('account.move.line')
lines_list = [Line.browse(l) for l in lines_list]
return Line.reconcile(*lines_list, **kwargs)
class GeneralLedgerLineContext(GeneralLedgerAccountContext):
'General Ledger Line Context'
+30
View File
@@ -1840,6 +1840,21 @@ class ReconcileLines(Wizard):
])
reconcile = StateTransition()
@classmethod
def check_access(cls, models=None):
transaction = Transaction()
if transaction.user:
context = transaction.context
models = set() if models is None else models.copy()
models.update({'account.move.line', 'account.general_ledger.line'})
model = context.get('active_model')
if model and model not in models:
raise AccessError(gettext(
'ir.msg_access_wizard_model_error',
wizard=cls.__name__,
model=model))
super().check_access()
def get_writeoff(self):
"Return writeoff amount and company"
company = None
@@ -1880,6 +1895,21 @@ class UnreconcileLines(Wizard):
start_state = 'unreconcile'
unreconcile = StateTransition()
@classmethod
def check_access(cls, models=None):
transaction = Transaction()
if transaction.user:
context = transaction.context
models = set() if models is None else models.copy()
models.update({'account.move.line', 'account.general_ledger.line'})
model = context.get('active_model')
if model and model not in models:
raise AccessError(gettext(
'ir.msg_access_wizard_model_error',
wizard=cls.__name__,
model=model))
super().check_access()
def transition_unreconcile(self):
self.make_unreconciliation(self.records)
return 'end'
+12 -3
View File
@@ -310,25 +310,34 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.action.wizard" id="act_reconcile_lines">
<field name="name">Reconcile Lines</field>
<field name="wiz_name">account.move.reconcile_lines</field>
<field name="model">account.move.line</field>
<field name="model"></field>
</record>
<record model="ir.action.keyword" id="act_reconcile_lines_keyword">
<field name="keyword">form_action</field>
<field name="model">account.move.line,-1</field>
<field name="action" ref="act_reconcile_lines"/>
</record>
<!-- TODO keyword general ledger -->
<record model="ir.action.keyword" id="act_reconcile_lines_keyword_general_ledger_line">
<field name="keyword">form_action</field>
<field name="model">account.general_ledger.line,-1</field>
<field name="action" ref="act_reconcile_lines"/>
</record>
<record model="ir.action.wizard" id="act_unreconcile_lines">
<field name="name">Unreconcile Lines</field>
<field name="wiz_name">account.move.unreconcile_lines</field>
<field name="model">account.move.line</field>
<field name="model"></field>
</record>
<record model="ir.action.keyword" id="act_unreconcile_lines_keyword">
<field name="keyword">form_action</field>
<field name="model">account.move.line,-1</field>
<field name="action" ref="act_unreconcile_lines"/>
</record>
<record model="ir.action.keyword" id="act_unreconcile_lines_keyword_general_ledger_line">
<field name="keyword">form_action</field>
<field name="model">account.general_ledger.line,-1</field>
<field name="action" ref="act_unreconcile_lines"/>
</record>
<record model="ir.action.wizard" id="act_reconcile">
<field name="name">Reconcile Accounts</field>
@@ -16,6 +16,8 @@ Activate modules::
>>> config = activate_modules('account')
>>> GLLine = Model.get('account.general_ledger.line')
Create company::
>>> _ = create_company()
@@ -92,6 +94,41 @@ Reconcile Lines without writeoff::
>>> len(reconcile1.reconciliation.lines)
2
Unreconcile lines::
>>> unreconcile_lines = Wizard(
... 'account.move.unreconcile_lines', [reconcile1])
>>> unreconcile_lines.state == 'end'
True
>>> reconcile1.reload()
>>> reconcile1.reconciliation
>>> reconcile2.reload()
>>> reconcile2.reconciliation
Reconcile general ledger lines::
>>> gl_reconcile1 = GLLine(reconcile1.id)
>>> gl_reconcile2 = GLLine(reconcile2.id)
>>> reconcile_lines = Wizard('account.move.reconcile_lines',
... [gl_reconcile1, gl_reconcile2])
>>> reconcile_lines.state == 'end'
True
>>> gl_reconcile1.reload()
>>> gl_reconcile2.reload()
>>> gl_reconcile1.reconciliation == gl_reconcile2.reconciliation != None
True
Unreconcile general ledger, lines::
>>> unreconcile_lines = Wizard(
... 'account.move.unreconcile_lines', [gl_reconcile1])
>>> unreconcile_lines.state == 'end'
True
>>> gl_reconcile1.reload()
>>> gl_reconcile1.reconciliation
>>> gl_reconcile2.reload()
>>> gl_reconcile2.reconciliation
Create Moves for writeoff reconciliation::
>>> move = Move()