Пример #1
0
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
Пример #2
0
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.'),
    ]
Пример #4
0
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.")
    }
Пример #5
0
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
Пример #6
0
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
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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,
    }
Пример #10
0
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()
Пример #12
0
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,
        ),
    }
Пример #13
0
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 '.*' ?"))
Пример #14
0
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
Пример #15
0
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")
Пример #16
0
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 {}
Пример #17
0
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}
Пример #18
0
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),
           
            
            
                    }
Пример #19
0
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
Пример #20
0
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
Пример #21
0
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'),
    }
Пример #23
0
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)),
        
    }
Пример #24
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'
        ]
Пример #25
0
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'),
    }
Пример #26
0
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 = {}
Пример #27
0
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 = {}
Пример #28
0
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')
    }
Пример #29
0
class product_template(osv.osv):
    _inherit = "product.template"
    _columns = {
        'name':
        fields.char('Name',
                    size=128,
                    required=True,
                    translate=False,
                    select=True)
    }
Пример #30
0
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