diff --git a/easy_my_coop/__init__.py b/easy_my_coop/__init__.py index d682b72..c360b64 100644 --- a/easy_my_coop/__init__.py +++ b/easy_my_coop/__init__.py @@ -1,3 +1,4 @@ from . import models from . import controllers -from . import report \ No newline at end of file +from . import report +from . import wizard \ No newline at end of file diff --git a/easy_my_coop/__openerp__.py b/easy_my_coop/__openerp__.py index 80bd8d4..3877068 100644 --- a/easy_my_coop/__openerp__.py +++ b/easy_my_coop/__openerp__.py @@ -37,6 +37,7 @@ 'data': [ 'security/easy_my_coop_security.xml', 'security/ir.model.access.csv', + 'wizard/create_subscription_from_partner.xml', 'view/subscription_request_view.xml', 'view/email_template_view.xml', 'view/res_partner_view.xml', diff --git a/easy_my_coop/models/coop.py b/easy_my_coop/models/coop.py index a45ff53..9065905 100644 --- a/easy_my_coop/models/coop.py +++ b/easy_my_coop/models/coop.py @@ -252,6 +252,8 @@ class subscription_request(models.Model): partner_obj = self.env['res.partner'] if self.partner_id: + if not self.partner_id.cooperator: + self.partner_id.cooperator = True partner = self.partner_id else: if self.already_cooperator: diff --git a/easy_my_coop/view/res_partner_view.xml b/easy_my_coop/view/res_partner_view.xml index c2606ff..bfd9cc3 100644 --- a/easy_my_coop/view/res_partner_view.xml +++ b/easy_my_coop/view/res_partner_view.xml @@ -6,6 +6,13 @@ res.partner + +
+
+
+ diff --git a/easy_my_coop/wizard/__init__.py b/easy_my_coop/wizard/__init__.py index 65b2e1f..b1b0901 100644 --- a/easy_my_coop/wizard/__init__.py +++ b/easy_my_coop/wizard/__init__.py @@ -1,2 +1,2 @@ # -*- coding: utf-8 -*- -import cooperative_history_wizard +import create_subscription_from_partner diff --git a/easy_my_coop/wizard/create_subscription_from_partner.py b/easy_my_coop/wizard/create_subscription_from_partner.py new file mode 100644 index 0000000..aecf8c9 --- /dev/null +++ b/easy_my_coop/wizard/create_subscription_from_partner.py @@ -0,0 +1,99 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import time + +from openerp import api, fields, models, _ +import openerp.addons.decimal_precision as dp +from openerp.exceptions import UserError + +class PartnerCreateSubscription(models.TransientModel): + _name = "partner.create.subscription" + _description = "Create Subscription From Partner" + + @api.multi + @api.onchange('share_product') + def on_change_share_type(self): + self.share_qty = self.share_product.minimum_quantity + + @api.model + def _default_product_id(self): + domain = [('is_share','=',True),('default_share_product','=',True)] + active_id = self.env.context.get('active_id') + if active_id: + partner = self.env['res.partner'].browse(active_id) + if partner.is_company: + domain.append(('by_company','=',True)) + else: + domain.append(('by_individual','=',True)) + + return self.env['product.product'].search(domain) + + @api.model + def _get_partner(self): + active_id = self.env.context.get('active_id') + return self.env['res.partner'].browse(active_id) + + @api.model + def _get_is_company(self): + return self._get_partner().is_company + + @api.model + def _get_register_number(self): + partner = self._get_partner() + if partner.is_company: + return partner.company_register_number + else: + return partner.national_register_number + + @api.model + def _get_possible_share(self): + domain = [('is_share','=',True)] + partner = self._get_partner() + if partner.is_company: + domain.append(('by_company','=',True)) + else: + domain.append(('by_individual','=',True)) + + return domain + + @api.multi + @api.depends('share_product', 'share_qty') + def _compute_subscription_amount(self): + for sub_request in self: + sub_request.subscription_amount = sub_request.share_product.list_price * sub_request.share_qty + + is_company = fields.Boolean(String="Is company?", default=_get_is_company) + cooperator = fields.Many2one('res.partner', string="Cooperator", default=_get_partner) + register_number = fields.Char(string="Register Number", required=True, default=_get_register_number) + share_product = fields.Many2one('product.product', string='Share Type', domain=lambda self: self._get_possible_share(),\ + default=_default_product_id, required=True) + share_qty = fields.Integer(string="Share Quantity", required=True) + share_unit_price = fields.Float(related='share_product.list_price', string='Share price', readonly=True) + subscription_amount = fields.Float(compute='_compute_subscription_amount', string='Subscription amount', digits=dp.get_precision('Account'), readonly=True) + + @api.multi + def create_subscription(self): + sub_req = self.env['subscription.request'] + cooperator = self.cooperator + vals = {'partner_id': cooperator.id, + 'name': cooperator.name, + 'share_product_id':self.share_product.id, + 'ordered_parts':self.share_qty, + 'user_id':self.env.uid} + if self.is_company: + vals['company_register_number'] = self.register_number + else: + vals['no_registre'] = self.register_number + + if not self._get_register_number(): + if self.is_company: + cooperator.write({'company_register_number':self.register_number}) + else: + if sub_req.check_belgian_identification_id(self.register_number): + cooperator.write({'national_register_number':self.register_number}) + else: + raise UserError(_("The national register number is not valid.")) + + sub_req.create(vals) + return {'type': 'ir.actions.act_window_close'} + diff --git a/easy_my_coop/wizard/create_subscription_from_partner.xml b/easy_my_coop/wizard/create_subscription_from_partner.xml new file mode 100644 index 0000000..94a1f7b --- /dev/null +++ b/easy_my_coop/wizard/create_subscription_from_partner.xml @@ -0,0 +1,40 @@ + + + + + Create Subscription + partner.create.subscription + +
+

+ Subscription request will be created with data from the partner. +

+ + + + + + + + + +
+
+
+
+
+ + + Create Subscription + ir.actions.act_window + partner.create.subscription + form + form + new + + + +
+