class wolftrak_new2(osv.Model): _name = "res.partner" _inherit = "res.partner" _columns = { 'ci': fields.char('Documento de Identificacion', help='Documento de Identificacion'), 'estado': fields.char(string='Estado'), 'regimen_pago': fields.char(string='Regimen de Pago') } @api.onchange('ci') def user_validation(self): # Realiza la comparacion del dato que se insertara con los registrados en la base de datos db_ci = self.search([('ci', '=', self.ci)]) if db_ci and self.ci: # limpia los campo si el documento de identidad esta registrado self.ci = '' self.name = '' self.estado = '' # pasado el rroceso de busqueda de rnc por try para evitar la generacion de ventanas de error try: rnc_record = get_rnc_record(self.ci) self.name = rnc_record[1] self.estado = rnc_record[5] self.regimen_pago = rnc_record[4] except: pass
class policy_line_presence(models.Model): _name = 'hr.policy.line.presence' _columns = { 'name': fields.char('Name', size=64, required=True), 'policy_id': fields.many2one('hr.policy.presence', 'Policy'), 'code': fields.char('Code', required=True, help="Use this code in the salary rules."), 'rate': fields.float('Rate', required=True, help='Multiplier of employee wage.'), 'type': fields.selection([('normal', 'Normal Working Hours'), ('holiday', 'Holidays'), ('restday', 'Rest Days')], 'Type', required=True), 'active_after': fields.integer( 'Active After', required=True, help='Minutes after first punch of the day in which policy will ' 'take effect.'), 'duration': fields.integer('Duration', required=True, help="In minutes.") } _defaults = { 'rate': 1.0, }
class nomor_faktur_pajak(osv.osv): _name = "nomor.faktur.pajak" _description = 'Nomor faktur Pajak' def _nomor_faktur(self, cr, uid, ids, nomorfaktur, arg, context=None): res = {} for nomor in self.browse(cr, uid, ids, context): res[nomor.id] = "%s.%s.%s" % (nomor.nomor_perusahaan, nomor.tahun_penerbit, nomor.nomor_urut) return res _columns = { 'nomor_perusahaan' : fields.char('Nomor Perusahaan', size=3), 'tahun_penerbit': fields.char('Tahun Penerbit', size=2), 'nomor_urut': fields.char('Nomor Urut', size=8), 'name': fields.function(_nomor_faktur, type='char', string="Nomor Faktur", store=True), 'invoice_id': fields.many2one('account.invoice','Invoice No'), 'partner_id' : fields.many2one('res.partner', "Customer"), 'dpp' : fields.float('Untaxed Amount'), 'tax_amount': fields.float("Tax Amount"), 'date_used' : fields.date("Used Date"), 'company_id': fields.many2one('res.company', 'Company'), 'currency_id': fields.many2one('res.currency', 'Currency'), 'type' : fields.selection([('in','Faktur Pajak Masukan'),('out','Faktur Pajak Keluaran')],'Type'), 'status': fields.selection([('1','Used'),('0','Not Used')],'Status'), } _defaults = { 'status': '0', } _sql_constraints = [ ('faktur_unique', 'unique(nomor_perusahaan,tahun_penerbit,nomor_urut)', 'Number Faktur Must Be Unique.'), ]
class policy_line_ot(models.Model): _name = 'hr.policy.line.ot' def _tz_list(self, cr, uid, context=None): res = tuple() for name in common_timezones: res += ((name, name),) return res _columns = { 'name': fields.char('Name', size=64, required=True), 'policy_id': fields.many2one('hr.policy.ot', 'Policy'), 'type': fields.selection([('daily', 'Daily'), ('weekly', 'Weekly'), ('restday', 'Rest Day'), ('holiday', 'Public Holiday')], 'Type', required=True), 'weekly_working_days': fields.integer('Weekly Working Days'), 'active_after': fields.integer( 'Active After', help="Minutes after which this policy applies"), 'active_start_time': fields.char( 'Active Start Time', size=5, help="Time in 24 hour time format"), 'active_end_time': fields.char( 'Active End Time', size=5, help="Time in 24 hour time format"), 'tz': fields.selection(_tz_list, 'Time Zone'), 'rate': fields.float( 'Rate', required=True, help='Multiplier of employee wage.'), 'code': fields.char( 'Code', required=True, help="Use this code in the salary rules.") }
class solt_http_test(osv.osv): _name = 'solt.http.test' _columns = { 'name': fields.char('URL', size=1024), 'method': fields.selection([('post', 'POST'), ('get', 'GET'), ('put', 'PUT'), ('patch', 'PATCH'), ('delete', 'DELETE')], string='HTTP Method'), 'user': fields.char('User', size=64), 'password': fields.char('Password', size=64), 'content': fields.text('Content'), 'response': fields.text('Response'), } def action_request(self, cr, uid, ids, context=None): for test in self.browse(cr, uid, ids, context): auth = None if test.user and test.password: auth = (test.user, test.password) headers = { 'Content-Type': 'application/json', 'Accept': 'application/json' } result = getattr(requests, test.method)(test.name, test.content, auth=auth, headers=headers) test.write({'response': result.text}) return True
class TestModel(models.Model): _name = 'test.model' _fields = {} # deprecated fields _defaults = {} # deprecated defaults name = fields.Char( _(u"Näme"), # Don't need translate help=u"My hëlp", required=False) # Imported openerp.fields use Char (Upper case) other_field = fields.char( name=_("Other field"), copy=True, ) other_field2 = fields.char( 'Other Field2', copy=True, ) def my_method1(self, variable1): # Shouldn't show error of field-argument-translate self.my_method2(_('hello world')) def my_method2(self, variable2): return variable2
class wolftrakglobal_report_608(osv.osv): _name = 'wolftrakglobal.report608' _columns = { 'invoices': fields.many2many('account.invoice', domain=[('type', '=', 'out_refund'), ('company_id', '=', 3)], string="Facturas"), 'desde_608': fields.date('Desde:'), 'desde_str': fields.char(compute='_toma_desde'), 'hasta_608': fields.date('Hasta:'), 'hasta_str': fields.char(compute='_toma_hasta'), 'periodo': fields.char(compute='_toma_periodo', readonly=True, string='Periodo'), 'cant_reg': fields.integer('Cantidad de registros') } _defaults = { 'desde_608': lambda *a: time.strftime('%Y-%m-01'), 'hasta_608': lambda *a: str(datetime.now() + relativedelta.relativedelta( months=+1, day=1, days=-1))[:10], } @api.onchange('invoices') def _toma_registro(self): for value in self.invoices: self.cant_reg = len(self.invoices) @api.depends('hasta_608') def _toma_periodo(self): month = str(self.hasta_608[5:7]) year = str(self.hasta_608[:4]) self.periodo = year + month @api.depends('desde_608') def _toma_desde(self): year = str(self.desde_608[:4]) month = str(self.desde_608[5:7]) day = str(self.desde_608[8:10]) self.desde_str = year + month + day @api.depends('hasta_608') def _toma_hasta(self): year = str(self.hasta_608[:4]) month = str(self.hasta_608[5:7]) day = str(self.hasta_608[8:10]) self.hasta_str = year + month + day
class generate_faktur_pajak(osv.osv_memory): _name = 'generate.faktur.pajak' _columns = { 'nomor_faktur_awal' : fields.char('Nomor Faktur Awal', size=20), 'nomor_faktur_akhir' : fields.char('Nomor Faktur Akhir', size=20), 'strip' : fields.char('Strip', size=3), 'dot' : fields.char('Dot', size=3), 'strip2' : fields.char('Strip', size=3), 'dot2' : fields.char('Dot', size=3), 'nomor_perusahaan' : fields.char('Nomor Perusahaan', size=3, required=True), 'nomor_awal' : fields.char('Nomor Faktur Awal', size=8, required=True), 'nomor_akhir' : fields.char('Nomor Faktur Akhir', size=8, required=True), 'tahun' : fields.char('Tahun Penerbit', size=2, required=True), 'type' : fields.selection([('in','Faktur Pajak Masukan'),('out','Faktur Pajak Keluaran')],'Type'), } _defaults = { 'nomor_awal': '', 'nomor_akhir': '', 'type': 'out', 'nomor_faktur_awal':'Nomor Faktur Awal:', 'nomor_faktur_akhir':'Nomor Faktur Akhir:', 'strip': '-', 'dot': '.', 'strip2': '-', 'dot2': '.', } def generate_faktur(self, cr, uid, ids, context=None): if not context: context={} wizard = self.browse(cr, uid, ids[0], context) #print "=====wizard.nomor_awal=====",wizard.nomor_awal,int(wizard.nomor_awal) #print "=====wizard.nomor_akhir=====",wizard.nomor_akhir,int(wizard.nomor_akhir) awal = int(wizard.nomor_awal) akhir = int(wizard.nomor_akhir) while (awal <= akhir): value = { 'nomor_perusahaan': wizard.nomor_perusahaan, 'tahun_penerbit': wizard.tahun, 'nomor_urut': '%08d' % awal, 'status': '0', 'type': wizard.type, } self.pool.get('nomor.faktur.pajak').create(cr,uid,value,context=context) awal += 1 return {'type': 'ir.actions.act_window_close'} def onchange_nomor_faktur(self, cr, uid, ids, akhir, context=None): res = {} wizard = self.browse(cr, uid, ids[0], context) if akhir <= wizard.nomor_awal: warning = { 'title': _('Warning'), 'message': _('Wrong Format must 15 digit'), } return {'warning': warning, 'value' : {'nomor_akhir' : False}} return res
class custom_calendar_event(osv.osv): _name = "calendar.event" _inherit = 'calendar.event' @api.depends('x_categ_id','x_partner_id') def _compute_categ_id_char(self): self.x_categ_id_char = self.x_categ_id.name if self.x_categ_id_char and self.x_partner_id.display_name and self.x_partner_id.phone: self.name = self.x_categ_id_char+' : '+self.x_partner_id.display_name+', '+self.x_partner_id.phone elif self.x_categ_id_char and self.x_partner_id.display_name: self.name = self.x_categ_id_char+' : '+self.x_partner_id.display_name elif self.x_partner_id.display_name: self.name = self.x_partner_id.display_name elif self.x_categ_id_char: self.name = self.x_categ_id_char else: _columns = { 'x_domicile': fields.boolean('A domicile'), 'x_partner_id': fields.many2one('res.partner', 'Attendee', default=''), 'x_categ_id': fields.many2one('calendar.event.type', 'Tags'), 'x_categ_id_char': fields.char(compute='_compute_categ_id_char', default=''), 'x_event_is_billed': fields.boolean('is_billed'), 'x_event_is_printed': fields.boolean('is_printed'), # related field res.partner # ------------------------- 'x_event_display_name' : fields.related('x_partner_id', 'display_name', type="char"), 'x_event_name' : fields.related('x_partner_id', 'name', type="char"), 'x_event_phone' : fields.related('x_partner_id', 'phone', type="char", default=''), 'x_event_patient_prenom': fields.related('x_partner_id', 'x_patient_prenom', type="char"), 'x_event_patient_sexe': fields.related('x_partner_id', 'x_patient_sexe', type="selection", selection=SEXE_SELECTION), 'x_event_patient_cafat': fields.related('x_partner_id', 'x_patient_cafat', type="char"), 'x_event_dob': fields.date(related='x_partner_id.dob'), 'x_event_age' : fields.integer(related='x_partner_id.age'), 'x_event_src_avatar' : fields.binary(related='x_partner_id.x_src_avatar'), 'x_event_medecin_traitant': fields.char(related='x_partner_id.x_medecin_traitant'), ########## MEDICAL INFO ??? # 'x_event_groupe_sang': fields.related('x_partner_id', 'x_groupe_sang', type="selection", selection=GRP_SANG_SELECTION), # 'x_event_taille': fields.float(related='x_partner_id.x_taille'), # 'x_event_poids': fields.float(related='x_partner_id.x_poids'), # 'x_event_IMC': fields.float(related='x_partner_id.x_IMC'), ########## # related field calendar_event_type # ------------------------- 'x_event_codeActe': fields.char(related='x_categ_id.x_code_acte', size=8), 'x_event_priceActe': fields.float(related='x_categ_id.x_price_acte', digits=(4,0)), # ------------------------- } _default = { 'x_domicile': False, }
class journal_expenses(orm.Model): _name = 'journal.details' _columns = { 'journal_name': fields.char('Nombre diario'), 'id_periodo': fields.integer('id periodo'), 'period_name': fields.char('Nombre periodo'), 'gasto_detallado': fields.float('Gasto sin impuesto'), 'id_gasto': fields.integer('ID gasto') }
class custom_stock_transfer_details_items(osv.TransientModel): _inherit = 'stock.transfer_details_items' _columns = { 'chassis_number': fields.char('Chassis Number', compute='fetch_info', readonly=True), 'engine_number': fields.char('Engine No.'), 'color': fields.char('Color', compute='fetch_info', readonly=True), 'model': fields.char('Model', compute='fetch_info', readonly=True), 'year': fields.char('Year', compute='fetch_info', readonly=True), 'location': fields.boolean('Loc'), } _defaults = { 'chassis_number': 'SAC-', 'engine_number': 'SAE-', } @api.onchange('quantity') def pre_check_quantity_limit(self): if self.transfer_id.picking_type != 'sale': return None products = [1856, 1850, 1851, 1852, 1853, 1854, 1855, 1857, 1858, 1862, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987] if self.product_id.id in products and self.quantity > 1: self.quantity = 1 @api.onchange('lot_id') def onchange_field_id(self): if self.lot_id: lot_ids.append(self.lot_id.id) return {'domain': {'lot_id': [('id', 'not in', lot_ids), ('status', '=', 'Available'), ('product_id', 'in', [self.product_id.id])]}} @api.one @api.depends('lot_id') def fetch_info(self): if self.lot_id: self.chassis_number = self.lot_id.chassis_number self.color = self.lot_id.color self.model = self.lot_id.model self.year = self.lot_id.year @api.multi def split_quantities(self): for det in self: if det.quantity > 1: det.quantity = (det.quantity - 1) new_id = det.copy(context=self.env.context) new_id.quantity = 1 new_id.packop_id = False self.split_quantities() if self and self[0]: return self[0].transfer_id.wizard_view()
class hr_infraction_category(models.Model): _name = 'hr.infraction.category' _description = 'Infraction Type' _columns = { 'name': fields.char( 'Name', required=True, ), 'code': fields.char( 'Code', required=True, ), }
class barcode_rule(models.Model): _name = 'barcode.rule' _order = 'sequence asc' @api.model def _encoding_selection_list(self): return [ ('any', _('Any')), ('ean13', 'EAN-13'), ('ean8', 'EAN-8'), ('upca', 'UPC-A'), ] @api.model def _get_type_selection(self): return [('alias', _('Alias')), ('product', _('Unit Product'))] _columns = { 'name': fields.char('Rule Name', size=32, required=True, help='An internal identification for this barcode nomenclature rule'), 'barcode_nomenclature_id': fields.many2one('barcode.nomenclature','Barcode Nomenclature'), 'sequence': fields.integer('Sequence', help='Used to order rules such that rules with a smaller sequence match first'), 'encoding': fields.selection('_encoding_selection_list','Encoding',required=True,help='This rule will apply only if the barcode is encoded with the specified encoding'), 'type': fields.selection('_get_type_selection','Type', required=True), 'pattern': fields.char('Barcode Pattern', size=32, help="The barcode matching pattern", required=True), 'alias': fields.char('Alias',size=32,help='The matched pattern will alias to this barcode', required=True), } _defaults = { 'type': 'product', 'pattern': '.*', 'encoding': 'any', 'alias': "0", } @api.one @api.constrains('pattern') def _check_pattern(self): p = self.pattern.replace("\\\\", "X").replace("\{", "X").replace("\}", "X") findall = re.findall("[{]|[}]", p) # p does not contain escaped { or } if len(findall) == 2: if not re.search("[{][N]*[D]*[}]", p): raise ValidationError(_("There is a syntax error in the barcode pattern ") + self.pattern + _(": braces can only contain N's followed by D's.")) elif re.search("[{][}]", p): raise ValidationError(_("There is a syntax error in the barcode pattern ") + self.pattern + _(": empty braces.")) elif len(findall) != 0: raise ValidationError(_("There is a syntax error in the barcode pattern ") + self.pattern + _(": a rule can only contain one pair of braces.")) elif p == '*': raise ValidationError(_(" '*' is not a valid Regex Barcode Pattern. Did you mean '.*' ?"))
class policy_line_absence(models.Model): _name = 'hr.policy.line.absence' _columns = { 'name': fields.char('Name', size=64, required=True), 'code': fields.char('Code', required=True, help="Use this code in the salary rules."), 'holiday_status_id': fields.many2one('hr.holidays.status', 'Leave', required=True), 'policy_id': fields.many2one('hr.policy.absence', 'Policy'), 'type': fields.selection( [('paid', 'Paid'), ('unpaid', 'Unpaid'), ('dock', 'Dock')], 'Type', required=True, help="Determines how the absence will be treated in payroll. " "The 'Dock Salary' type will deduct money (useful for " "salaried employees).", ), 'rate': fields.float('Rate', required=True, help='Multiplier of employee wage.'), 'use_awol': fields.boolean( 'Absent Without Leave', help='Use this policy to record employee time absence not covered ' 'by other leaves.') } def onchange_holiday(self, cr, uid, ids, holiday_status_id, context=None): res = {'value': {'name': False, 'code': False}} if not holiday_status_id: return res data = self.pool.get('hr.holidays.status').read(cr, uid, holiday_status_id, ['name', 'code'], context=context) res['value']['name'] = data['name'] res['value']['code'] = data['code'] return res
class WizardReports(osv.TransientModel): _name = 'wiz.invoices.writeoff' _description = 'PDF Reports for showing all disconnection,reconnection' _columns = { 'date': fields.date('Invoice Date', required=True), 'cheque_no': fields.char('Cheque No', required=True), 'bank_code': fields.selection([ ('FBL', 'FBL'), ('JSBL', 'JSBL'), ], required=True, string='Bank Code'), 'invoice_amount': fields.float('Invoice Amount', required=True), 'received_amount': fields.float('Received Amount', required=True) } def inv_status_changed(self, central, south, north, main): self.env.cr.execute( "UPDATE account_invoice " "SET state='cancel', payment_received=True,courier=True" + ",cheque_no='" + str(self.cheque_no) + "'" + ",comment='Payment has been received against parent invoice therefore user cancelled this invoice' " "FROM res_partner WHERE account_invoice.partner_id = res_partner.id and account_invoice.state='draft' " + "and res_partner.bank_code='" + str(self.bank_code) + "'" + "and account_invoice.invoice_date='" + str(self.date) + "'" + "and account_invoice.amount_total='" + str(self.invoice_amount) + "'" + "and account_invoice.partner_id!='" + str(central) + "'" + "and account_invoice.partner_id != '" + str(south) + "'" + "and account_invoice.partner_id !='" + str(north) + "'" + "and account_invoice.partner_id !=" + str(main)) return True @api.one def inv_status_change_request(self): if self.bank_code == 'FBL': fbl_central = 9464 fbl_south = 9522 fbl_north = 9450 fbl_main = 9572 result = self.inv_status_changed(fbl_central, fbl_south, fbl_north, fbl_main) return result if self.bank_code == 'JSBL': jsbl_central = 11056 jsbl_south = 11057 jsbl_north = 11058 jsbl_main = 3349 result = self.inv_status_changed(jsbl_central, jsbl_south, jsbl_north, jsbl_main) return result raise osv.except_osv("Done........", "Records have been successfully updated")
class generate_pairkey(models.Model): _name = 'crypto.generate_pairkey' _columns = { 'name': fields.char('Pair key name', size=63), 'key_length': fields.integer('Key lenght'), 'update': fields.boolean('Update key'), } _defaults = { 'key_length': 1024, } def on_generate(self, cr, uid, ids, context): if context is None: context = {} active_ids = context['active_ids'] pairkey_obj = self.pool.get('crypto.pairkey') for wizard in self.browse(cr, uid, ids): pairkey_obj.generate_keys(cr, uid, active_ids, key_length=wizard.key_length) pairkey_obj.action_validate(cr, uid, active_ids) return {'type': 'ir.actions.act_window_close'} def on_cancel(self, cr, uid, ids, context): return {}
class res_partner(osv.Model): _inherit = 'res.partner' _columns = { 'sequence': fields.char('Sequence'), } def onchange_is_company(self, cr, uid, ids, is_company, c_type, parent_id, context=None): res = {} if isinstance(ids, (int)): ids = [ids] if is_company: if len(ids) > 0: sequence = {1: '0000', 2: '000', 3: '00', 4: '0'} seq = sequence.get(len(str(ids[0])), '') + str(ids[0]) res.update({'sequence': seq}) else: if c_type == 'contact': if parent_id: seq = self.pool.get('res.partner').browse( cr, uid, parent_id, context=context).sequence res.update({'sequence': seq}) return {'value': res}
class prestamos( osv.osv): _name="prestamo.libro" _description = 'prestamos de libros' _columns = { 'name':fields.char('prestamo',required=False), # ID del modelo cliente es decir una relacion many2one al nombre del cliente 'cliente_id': fields.many2one('cliente.libro',string="nombre del cliente", required=True, select=True, help='Tipo de libro', store=True), 'fecha_prestamo': fields.date('Fecha de entrega', required=True), 'devolucion': fields.date('Fecha de devolucion' ,required=True), }
class policy_presence(models.Model): _name = 'hr.policy.presence' _columns = { 'name': fields.char('Name', size=128, required=True), 'date': fields.date('Effective Date', required=True), 'work_days_per_month': fields.integer('Working Days/Month', required=True), 'line_ids': fields.one2many('hr.policy.line.presence', 'policy_id', 'Policy Lines'), } _defaults = { 'work_days_per_month': 26, } # Return records with latest date first _order = 'date desc' def get_codes(self, cr, uid, idx, context=None): res = [] [ res.append( (line.code, line.name, line.type, line.rate, line.duration)) for line in self.browse(cr, uid, idx, context=context).line_ids ] return res
class cliente (osv.osv): _name="cliente.libro" _description = 'clientes' _columns = { 'name': fields.char('nombre', size=65, required=True, readonly=False), 'apellidos': fields.char('apellidos', size=65, required=False, readonly=False), 'fecha_nacimiento': fields.date('fecha_defecto'), 'edad': fields.char('edad') } _defaults = { # valores por defecto en los campos que queramos en este caso la fecha, para que no nos de error 'fecha_nacimiento': datetime.now() } @api.onchange('fecha_nacimiento') # indicamos los campos que van a cambiar def _onchange_edad(self): fecha_ingresada = self.fecha_nacimiento #almacenamos el campo fecha de nacimiento d = fecha_ingresada.split('-') #separamos por guión fecha_a_calcular = datetime.strptime(d[0] + d[1] + d[2],'%Y%m%d').date() #calculo de la fecha total = datetime.now().date() - fecha_a_calcular #resta entre una fecha y otra self.edad = total.days / 365 #devolucion del campo edad formateado como fecha
class hr_warning(models.Model): _name = 'hr.infraction.warning' _description = 'Employee Warning' _columns = { 'name': fields.char( 'Subject', size=256, ), 'date': fields.date( 'Date Issued', ), 'type': fields.selection( [ ('verbal', 'Verbal'), ('written', 'Written'), ], 'Type', required=True, ), 'action_id': fields.many2one( 'hr.infraction.action', 'Action', ondelete='cascade', readonly=True, ), 'infraction_id': fields.related( 'action_id', 'infraction_id', type='many2one', obj='hr.infraction', string='Infraction', readonly=True, ), 'employee_id': fields.related( 'infraction_id', 'employee_id', type='many2one', obj='hr.employee', string='Employee', readonly=True, ), } _defaults = { 'type': 'written', 'date': time.strftime(DEFAULT_SERVER_DATE_FORMAT), } def unlink(self, cr, uid, ids, context=None): for warning in self.browse(cr, uid, ids, context=context): if (warning.action_id and warning.action_id.infraction_id.state != 'draft'): raise models.except_orm( _('Error'), _('Warnings attached to Infractions not in "Draft" state ' 'may not be removed.') ) return super(hr_warning, self).unlink(cr, uid, ids, context=context)
class stock_transfer_details_items(models.TransientModel): _name = 'stock.transfer_details_items' _inherit = 'stock.transfer_details_items' _description = 'Picking wizard items' _columns = { 'note_release': fields.char('Note Release'), }
class custom_calendar_event_type(osv.osv): _name = 'calendar.event.type' _inherit = 'calendar.event.type' _columns = { 'x_code_acte': fields.char('Code acte', size=8), 'x_price_acte': fields.float('Prix acte', digits=(4,0)), }
class policy_ot(models.Model): _name = 'hr.policy.ot' _columns = { 'name': fields.char('Name', size=128, required=True), 'date': fields.date('Effective Date', required=True), 'line_ids': fields.one2many( 'hr.policy.line.ot', 'policy_id', 'Policy Lines'), } # Return records with latest date first _order = 'date desc' def get_codes(self, cr, uid, idx, context=None): res = [] [res.append((line.code, line.name, line.type, line.rate)) for line in self.browse(cr, uid, idx, context=context).line_ids] return res def daily_codes(self, cr, uid, idx, context=None): res = [] [res.append((line.code, line.name)) for line in self.browse( cr, uid, idx, context=context).line_ids if line.type == 'daily'] return res def restday_codes(self, cr, uid, idx, context=None): return [ (line.code, line.name) for line in self.browse(cr, uid, idx, context=context).line_ids if line.type == 'weekly' and line.active_after_units == 'day' ] def restday2_codes(self, cr, uid, idx, context=None): res = [] [res.append((line.code, line.name)) for line in self.browse( cr, uid, idx, context=context).line_ids if line.type == 'restday'] return res def weekly_codes(self, cr, uid, idx, context=None): return [ (line.code, line.name) for line in self.browse(cr, uid, idx, context=context).line_ids if line.type == 'weekly' and line.active_after_units == 'min' ] def holiday_codes(self, cr, uid, idx, context=None): return [ (line.code, line.name) for line in self.browse(cr, uid, idx, context=context).line_ids if line.type == 'holiday' ]
class policy_fee_details(models.TransientModel): _name = 'policy_fee_details' _columns = { 'membership': fields.char('Membership'), 'fee': fields.float('Fee'), 'total_member': fields.float('Total Member'), 'total_fee': fields.float('Total Fee Per Membership'), }
class pos_order_report_tax_line(osv.osv): _name = 'pos.order.report.tax.line' _description = 'Impuestos del Reporte' _columns = { 'report_id': fields.many2one('pos.order.report.jasper', 'ID Ref'), 'name': fields.char('Descripcion', size=128), 'amount': fields.float('Total', digits=(14, 2)), } _defaults = {}
class pos_order_report_journal_line(osv.osv): _name = 'pos.order.report.journal.line' _description = 'Pagos del Reporte' _columns = { 'report_id': fields.many2one('pos.order.report.jasper', 'ID Ref'), 'name': fields.char('Descripcion', size=128), 'sum': fields.float('Total', digits=(14, 2)), } _defaults = {}
class mrp_products_qty(orm.Model): _name = 'production.product' _columns = { 'product_id': fields.integer('producto'), 'product_qty': fields.integer('Cantidad producto'), 'product_name': fields.char('nombre producto'), 'id_gasto': fields.integer('id gasto') }
class product_template(osv.osv): _inherit = "product.template" _columns = { 'name': fields.char('Name', size=128, required=True, translate=False, select=True) }
class biblioteca_libro(osv.osv): _name = 'biblioteca.libro' _description = 'biblioteca' _columns = { #'libros_id': fields.many2one('tipo.libro', string="tipo de libro", # required=True, select=True, RELACION MUCHOS A UNO # help='Tipo de libro', store=True ), #RELACION MUCHOS A MUCHOS CON LA TABLA TIPO.LIBRO 'tipos_id': fields.many2many('tipo.libro', 'tipo_libro_rel', id1='libro_id', id2='tipo_id', string="tipo de libro"), 'prestamo_id': fields.many2one('prestamo.libro', string="prestamo de libro",required=False, select=True, store=True), 'name':fields.char('nombre', size=64, required=False, readonly=False), 'description': fields.text('Description'), 'date': fields.date('fecha publicacion'), 'autor':fields.char('autor', size=64, required=False, readonly=False), 'cantidad':fields.integer('numero de libros disponibles', required=True, store=True), } _defaults = { 'prestamo_id': "no hay prestamos" } @api.onchange('prestamo_id') # indicamos los campos que van a cambiar def _onchange_edad(self): self.cantidad = self.cantidad -1