Skip to content

Commit

Permalink
[IMP] Cambios varios
Browse files Browse the repository at this point in the history
  • Loading branch information
filoquin committed Mar 1, 2023
1 parent 67af5b1 commit 1bad3dd
Show file tree
Hide file tree
Showing 10 changed files with 103 additions and 12 deletions.
5 changes: 5 additions & 0 deletions point_of_payment/__manifest__.py
Expand Up @@ -29,3 +29,8 @@
"installable": True,
"application": True,
}
# """- Agregar users_ids en los config y regas de acceso a las seccione y cajas
# - grupo de unca session de caja
# - Maxima diferencia de caja en la configuracion y generar asiento de diferencia
# - las transferencias internas pueden elegir caja destino y en la caja destino cuando habro una session importo esas trasnferecias
# """
55 changes: 50 additions & 5 deletions point_of_payment/models/account_payment.py
Expand Up @@ -15,13 +15,22 @@ class AccountPayment(models.Model):
)
pop_session_id = fields.Many2one('pop.session',
string='Session',
#ondelete='Restrict',
)
pop_id = fields.Many2one('pop.config',
string='POP config',
#ondelete='Restrict',
related='pop_session_id.pop_id'
)
dest_pop_id = fields.Many2one('pop.config',
string='Destination POP config',
)

def action_receive_internal_transaction(self):
pop_ids = self.env['pop.session'].search([
('user_ids', '=', self.env.uid),
('state', '=', 'opened')
]).mapped('pop_id')
for rec in self.filtered(lambda p: p.dest_pop_id == pop_ids and p.dest_pop_session_id == False):
rec.dest_pop_session_id = rec.dest_pop_id.current_session_id.id

@api.depends('payment_type', 'company_id')
def _compute_available_pop_session_ids(self):
Expand All @@ -36,11 +45,10 @@ def action_post(self):
require_session = self.env.user.has_group('point_of_payment.require_pop_session')
for rec in self:
if not rec.pop_session_id or rec.pop_session_id not in rec.available_pop_session_ids:
session_id = rec.available_pop_session_ids[0]
if require_session and not session_id:
if require_session and not rec.available_pop_session_ids:
raise UserError(_('Open payment session is required for your user'))
rec.pop_session_id = rec.available_pop_session_ids.id if rec.available_pop_session_ids else False

rec.pop_session_id = session_id.id if session_id else False
super().action_post()

def action_cancel(self):
Expand Down Expand Up @@ -76,3 +84,40 @@ def _compute_available_journal_ids(self):
)
else:
super()._compute_available_journal_ids()


def _create_paired_internal_transfer_payment(self):

pop_transfer = self.filtered('dest_pop_id')
super(AccountPayment, self - pop_transfer)._create_paired_internal_transfer_payment()

for payment in pop_transfer:

paired_payment = payment.copy({
'journal_id': payment.journal_id.id,
'destination_journal_id': payment.journal_id.id,
'payment_type': payment.payment_type == 'outbound' and 'inbound' or 'outbound',
'move_id': None,
'ref': payment.ref,
'paired_internal_transfer_payment_id': payment.id,
'date': payment.date,
})
paired_payment.move_id._post(soft=False)
payment.paired_internal_transfer_payment_id = paired_payment

body = _(
"This payment has been created from %s",
payment._get_html_link(),
)
paired_payment.message_post(body=body)
body = _(
"A second payment has been created: %s",
paired_payment._get_html_link(),
)
payment.message_post(body=body)

lines = (payment.move_id.line_ids + paired_payment.move_id.line_ids).filtered(
lambda l: l.account_id == payment.destination_account_id and not l.reconciled)
lines.reconcile()


2 changes: 1 addition & 1 deletion point_of_payment/models/pop_config.py
Expand Up @@ -47,7 +47,7 @@ class PopConfig(models.Model):
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
if not vals['sequence_id']:
if 'sequence_id' not in vals:
vals['sequence_id'] = self.env['ir.sequence'].sudo().create([{
'name': 'session %s' % vals['code'],
'padding': 6,
Expand Down
25 changes: 24 additions & 1 deletion point_of_payment/models/pop_session.py
Expand Up @@ -55,12 +55,30 @@ class PopSession(models.Model):
inverse='_inverse_control_lines',
string='Journal control'
)

waiting_transfer_ids = fields.Many2many('account.payment', compute='_compute_waiting_transfer')
count_waiting_transfer = fields.Integer()
require_cash_control = fields.Boolean('require_cash_control', compute='_compute_require_cash_control')
payment_ids = fields.One2many('account.payment', 'pop_session_id', string='payments')

_sql_constraints = [('uniq_name', 'unique(name)', "El nombre de esta sesión de caja debe ser único !")]

def action_import_payments(self):
view_id = self.env.ref('point_of_payment.pop_payment_import_view_form').id

view = {
"name": _("Import payment"),
"view_mode": "form",
"view_id": view_id,
"view_type": "form",
"res_model": "pop.payment.import",
"res_id": False,
"type": "ir.actions.act_window",
"target": "new",
"context": {"default_pop_id": self.pop_id.id, 'default_pop_session_id': self.id},
}
return view


@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
Expand All @@ -82,6 +100,11 @@ def create(self, vals_list):

return super().create(vals_list)

@api.depends('pop_id')
def _compute_waiting_transfer(self):
for rec in self:
rec.waiting_transfer_ids = self.env['account.payment'].search([('dest_pop_id','=',rec.pop_id),('dest_pop_session_id','=', False)])

@api.depends('pop_id.cash_control_journal_ids')
def _compute_require_cash_control(self):
for rec in self:
Expand Down
2 changes: 2 additions & 0 deletions point_of_payment/security/ir.model.access.csv
Expand Up @@ -5,3 +5,5 @@ access_pop_session_user,access_pop_session_user,model_pop_session,point_of_payme
access_pop_session_manager,access_pop_session_manager,model_pop_session,point_of_payment.group_pop_manager,1,1,1,1
access_pop_journal_control_user,access_pop_journal_control_user,model_pop_session_journal_control,point_of_payment.group_pop_user,1,1,1,0
access_pop_journal_control_manager,access_pop_journal_control_user,model_pop_session_journal_control,point_of_payment.group_pop_manager,1,1,1,1
access_pop_payment_import_user,access_pop_payment_import_user,model_pop_payment_import,point_of_payment.group_pop_user,1,1,1,1
access_pop_payment_import_manager,access_pop_payment_import_manager,model_pop_payment_import,point_of_payment.group_pop_manager,1,1,1,1
12 changes: 12 additions & 0 deletions point_of_payment/views/account_payment.xml
Expand Up @@ -16,6 +16,18 @@
/>

</field>
<field name="destination_journal_id" position='before'>
<field name="dest_pop_id"
attrs="{'invisible': [('is_internal_transfer', '=', True), ('destination_journal_id', '!=', False)],
'readonly': [('state', '!=', 'draft')], 'required': [('is_internal_transfer', '=', True),('state', '=', 'draft'),('destination_journal_id', '=', False)]}"/>
</field>
<field name="destination_journal_id" position='attributes'>
<attribute name="attrs" value="{'invisible': [('is_internal_transfer', '=', False),('dest_pop_id', '!=', False)],
'readonly': [('state', '!=', 'draft')], 'required': [('is_internal_transfer', '=', True),('state', '=', 'draft'), ('dest_pop_id', '=', False)]}"></attribute>
</field>




</field>
</record>
Expand Down
4 changes: 3 additions & 1 deletion point_of_payment/views/pop_config_views.xml
Expand Up @@ -18,9 +18,11 @@
</div>
<group name="payments" string="Payments">
<field name="code"/>

<field name="company_id" groups="base.group_multi_company"/>
<field name="journal_ids" context="{'default_type': 'cash'}" widget="many2many_tags"/>
<field name="cash_control_journal_ids" domain="[('id', 'in', journal_ids) , ('type', '=', 'cash')]" widget="many2many_checkboxes"/>
<field name="sequence_id"/>
<field name="sequence_id" groups="base.group_no_one"/>
</group>
</sheet>
</form>
Expand Down
4 changes: 3 additions & 1 deletion point_of_payment/views/pop_session_views.xml
Expand Up @@ -28,7 +28,9 @@

<sheet>
<div class="oe_button_box" name="button_box">

<button name="action_import_payments" type="object" class="oe_stat_button" icon="fa-cash">
<span>Import</span>
</button>
</div>
<h1 class="oe_title">
Sesión:
Expand Down
4 changes: 2 additions & 2 deletions point_of_payment/wizards/pop_payment_import.py
Expand Up @@ -8,7 +8,7 @@
from datetime import datetime


class PopPaymentImport(models.Model):
class PopPaymentImport(models.TransientModel):
_name = 'pop.payment.import'
_description = 'Import Payment into session'

Expand All @@ -31,5 +31,5 @@ def set_session(self):
rec.pop_session_id = rec.pop_id.session_ids[-1]

def action_import_payment(self):
update_payment_ids = self.payment_ids.filtered(lambda p: p.pop_session_id is False and p.journal_id in p.journal_ids.ids)
update_payment_ids = self.payment_ids.filtered(lambda p: p.pop_session_id is False ) #and p.journal_id in p.journal_ids.ids
update_payment_ids.pop_session_id = self.pop_session_id.id
2 changes: 1 addition & 1 deletion point_of_payment/wizards/pop_payment_import.xml
Expand Up @@ -10,7 +10,7 @@
<group>
<field name="pop_id"></field>
<field name="pop_session_id" domain="[('pop_id', '=', pop_id)]"></field>
<field name="payment_ids" attrs="{'invisible':1}"></field>
<field name="payment_ids" domain="[('pop_session_id','=', False)]"></field>
</group>
</sheet>
<footer>
Expand Down

0 comments on commit 1bad3dd

Please sign in to comment.