You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

143 lines
4.0 KiB

from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
from psycopg2 import sql, DatabaseError
from werkzeug import utils
class opendons_payment_batch(models.Model):
_name = 'opendons_payment_batch'
_description = 'manage payment batch'
company_id = fields.Many2one(
"res.company",
string="Company",
ondelete="cascade",
default=lambda self: self.env.company,
)
payment_mode_id = fields.Many2one(
"account.payment.mode",
string="Payment Mode",
domain="[('company_id', '=', company_id), ('donation', '=', True)]",
copy=False,
tracking=True
)
# product_id=fields.Many2one(
# 'product.product',
# string='Product',
# index=True,
# track_visibility='onchange',
# ondelete='restrict'
# )
partner_id=fields.Many2one(
'res.partner',
string='Partner',
index=True,
track_visibility='onchange',
ondelete='restrict'
)
operation_id=fields.Many2one(
'opendons.operation',
string='Operation',
index=True,
domain=[('state', '=', 'exported')],
track_visibility='onchange',
ondelete='restrict'
)
segment_id=fields.Many2one(
'opendons.segment',
string='Segment',
index=True,
track_visibility='onchange',
ondelete='restrict'
)
donation_ids = fields.One2many(
'donation.donation',
'payment_batch_id',
string='donation',
track_visibility='onchange')
payment_count=fields.Integer(string='payments count', readonly=True)
payment_input=fields.Char('Input field')
# payment_lines = fields.One2many(
# 'opendons_payment_batch.lines',
# 'payment_batch_id',
# string='Payment lines',
# track_visibility='onchange')
@api.onchange('operation_id')
def _onchange_operation_id(self):
res = {}
res['domain']={'segment_id':[('operation_id', '=', self.operation_id.id)]}
return res
@api.onchange("payment_input")
def _onchange_payment_input(self):
if self.payment_input:
inpt=self.payment_input.split(';')
if len(inpt)!=4:raise ValidationError('input string not valid')
partner_id=int(inpt[0])
key=inpt[1]
operation_id=int(inpt[2])
segment_id=int(inpt[3])
partner = self.env['res.partner'].sudo().search(['&',('id','=',int(partner_id)),('key','=',key)])
operation = self.env['res.partner'].sudo().search([('id','=',int(operation_id))])
segment = self.env['res.partner'].sudo().search([('id','=',int(segment_id))])
if not partner : ValidationError('partner not found')
if not operation : ValidationError('operation not found')
if not segment : ValidationError('segment not found')
self.partner_id=partner_id
self.operation_id=operation_id
self.segment_id=segment_id
res=self.action_ajouter_payment()
def action_ajouter_payment(self):
vals={}
vals['payment_batch_id']=self.id
vals['partner_id']=self.partner_id.id
vals['operation_id']=self.operation_id.id
vals['segment_id']=self.segment_id.id
vals['donation_date']=fields.Date.context_today(self)
self.env['donation.donation'].create(vals)
return True
class opendons_payment_batch_lines(models.Model):
_name = 'opendons_payment_batch.lines'
_description = 'manage payment batch lines'
_inherits = {
'donation.donation': 'donation_id',
}
# payment_batch_id = fields.Many2one(
# 'opendons_payment_batch',
# string='Payment Batch',
# ondelete='set null'
# )