account_interest_config.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, tools, api
  3. import openerp.addons.decimal_precision as dp
  4. class accountInterestConfig(models.Model):
  5. _name = 'account.interest.config'
  6. name = fields.Char('Name', required=True, readonly=True)
  7. ''' Interest '''
  8. 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(%)")
  9. 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(%)")
  10. comment = fields.Text('Comment', help="Información adicional")
  11. active = fields.Boolean('active',default=True)
  12. ''' Invoice '''
  13. 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.")
  14. invoice_account_id = fields.Many2one('account.account', string='Account', required=True, domain="[('type', '=', 'receivable')]")
  15. ''' Line '''
  16. line_account_id = fields.Many2one('account.account', string='Account', required=True, domain=[('type', '=', 'other')])
  17. line_tax_id = fields.Many2one('account.tax', string='Tax', domain=[('type_tax_use', '=', 'sale')])
  18. ''' Bloquear pagos '''
  19. lock_move_line = fields.Boolean('Bloquear la factura',default=True, help="Bloquear la factura cuando existan interés a pagar.")
  20. @api.model
  21. def create_default_interest_config(self):
  22. decimal_precision = self.env['decimal.precision'].precision_get('Interest')
  23. interest = {
  24. 'name': 'INTERÉS POR MORA',
  25. 'interest_rate_year': round(48.66, decimal_precision),
  26. 'interest_rate': round((48.66 / 365), decimal_precision),
  27. 'comment': 'Configuración de interés por mora \n'
  28. 'Calculo:\n'
  29. ' Tasa de interés por día = (Tasa de interés anual(%) / 365(cantidad de días del año))',
  30. 'invoice_journal_id': 1,
  31. 'invoice_account_id': 16,
  32. 'line_account_id': 113,
  33. 'line_tax_id': 1
  34. }
  35. interesConfig = self.env['account.interest.config'].search([('name', '=', interest['name'])])
  36. if (not interesConfig):
  37. interesConfig.create(interest)
  38. @api.one
  39. @api.onchange('interest_rate_year','interest_rate')
  40. def calculate_interest(self):
  41. decimal_precision = self.env['decimal.precision'].precision_get('Interest')
  42. self.interest_rate = round((self.interest_rate_year / 365), decimal_precision)