1 parent
9c85f825f9
commit
c48e7b36c6
5 files changed
+87
-3
No files matched your search
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user