gestion des demandes d'évolution pour le centre kalachakra non géré dans les module booking et opendons
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.
 
 
 
 

154 lines
5.8 KiB

from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError, Warning
from psycopg2 import sql, DatabaseError
from datetime import date,datetime,timedelta
from dateutil.relativedelta import relativedelta
import logging
from werkzeug import utils
import re
_logger = logging.getLogger(__name__)
import json
class AccountMove(models.Model):
_inherit = 'account.move'
description=fields.Char(compute='_compute_description')
transaction_date=fields.Datetime(compute='_compute_transaction_date')
transaction_amount=fields.Float(compute='_compute_transaction_amount')
systempay_ref=fields.Text(compute='_compute_systempay_ref')
date_compta=fields.Datetime('date import',default=False)
date_compta_end_of_stay=fields.Datetime('date import',default=False)
date_compta_out_refund=fields.Datetime('date import',default=False)
out_invoice_id=fields.Many2one('account.move' ,ondelete="cascade",domain="[('partner_id','=',partner_id),('move_type','=','out_invoice'),('state','!=','paid')]")
payment_ids=fields.Many2many('account.payment',compute='_compute_payment_ids')
down_payment_paid=fields.Boolean(compute='_compute_down_payment_paid')
is_balance_invoice=fields.Boolean(compute='_compute_is_balance_invoice')
def write(self, data):
res = super(AccountMove, self).write(data)
membership=False
#Si option d'adhesion on prepare la creation de l'adhesion
membership_product=self.env['product.product'].sudo().search([('membership_product','=',True)],limit=1)
for line in self.invoice_line_ids:
if membership_product.id==int(line.product_id.id):
membership=True
break
if self.payment_state=='paid' and membership:
#recherche de l'ahésion associée à la facture
m=self.env['kalachakra.membership'].search([('invoice_id','=',int(self.id))])
if m:
m.start_date=datetime.now()
m.end_date=datetime.now()+relativedelta(years=1)
#m.email_confirmation()
#mise à jour des dates adhésions à partir de la date de paiement
else:
#création de l'adhésion
vals={}
vals['invoice_id']=int(self.id)
vals['partner_id']=int(self.partner_id)
vals['product_id']=int(membership_product.id)
vals['start_date']=datetime.now()
vals['end_date']=datetime.now()+relativedelta(years=1)
vals['amount']=line.price_unit
vals['state']='done'
membership=self.env['kalachakra.membership'].sudo().create(vals)
return True
def _compute_payment_ids(self):
payments=self.env['account.payment'].sudo().search([])
for rec in self:
rec.payment_ids=False
for p in payments:
for recon in p.reconciled_invoice_ids:
if recon.id==rec.id:
rec.write({'payment_ids':[(4,p.id)]})
def _compute_description(self):
for a in self:
a.description=''
for line in a.line_ids:
a.description=line.product_id.name
break
def _compute_transaction_date(self):
for a in self:
a.transaction_date=False
for t in a.transaction_ids:
a.transaction_date=t.date
break
def _compute_transaction_amount(self):
for a in self:
a.transaction_amount=False
for t in a.transaction_ids:
a.transaction_amount=t.amount
break
def _compute_systempay_ref(self):
for a in self:
a.systempay_ref=False
for t in a.transaction_ids:
if t.systempay_raw_data:
raw=t.systempay_raw_data.split(",")
for r in raw:
r_s=r.split(":")
#_logger.error('vads:'+r_s[0])
if r_s[0]==" 'vads_order_id'":
a.systempay_ref=r_s[1].replace("'","")
break
def _compute_down_payment_paid(self):
reg=self.env['event.registration'].search([('balance_invoice_id','=',self.id)])
if reg :
if reg.date_payment_down_payment :self.down_payment_paid=True
else :self.down_payment_paid=False
else:
self.down_payment_paid=False
down_payment_paid=True
def _compute_is_balance_invoice(self):
reg=self.env['event.registration'].search([('balance_invoice_id','=',self.id)])
if reg:self.is_balance_invoice=True
else:self.is_balance_invoice=False
def button_event_registration(self):
reg=self.env['event.registration'].search(['|','|','|',('invoice_id','=',self.id),\
('down_payment_invoice_id','=',self.id),\
('balance_invoice_id','=',self.id),\
('end_of_stay_invoice_id','=',self.id)])
if reg :
event_id=reg.event_id
action=self.env.ref('event.action_registration').read()[0]
action.update({
'view_mode': 'form',
'res_id': reg.id,
'view_type':'form',
"views": [[False, "form"]],
})
return action