# -*- coding: utf-8 -*- from openerp import models, fields, tools, api import openerp.addons.decimal_precision as dp class accountInterestConfig(models.Model): _name = 'account.interest.config' name = fields.Char('Name', required=True, readonly=True) ''' Interest ''' interest_rate_year = fields.Float('Tasa de interés anual(%)', digits=(3,6), digits_compute=dp.get_precision('Interest'), required=True, help="Tasa de interés anual(%)") interest_rate = fields.Float('Tasa de interés calculado(%)', digits=(3,6), digits_compute=dp.get_precision('Interest'), required=True, help="Tasa de interés diario(%)") comment = fields.Text('Comment', help="Información adicional") active = fields.Boolean('active',default=True) ''' Invoice ''' invoice_journal_id = fields.Many2one('account.journal', string='Journal', required=True, domain="[('type', '=', 'sale')]", help="Diario que utilizara para la facturación de interés.") invoice_account_id = fields.Many2one('account.account', string='Account', required=True, domain="[('type', '=', 'receivable')]") ''' Line ''' line_account_id = fields.Many2one('account.account', string='Account', required=True, domain=[('type', '=', 'other')]) line_tax_id = fields.Many2one('account.tax', string='Tax', domain=[('type_tax_use', '=', 'sale')]) ''' Bloquear pagos ''' lock_move_line = fields.Boolean('Bloquear la factura',default=True, help="Bloquear la factura cuando existan interés a pagar.") ## forma de calculo de interes # si va calcular atomantico cunado entre en cliente # partner_calculate_automatic = fields.Boolean('partner interest calculate',default=True, help = "Calcular interés de forma automática cuando entra el apartado del cliente") # si va calcular atomantico cunado entre en Factura invoice_calculate_automatic = fields.Boolean('invoice interest calculate',default=True, help = "Calcular interés de forma automática cuando entra el apartado de la Factura") # def _get_journal_invoice_sale(): @api.model def create_default_interest_config(self): decimal_precision = self.env['decimal.precision'].precision_get('Interest') interest = { 'name': 'INTERÉS POR MORA', 'interest_rate_year': round(48.66, decimal_precision), 'interest_rate': round((48.66 / 365), decimal_precision), 'comment': 'Configuración de interés por mora \n' 'Calculo:\n' ' Tasa de interés por día = (Tasa de interés anual(%) / 365(cantidad de días del año))', 'invoice_journal_id': 1, 'invoice_account_id': 16, 'line_account_id': 113, 'line_tax_id': 1 } interesConfig = self.env['account.interest.config'].search([('name', '=', interest['name'])]) if (not interesConfig): interesConfig.create(interest) @api.one @api.onchange('interest_rate_year','interest_rate') def calculate_interest(self): decimal_precision = self.env['decimal.precision'].precision_get('Interest') self.interest_rate = round((self.interest_rate_year / 365), decimal_precision)