Browse Source
[FIX] sometime product template and product product diverge.
[FIX] sometime product template and product product diverge.
we avoid such case by get product product for transfer toopull/60/head
houssine
5 years ago
1 changed files with 311 additions and 311 deletions
@ -1,311 +1,311 @@ |
|||
# -*- coding: utf-8 -*- |
|||
from datetime import datetime |
|||
|
|||
from openerp import api, fields, models, _ |
|||
from openerp.exceptions import ValidationError |
|||
|
|||
|
|||
class operation_request(models.Model): |
|||
_name = 'operation.request' |
|||
|
|||
def get_date_now(self): |
|||
return datetime.strftime(datetime.now(), '%Y-%m-%d') |
|||
|
|||
@api.multi |
|||
@api.depends('share_product_id', 'share_product_id.list_price', 'quantity') |
|||
def _compute_subscription_amount(self): |
|||
for operation_request in self: |
|||
operation_request.subscription_amount = (operation_request. |
|||
share_product_id. |
|||
list_price * |
|||
operation_request. |
|||
quantity) |
|||
|
|||
request_date = fields.Date(string='Request date', |
|||
default=lambda self: self.get_date_now()) |
|||
partner_id = fields.Many2one('res.partner', |
|||
string='Cooperator', |
|||
domain=[('member', '=', True)], |
|||
required=True) |
|||
partner_id_to = fields.Many2one('res.partner', |
|||
string='Transfered to', |
|||
domain=[('cooperator', '=', True)]) |
|||
operation_type = fields.Selection([('subscription', 'Subscription'), |
|||
('transfer', 'Transfer'), |
|||
('sell_back', 'Sell Back'), |
|||
('convert', 'Conversion')], |
|||
string='Operation Type', |
|||
required=True) |
|||
share_product_id = fields.Many2one('product.product', |
|||
string='Share type', |
|||
domain=[('is_share', '=', True)], |
|||
required=True) |
|||
share_to_product_id = fields.Many2one('product.product', |
|||
string='Convert to this share type', |
|||
domain=[('is_share', '=', True)]) |
|||
share_short_name = fields.Char(related='share_product_id.short_name', |
|||
string='Share type name') |
|||
share_to_short_name = fields.Char(related='share_to_product_id.short_name', |
|||
string='Share to type name') |
|||
share_unit_price = fields.Float(related='share_product_id.list_price', |
|||
string='Share price') |
|||
share_to_unit_price = fields.Float(related='share_to_product_id.list_price', |
|||
string='Share to price') |
|||
subscription_amount = fields.Float(compute='_compute_subscription_amount', |
|||
string='Operation amount') |
|||
quantity = fields.Integer(string='Number of share', |
|||
required=True) |
|||
state = fields.Selection([('draft', 'Draft'), |
|||
('waiting', 'Waiting'), |
|||
('approved', 'Approved'), |
|||
('done', 'Done'), |
|||
('cancelled', 'Cancelled'), |
|||
('refused', 'Refused')], |
|||
string='State', |
|||
required=True, |
|||
default='draft') |
|||
user_id = fields.Many2one('res.users', |
|||
string='Responsible', |
|||
readonly=True, |
|||
default=lambda self: self.env.user) |
|||
subscription_request = fields.One2many('subscription.request', |
|||
'operation_request_id', |
|||
string="Share Receiver Info", |
|||
help="In case on a transfer of" |
|||
" share. If the share receiver" |
|||
" isn't a effective member then a" |
|||
" subscription form should" |
|||
" be filled.") |
|||
receiver_not_member = fields.Boolean(string='Receiver is not a member') |
|||
company_id = fields.Many2one('res.company', |
|||
string='Company', |
|||
required=True, |
|||
change_default=True, |
|||
readonly=True, |
|||
default=lambda self: self.env['res.company']._company_default_get()) |
|||
|
|||
invoice = fields.Many2one('account.invoice', |
|||
string="Invoice") |
|||
|
|||
@api.multi |
|||
def approve_operation(self): |
|||
for rec in self: |
|||
rec.write({'state': 'approved'}) |
|||
|
|||
@api.multi |
|||
def refuse_operation(self): |
|||
for rec in self: |
|||
rec.write({'state': 'refused'}) |
|||
|
|||
@api.multi |
|||
def submit_operation(self): |
|||
for rec in self: |
|||
rec.validate() |
|||
rec.write({'state': 'waiting'}) |
|||
|
|||
@api.multi |
|||
def cancel_operation(self): |
|||
for rec in self: |
|||
rec.write({'state': 'cancelled'}) |
|||
|
|||
@api.multi |
|||
def reset_to_draft(self): |
|||
for rec in self: |
|||
rec.write({'state': 'draft'}) |
|||
|
|||
def get_total_share_dic(self, partner): |
|||
total_share_dic = {} |
|||
prod_template_obj = self.env['product.template'] |
|||
share_products = prod_template_obj.search([('is_share', '=', True)]) |
|||
|
|||
for share_product in share_products: |
|||
total_share_dic[share_product.id] = 0 |
|||
|
|||
for line in partner.share_ids: |
|||
total_share_dic[line.share_product_id.id] += line.share_number |
|||
|
|||
return total_share_dic |
|||
|
|||
# This function doesn't handle the case of a cooperator can own |
|||
# different kinds of share type |
|||
def hand_share_over(self, partner, share_product_id, quantity): |
|||
if not partner.member: |
|||
raise ValidationError(_("This operation can't be executed if the" |
|||
" cooperator is not an effective member")) |
|||
|
|||
share_ind = len(partner.share_ids) |
|||
i = 1 |
|||
while quantity > 0: |
|||
line = self.partner_id.share_ids[share_ind-i] |
|||
if line.share_product_id.id == share_product_id.id: |
|||
if quantity > line.share_number: |
|||
quantity -= line.share_number |
|||
line.unlink() |
|||
else: |
|||
share_left = line.share_number - quantity |
|||
quantity = 0 |
|||
line.write({'share_number': share_left}) |
|||
i += 1 |
|||
# if the cooperator sold all his shares he's no more |
|||
# an effective member |
|||
remaning_share_dict = 0 |
|||
for share_quant in self.get_total_share_dic(partner).values(): |
|||
remaning_share_dict += share_quant |
|||
if remaning_share_dict == 0: |
|||
self.partner_id.write({'member': False, 'old_member': True}) |
|||
|
|||
def has_share_type(self): |
|||
for line in self.partner_id.share_ids: |
|||
if line.share_product_id.id == self.share_product_id.id: |
|||
return True |
|||
return False |
|||
|
|||
def validate(self): |
|||
if not self.has_share_type() and \ |
|||
self.operation_type in ['sell_back', 'transfer']: |
|||
raise ValidationError(_("The cooperator doesn't own this share" |
|||
" type. Please choose the appropriate" |
|||
" share type.")) |
|||
|
|||
if self.operation_type in ['sell_back', 'convert', 'transfer']: |
|||
total_share_dic = self.get_total_share_dic(self.partner_id) |
|||
|
|||
if self.quantity > total_share_dic[self.share_product_id.id]: |
|||
raise ValidationError(_("The cooperator can't hand over more" |
|||
" shares that he/she owns.")) |
|||
|
|||
if self.operation_type == 'convert': |
|||
amount_to_convert = self.share_unit_price * self.quantity |
|||
share_price = self.share_to_product_id.list_price |
|||
remainder = amount_to_convert % share_price |
|||
|
|||
if remainder != 0: |
|||
raise ValidationError(_("The conversion must give a whole" |
|||
" number for quantity")) |
|||
if self.company_id.unmix_share_type: |
|||
if self.share_product_id.code == self.share_to_product_id.code: |
|||
raise ValidationError(_("You can't convert the share to" |
|||
" the same share type.")) |
|||
if self.subscription_amount != self.partner_id.total_value: |
|||
raise ValidationError(_("You must convert all the shares" |
|||
" to the selected type.")) |
|||
else: |
|||
if self.subscription_amount != self.partner_id.total_value: |
|||
raise ValidationError(_("Converting just part of the" |
|||
" shares is not yet implemented")) |
|||
elif self.operation_type == 'transfer': |
|||
if not self.receiver_not_member and self.company_id.unmix_share_type \ |
|||
and (self.partner_id_to.cooperator_type |
|||
and self.partner_id.cooperator_type != self.partner_id_to.cooperator_type): |
|||
raise ValidationError(_("This share type could not be" |
|||
" transfered to " + |
|||
self.partner_id_to.name)) |
|||
if self.receiver_not_member and self.subscription_request \ |
|||
and not self.subscription_request.validated: |
|||
raise ValidationError(_("The information of the receiver" |
|||
" are not correct. Please correct" |
|||
" the information before" |
|||
" submitting")) |
|||
|
|||
@api.multi |
|||
def execute_operation(self): |
|||
self.ensure_one() |
|||
|
|||
effective_date = self.get_date_now() |
|||
sub_request = self.env['subscription.request'] |
|||
|
|||
for rec in self: |
|||
rec.validate() |
|||
|
|||
if rec.state != 'approved': |
|||
raise ValidationError(_("This operation must be approved" |
|||
" before to be executed")) |
|||
|
|||
values = { |
|||
'partner_id': rec.partner_id.id, 'quantity': rec.quantity, |
|||
'share_product_id': rec.share_product_id.id, |
|||
'type': rec.operation_type, |
|||
'share_unit_price': rec.share_unit_price, |
|||
'date': effective_date, |
|||
} |
|||
|
|||
if rec.operation_type == 'sell_back': |
|||
self.hand_share_over(rec.partner_id, rec.share_product_id, |
|||
rec.quantity) |
|||
elif rec.operation_type == 'convert': |
|||
amount_to_convert = rec.share_unit_price * rec.quantity |
|||
convert_quant = int(amount_to_convert / rec.share_to_product_id.list_price) |
|||
remainder = amount_to_convert % rec.share_to_product_id.list_price |
|||
|
|||
if convert_quant > 0 and remainder == 0: |
|||
share_ids = rec.partner_id.share_ids |
|||
line = share_ids[0] |
|||
if len(share_ids) > 1: |
|||
share_ids[1:len(share_ids)].unlink() |
|||
line.write({ |
|||
'share_number': convert_quant, |
|||
'share_product_id': rec.share_to_product_id.id, |
|||
'share_unit_price': rec.share_to_unit_price, |
|||
'share_short_name': rec.share_to_short_name |
|||
}) |
|||
values['share_to_product_id'] = rec.share_to_product_id.id |
|||
values['quantity_to'] = convert_quant |
|||
else: |
|||
raise ValidationError(_("Converting just part of the" |
|||
" shares is not yet implemented")) |
|||
elif rec.operation_type == 'transfer': |
|||
sequence_id = self.env.ref('easy_my_coop.sequence_subscription', False) |
|||
if rec.receiver_not_member: |
|||
partner = rec.subscription_request.create_coop_partner() |
|||
# get cooperator number |
|||
sub_reg_num = int(sequence_id.next_by_id()) |
|||
partner_vals = sub_request.get_eater_vals(partner, rec.share_product_id) |
|||
partner_vals['member'] = True |
|||
partner_vals['cooperator_register_number'] = sub_reg_num |
|||
partner.write(partner_vals) |
|||
rec.partner_id_to = partner |
|||
else: |
|||
# means an old member or cooperator candidate |
|||
if not rec.partner_id_to.member: |
|||
if rec.partner_id_to.cooperator_register_number == 0: |
|||
sub_reg_num = int(sequence_id.next_by_id()) |
|||
partner_vals['cooperator_register_number'] = sub_reg_num |
|||
partner_vals = sub_request.get_eater_vals( |
|||
rec.partner_id_to, |
|||
rec.share_product_id) |
|||
partner_vals['member'] = True |
|||
partner_vals['old_member'] = False |
|||
rec.partner_id_to.write(partner_vals) |
|||
# remove the parts to the giver |
|||
self.hand_share_over(rec.partner_id, |
|||
rec.share_product_id, |
|||
rec.quantity) |
|||
# give the share to the receiver |
|||
self.env['share.line'].create({ |
|||
'share_number': rec.quantity, |
|||
'partner_id': rec.partner_id_to.id, |
|||
'share_product_id': rec.share_product_id.id, |
|||
'share_unit_price': rec.share_unit_price, |
|||
'effective_date': effective_date}) |
|||
values['partner_id_to'] = rec.partner_id_to.id |
|||
else: |
|||
raise ValidationError(_("This operation is not yet" |
|||
" implemented.")) |
|||
|
|||
sequence_operation = self.env.ref('easy_my_coop.sequence_register_operation', False) |
|||
sub_reg_operation = sequence_operation.next_by_id() |
|||
|
|||
values['name'] = sub_reg_operation |
|||
values['register_number_operation'] = int(sub_reg_operation) |
|||
|
|||
rec.write({'state': 'done'}) |
|||
|
|||
# send mail to the receiver |
|||
if rec.operation_type == 'transfer': |
|||
certificat_email_template = self.env.ref('easy_my_coop.email_template_share_transfer', False) |
|||
certificat_email_template.send_mail(rec.partner_id_to.id, False) |
|||
|
|||
self.env['subscription.register'].create(values) |
|||
|
|||
certificat_email_template = self.env.ref('easy_my_coop.email_template_share_update', False) |
|||
certificat_email_template.send_mail(rec.partner_id.id, False) |
|||
# -*- coding: utf-8 -*- |
|||
from datetime import datetime |
|||
|
|||
from openerp import api, fields, models, _ |
|||
from openerp.exceptions import ValidationError |
|||
|
|||
|
|||
class operation_request(models.Model): |
|||
_name = 'operation.request' |
|||
|
|||
def get_date_now(self): |
|||
return datetime.strftime(datetime.now(), '%Y-%m-%d') |
|||
|
|||
@api.multi |
|||
@api.depends('share_product_id', 'share_product_id.list_price', 'quantity') |
|||
def _compute_subscription_amount(self): |
|||
for operation_request in self: |
|||
operation_request.subscription_amount = (operation_request. |
|||
share_product_id. |
|||
list_price * |
|||
operation_request. |
|||
quantity) |
|||
|
|||
request_date = fields.Date(string='Request date', |
|||
default=lambda self: self.get_date_now()) |
|||
partner_id = fields.Many2one('res.partner', |
|||
string='Cooperator', |
|||
domain=[('member', '=', True)], |
|||
required=True) |
|||
partner_id_to = fields.Many2one('res.partner', |
|||
string='Transfered to', |
|||
domain=[('cooperator', '=', True)]) |
|||
operation_type = fields.Selection([('subscription', 'Subscription'), |
|||
('transfer', 'Transfer'), |
|||
('sell_back', 'Sell Back'), |
|||
('convert', 'Conversion')], |
|||
string='Operation Type', |
|||
required=True) |
|||
share_product_id = fields.Many2one('product.product', |
|||
string='Share type', |
|||
domain=[('is_share', '=', True)], |
|||
required=True) |
|||
share_to_product_id = fields.Many2one('product.product', |
|||
string='Convert to this share type', |
|||
domain=[('is_share', '=', True)]) |
|||
share_short_name = fields.Char(related='share_product_id.short_name', |
|||
string='Share type name') |
|||
share_to_short_name = fields.Char(related='share_to_product_id.short_name', |
|||
string='Share to type name') |
|||
share_unit_price = fields.Float(related='share_product_id.list_price', |
|||
string='Share price') |
|||
share_to_unit_price = fields.Float(related='share_to_product_id.list_price', |
|||
string='Share to price') |
|||
subscription_amount = fields.Float(compute='_compute_subscription_amount', |
|||
string='Operation amount') |
|||
quantity = fields.Integer(string='Number of share', |
|||
required=True) |
|||
state = fields.Selection([('draft', 'Draft'), |
|||
('waiting', 'Waiting'), |
|||
('approved', 'Approved'), |
|||
('done', 'Done'), |
|||
('cancelled', 'Cancelled'), |
|||
('refused', 'Refused')], |
|||
string='State', |
|||
required=True, |
|||
default='draft') |
|||
user_id = fields.Many2one('res.users', |
|||
string='Responsible', |
|||
readonly=True, |
|||
default=lambda self: self.env.user) |
|||
subscription_request = fields.One2many('subscription.request', |
|||
'operation_request_id', |
|||
string="Share Receiver Info", |
|||
help="In case on a transfer of" |
|||
" share. If the share receiver" |
|||
" isn't a effective member then a" |
|||
" subscription form should" |
|||
" be filled.") |
|||
receiver_not_member = fields.Boolean(string='Receiver is not a member') |
|||
company_id = fields.Many2one('res.company', |
|||
string='Company', |
|||
required=True, |
|||
change_default=True, |
|||
readonly=True, |
|||
default=lambda self: self.env['res.company']._company_default_get()) |
|||
|
|||
invoice = fields.Many2one('account.invoice', |
|||
string="Invoice") |
|||
|
|||
@api.multi |
|||
def approve_operation(self): |
|||
for rec in self: |
|||
rec.write({'state': 'approved'}) |
|||
|
|||
@api.multi |
|||
def refuse_operation(self): |
|||
for rec in self: |
|||
rec.write({'state': 'refused'}) |
|||
|
|||
@api.multi |
|||
def submit_operation(self): |
|||
for rec in self: |
|||
rec.validate() |
|||
rec.write({'state': 'waiting'}) |
|||
|
|||
@api.multi |
|||
def cancel_operation(self): |
|||
for rec in self: |
|||
rec.write({'state': 'cancelled'}) |
|||
|
|||
@api.multi |
|||
def reset_to_draft(self): |
|||
for rec in self: |
|||
rec.write({'state': 'draft'}) |
|||
|
|||
def get_total_share_dic(self, partner): |
|||
total_share_dic = {} |
|||
prod_template_obj = self.env['product.product'] |
|||
share_products = prod_template_obj.search([('is_share', '=', True)]) |
|||
|
|||
for share_product in share_products: |
|||
total_share_dic[share_product.id] = 0 |
|||
|
|||
for line in partner.share_ids: |
|||
total_share_dic[line.share_product_id.id] += line.share_number |
|||
|
|||
return total_share_dic |
|||
|
|||
# This function doesn't handle the case of a cooperator can own |
|||
# different kinds of share type |
|||
def hand_share_over(self, partner, share_product_id, quantity): |
|||
if not partner.member: |
|||
raise ValidationError(_("This operation can't be executed if the" |
|||
" cooperator is not an effective member")) |
|||
|
|||
share_ind = len(partner.share_ids) |
|||
i = 1 |
|||
while quantity > 0: |
|||
line = self.partner_id.share_ids[share_ind-i] |
|||
if line.share_product_id.id == share_product_id.id: |
|||
if quantity > line.share_number: |
|||
quantity -= line.share_number |
|||
line.unlink() |
|||
else: |
|||
share_left = line.share_number - quantity |
|||
quantity = 0 |
|||
line.write({'share_number': share_left}) |
|||
i += 1 |
|||
# if the cooperator sold all his shares he's no more |
|||
# an effective member |
|||
remaning_share_dict = 0 |
|||
for share_quant in self.get_total_share_dic(partner).values(): |
|||
remaning_share_dict += share_quant |
|||
if remaning_share_dict == 0: |
|||
self.partner_id.write({'member': False, 'old_member': True}) |
|||
|
|||
def has_share_type(self): |
|||
for line in self.partner_id.share_ids: |
|||
if line.share_product_id.id == self.share_product_id.id: |
|||
return True |
|||
return False |
|||
|
|||
def validate(self): |
|||
if not self.has_share_type() and \ |
|||
self.operation_type in ['sell_back', 'transfer']: |
|||
raise ValidationError(_("The cooperator doesn't own this share" |
|||
" type. Please choose the appropriate" |
|||
" share type.")) |
|||
|
|||
if self.operation_type in ['sell_back', 'convert', 'transfer']: |
|||
total_share_dic = self.get_total_share_dic(self.partner_id) |
|||
|
|||
if self.quantity > total_share_dic[self.share_product_id.id]: |
|||
raise ValidationError(_("The cooperator can't hand over more" |
|||
" shares that he/she owns.")) |
|||
|
|||
if self.operation_type == 'convert': |
|||
amount_to_convert = self.share_unit_price * self.quantity |
|||
share_price = self.share_to_product_id.list_price |
|||
remainder = amount_to_convert % share_price |
|||
|
|||
if remainder != 0: |
|||
raise ValidationError(_("The conversion must give a whole" |
|||
" number for quantity")) |
|||
if self.company_id.unmix_share_type: |
|||
if self.share_product_id.code == self.share_to_product_id.code: |
|||
raise ValidationError(_("You can't convert the share to" |
|||
" the same share type.")) |
|||
if self.subscription_amount != self.partner_id.total_value: |
|||
raise ValidationError(_("You must convert all the shares" |
|||
" to the selected type.")) |
|||
else: |
|||
if self.subscription_amount != self.partner_id.total_value: |
|||
raise ValidationError(_("Converting just part of the" |
|||
" shares is not yet implemented")) |
|||
elif self.operation_type == 'transfer': |
|||
if not self.receiver_not_member and self.company_id.unmix_share_type \ |
|||
and (self.partner_id_to.cooperator_type |
|||
and self.partner_id.cooperator_type != self.partner_id_to.cooperator_type): |
|||
raise ValidationError(_("This share type could not be" |
|||
" transfered to " + |
|||
self.partner_id_to.name)) |
|||
if self.receiver_not_member and self.subscription_request \ |
|||
and not self.subscription_request.validated: |
|||
raise ValidationError(_("The information of the receiver" |
|||
" are not correct. Please correct" |
|||
" the information before" |
|||
" submitting")) |
|||
|
|||
@api.multi |
|||
def execute_operation(self): |
|||
self.ensure_one() |
|||
|
|||
effective_date = self.get_date_now() |
|||
sub_request = self.env['subscription.request'] |
|||
|
|||
for rec in self: |
|||
rec.validate() |
|||
|
|||
if rec.state != 'approved': |
|||
raise ValidationError(_("This operation must be approved" |
|||
" before to be executed")) |
|||
|
|||
values = { |
|||
'partner_id': rec.partner_id.id, 'quantity': rec.quantity, |
|||
'share_product_id': rec.share_product_id.id, |
|||
'type': rec.operation_type, |
|||
'share_unit_price': rec.share_unit_price, |
|||
'date': effective_date, |
|||
} |
|||
|
|||
if rec.operation_type == 'sell_back': |
|||
self.hand_share_over(rec.partner_id, rec.share_product_id, |
|||
rec.quantity) |
|||
elif rec.operation_type == 'convert': |
|||
amount_to_convert = rec.share_unit_price * rec.quantity |
|||
convert_quant = int(amount_to_convert / rec.share_to_product_id.list_price) |
|||
remainder = amount_to_convert % rec.share_to_product_id.list_price |
|||
|
|||
if convert_quant > 0 and remainder == 0: |
|||
share_ids = rec.partner_id.share_ids |
|||
line = share_ids[0] |
|||
if len(share_ids) > 1: |
|||
share_ids[1:len(share_ids)].unlink() |
|||
line.write({ |
|||
'share_number': convert_quant, |
|||
'share_product_id': rec.share_to_product_id.id, |
|||
'share_unit_price': rec.share_to_unit_price, |
|||
'share_short_name': rec.share_to_short_name |
|||
}) |
|||
values['share_to_product_id'] = rec.share_to_product_id.id |
|||
values['quantity_to'] = convert_quant |
|||
else: |
|||
raise ValidationError(_("Converting just part of the" |
|||
" shares is not yet implemented")) |
|||
elif rec.operation_type == 'transfer': |
|||
sequence_id = self.env.ref('easy_my_coop.sequence_subscription', False) |
|||
if rec.receiver_not_member: |
|||
partner = rec.subscription_request.create_coop_partner() |
|||
# get cooperator number |
|||
sub_reg_num = int(sequence_id.next_by_id()) |
|||
partner_vals = sub_request.get_eater_vals(partner, rec.share_product_id) |
|||
partner_vals['member'] = True |
|||
partner_vals['cooperator_register_number'] = sub_reg_num |
|||
partner.write(partner_vals) |
|||
rec.partner_id_to = partner |
|||
else: |
|||
# means an old member or cooperator candidate |
|||
if not rec.partner_id_to.member: |
|||
if rec.partner_id_to.cooperator_register_number == 0: |
|||
sub_reg_num = int(sequence_id.next_by_id()) |
|||
partner_vals['cooperator_register_number'] = sub_reg_num |
|||
partner_vals = sub_request.get_eater_vals( |
|||
rec.partner_id_to, |
|||
rec.share_product_id) |
|||
partner_vals['member'] = True |
|||
partner_vals['old_member'] = False |
|||
rec.partner_id_to.write(partner_vals) |
|||
# remove the parts to the giver |
|||
self.hand_share_over(rec.partner_id, |
|||
rec.share_product_id, |
|||
rec.quantity) |
|||
# give the share to the receiver |
|||
self.env['share.line'].create({ |
|||
'share_number': rec.quantity, |
|||
'partner_id': rec.partner_id_to.id, |
|||
'share_product_id': rec.share_product_id.id, |
|||
'share_unit_price': rec.share_unit_price, |
|||
'effective_date': effective_date}) |
|||
values['partner_id_to'] = rec.partner_id_to.id |
|||
else: |
|||
raise ValidationError(_("This operation is not yet" |
|||
" implemented.")) |
|||
|
|||
sequence_operation = self.env.ref('easy_my_coop.sequence_register_operation', False) |
|||
sub_reg_operation = sequence_operation.next_by_id() |
|||
|
|||
values['name'] = sub_reg_operation |
|||
values['register_number_operation'] = int(sub_reg_operation) |
|||
|
|||
rec.write({'state': 'done'}) |
|||
|
|||
# send mail to the receiver |
|||
if rec.operation_type == 'transfer': |
|||
certificat_email_template = self.env.ref('easy_my_coop.email_template_share_transfer', False) |
|||
certificat_email_template.send_mail(rec.partner_id_to.id, False) |
|||
|
|||
self.env['subscription.register'].create(values) |
|||
|
|||
certificat_email_template = self.env.ref('easy_my_coop.email_template_share_update', False) |
|||
certificat_email_template.send_mail(rec.partner_id.id, False) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue