X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=lhc.py;h=494773c59ee337f06c55fe0187d6fe292696b045;hb=1c832545f5d8f104053677d75e1a5b93fcb51060;hp=8a7435a882e78f3146422afc9da8ac7454df5f8e;hpb=15fd6b3f8ebacb75a93256ba4da64a8bdb896e3c;p=burette%2Flhc.git diff --git a/lhc.py b/lhc.py index 8a7435a..494773c 100644 --- a/lhc.py +++ b/lhc.py @@ -2,7 +2,7 @@ ############################################################################## # # lhc module for OpenERP, Customize OpenERP for L'Heureux Cyclage Copyright -# (C) 2013-2017 L'Heureux Cyclage () +# (C) 2013-2022 L'Heureux Cyclage () # # This file is a part of lhc_custom_oe # @@ -24,23 +24,174 @@ from openerp.osv import osv from openerp.osv import orm from openerp.osv import fields - +from openerp.tools.translate import _ import openerp.addons.decimal_precision as dp + class res_partner(orm.Model): _inherit = 'res.partner' + def _get_county(self, cr, uid, ids, name, args, context=None): + """docstring for _county_get_fnc""" + res = {} + for obj in self.browse(cr, uid, ids, context=context): + if obj.zip: + res[obj.id] = obj.zip[0:2] + else: + res[obj.id] = '' + return res + _columns = { - 'usual_contact': fields.boolean('Usual contact', help='This contact is a usual contact for L\'Heureux Cyclage employees. This field can be used to discriminated contacts for differents usages.'), + 'usual_contact': fields.boolean( + 'Usual contact', + help="""This contact is a usual contact for L\'Heureux Cyclage + employees. This field can be used to discriminated contacts for + differents usages.""" + ), 'kit_sent': fields.boolean('Welcome kit sent'), + 'county_code': fields.function( + _get_county, + method=True, + string='County code', + type='char', + size=2, + store={ + 'res.partner': ( + lambda self, cr, uid, ids, c={}: ids, + ['zip'], 10)}, + ), } + _defaults = { + 'kit_sent': lambda *a: False, + } + + class product_template(orm.Model): _inherit = 'product.template' _columns = { - 'standard_price': fields.float('Cost', digits_compute=dp.get_precision('Product Price'), help="Cost price of the product used for standard stock valuation in accounting and used as a base price on purchase orders.", groups="base.group_user,lhc.group_volunteer"), + 'standard_price': fields.float( + 'Cost', + digits_compute=dp.get_precision('Product Price'), + help="""Cost price of the product used for standard stock valuation + in accounting and used as a base price on purchase orders.", + groups="base.group_user,lhc.group_volunteer""" + ), + } + + +class res_users(orm.Model): + _inherit = 'res.users' + + def onchange_partner_id(self, cr, uid, ids, partner_id, login): + """Define user email address from partner email address""" + v = {} + partners = self.pool.get('res.partner') + partner = partners.browse(cr, uid, partner_id) + if partner.email: + v['email'] = partner.email + else: + v = {} + return {'value': v} + + +class event_event(orm.Model): + _inherit = 'event.event' + + _columns = { + 'duration': fields.float( + 'Duration', + digits_compute=dp.get_precision('Product Unit of Measure'), + help='Duration in hours' + ), } +class event_registration(orm.Model): + _inherit = 'event.registration' + + _columns = { + 'gender': fields.selection([ + ('female', 'Female'), + ('male', 'Male'), + ('other', 'Other')], + 'Gender'), + 'position': fields.selection([ + ('employee', 'Employee'), + ('individual', 'Invividual'), + ('volunteer', 'Volunteer')], + 'Position'), + 'funding_main': fields.selection([ + ('individual', 'Individual'), + ('opco', 'OPCO'), + ('company', 'Company'), + ('pole_emploi', 'Pole Emploi')], + 'Main funding', help='Main funding origin'), + 'fundings_others': fields.char('Others fundings origins', size=128), + 'sale_order_ids': fields.many2many( + 'sale.order', + 'event_registration_sale_order_rel', + 'event_registration_id', + 'sale_order_id', + 'Related sale order(s)' + ), + 'invoice_ids': fields.many2many( + 'account.invoice', + 'event_registration_invoice_id_rel', + 'event_registration_id', + 'invoice_id', + 'Related invoice(s)' + ), + } + + def onchange_contact_id(self, cr, uid, ids, contact, partner, context=None): + """Contcat phone with mobile phone if exist. If mobile exist and not + phone, add mobile number""" + vals = super(event_registration, self).onchange_contact_id(cr, uid, ids, contact, partner, context) + addr_obj = self.pool.get('res.partner') + contact_id = addr_obj.browse(cr, uid, contact, context=context) + phone = vals['value']['phone'] + mobile = contact_id.mobile + if mobile: + if phone: + vals['value']['phone'] = '%s - %s' % (phone, mobile) + else: + vals['value']['phone'] = mobile + return vals + + +class crossovered_budget_lines(orm.Model): + _inherit = 'crossovered.budget.lines' + + def _prac_amt(self, cr, uid, ids, context=None): + """Calculate pratical amount even if there is no analytic account""" + res = {} + result = 0.0 + if context is None: + context = {} + account_obj = self.pool.get('account.account') + + for line in self.browse(cr, uid, ids, context=context): + acc_ids = [x.id for x in line.general_budget_id.account_ids] + if not acc_ids: + raise osv.except_osv(_('Error!'),_("The Budget '%s' has no accounts!") % ustr(line.general_budget_id.name)) + acc_ids = account_obj._get_children_and_consol(cr, uid, acc_ids, context=context) + date_to = line.date_to + date_from = line.date_from + + if line.analytic_account_id.id: + res = super(crossovered_budget_lines, self)._prac_amt(cr, uid, ids, context) + else: + cr.execute("SELECT SUM(credit) - SUM(debit) FROM account_move_line WHERE (date " + "between to_date(%s,'yyyy-mm-dd') AND to_date(%s,'yyyy-mm-dd')) AND " + "account_id=ANY(%s)", (date_from, date_to,acc_ids,)) + result = cr.fetchone()[0] + if result is None: + result = 0.00 + res[line.id] = result + + return res + + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: