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'
|
|
# )
|
|
|