Skip to content

Commit

Permalink
[IMP] pay_group_multi_store:
Browse files Browse the repository at this point in the history
  • Loading branch information
jjscarafia committed Mar 19, 2023
1 parent 44c9853 commit ac90414
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 3 deletions.
3 changes: 2 additions & 1 deletion account_payment_group_multi_store/__manifest__.py
Expand Up @@ -19,7 +19,7 @@
##############################################################################
{
'name': 'Multi Store on Payment Groups',
'version': '13.0.1.0.0',
'version': '13.0.1.1.0',
'category': 'Accounting',
'sequence': 14,
'summary': '',
Expand All @@ -35,6 +35,7 @@
],
'data': [
'views/account_payment_group_views.xml',
'views/res_store_view.xml',
],
'demo': [
],
Expand Down
1 change: 1 addition & 0 deletions account_payment_group_multi_store/models/__init__.py
@@ -1,2 +1,3 @@
from . import account_payment_group
from . import account_payment
from . import res_store
11 changes: 11 additions & 0 deletions account_payment_group_multi_store/models/account_payment_group.py
Expand Up @@ -13,11 +13,22 @@ class AccountPaymentGroup(models.Model):
# default=lambda self: self.env.user.store_id,
)

@api.depends_context('to_pay_move_line_ids')
@api.depends('payment_ids.journal_id.store_id')
def _compute_store_id(self):
# tal vez en este caso buscar un store padre que de alguna manera da
# permiso para todos estos stores?
for rec in self:
# agregamos esto del contexto con la misma logica que esta en payment group el metodo
# _refresh_payments_and_move_lines. Si viene eso en el contexto es porque venimos de una factura
# y las pay lines no se refrescan.
if self._context.get('to_pay_move_line_ids'):
aml_store = self.env['account.move.line'].browse(self._context.get('to_pay_move_line_ids')).mapped(
'journal_id.store_id')
# aca habria que verificar que no se este pagando deuda de sstores diferentes, en ese caso
# aml_store seria > 1. Pero no siempre habria que devolver raise, porque si el store no tiene
# store_id.only_allow_reonciliaton_of_this_store entonces no estaria mal
rec.store_id = aml_store
store = rec.payment_ids.mapped('journal_id.store_id')
if len(store) != 1:
continue
Expand Down
16 changes: 16 additions & 0 deletions account_payment_group_multi_store/models/res_store.py
@@ -0,0 +1,16 @@
##############################################################################
# For copyright and license notices, see __manifest__.py file in module root
# directory
##############################################################################
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError


class ResStore(models.Model):
_inherit = "res.store"

# agregamos esta opcion para que algunos stores (tipicamente los padres)
# no se puedan seleccionar en los grupos de pagos. Podria ser un atributo global
# pero la verdad que en el lugar principal donde tiene sentido esto es en los grupos de pagos
# y ademas queremos meter cambios en los otros modulos que ya estan estables
hide_on_payments = fields.Boolean()
Expand Up @@ -8,7 +8,7 @@
<field name="arch" type="xml">
<field name="company_id" position="after">
<!-- lo hacemos requerido por vista porque es computado (se computa luego de crear) y ademas por si al instalar algun store no se puede definir, ademas lo hacemos solo requerido en estado borrador ya que si queda algun pago validado sin este campo, dejamos que se reabra y de ultima se seleccione -->
<field name="store_id" groups="base_multi_store.group_multi_store" attrs="{'required': [('state', '=', 'draft')], 'readonly': [('state', '!=', 'draft')]}" options="{'no_create': True, 'no_open': True}"/>
<field name="store_id" domain="[('hide_on_payments', '=', False)]" invisible="context.get('pop_up')" groups="base_multi_store.group_multi_store" attrs="{'required': [('state', '=', 'draft')], 'readonly': [('state', '!=', 'draft')]}" options="{'no_create': True, 'no_open': True}"/>
</field>
</field>
</record>
Expand All @@ -19,7 +19,7 @@
<field name="inherit_id" ref="account_payment_group.view_account_payment_group_search"/>
<field name="arch" type="xml">
<field name="company_id" position="after">
<field name="store_id" groups="base_multi_store.group_multi_store"/>
<field name="store_id" domain="[('hide_on_payments', '=', False)]" groups="base_multi_store.group_multi_store"/>
</field>
<search>
<filter name="store" string="Store" context="{'group_by':'store_id'}" groups="base_multi_store.group_multi_store"/>
Expand Down
16 changes: 16 additions & 0 deletions account_payment_group_multi_store/views/res_store_view.xml
@@ -0,0 +1,16 @@
<?xml version="1.0"?>
<odoo>

<!-- Form -->
<record id="view_res_store_form" model="ir.ui.view">
<field name="name">res.store.form</field>
<field name="model">res.store</field>
<field name="inherit_id" ref="base_multi_store.view_res_store_form"/>
<field name="arch" type="xml">
<field name="only_allow_reonciliaton_of_this_store" position="after">
<field name="hide_on_payments"/>
</field>
</field>
</record>

</odoo>

0 comments on commit ac90414

Please sign in to comment.