account_interest_config.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. ## forma de calculo de interes
  21. # si va calcular atomantico cunado entre en cliente
  22. # partner_calculate_automatic = fields.Boolean('partner interest calculate',default=True, help = "Calcular interés de forma automática cuando entra el apartado del cliente")
  23. # si va calcular atomantico cunado entre en Factura
  24. 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")
  25. # def _get_journal_invoice_sale():
  26. @api.model
  27. def create_default_interest_config(self):
  28. decimal_precision = self.env['decimal.precision'].precision_get('Interest')
  29. interest = {
  30. 'name': 'INTERÉS POR MORA',
  31. 'interest_rate_year': round(48.66, decimal_precision),
  32. 'interest_rate': round((48.66 / 365), decimal_precision),
  33. 'comment': 'Configuración de interés por mora \n'
  34. 'Calculo:\n'
  35. ' Tasa de interés por día = (Tasa de interés anual(%) / 365(cantidad de días del año))',
  36. 'invoice_journal_id': 1,
  37. 'invoice_account_id': 16,
  38. 'line_account_id': 113,
  39. 'line_tax_id': 1
  40. }
  41. interesConfig = self.env['account.interest.config'].search([('name', '=', interest['name'])])
  42. if (not interesConfig):
  43. interesConfig.create(interest)
  44. @api.one
  45. @api.onchange('interest_rate_year','interest_rate')
  46. def calculate_interest(self):
  47. decimal_precision = self.env['decimal.precision'].precision_get('Interest')
  48. self.interest_rate = round((self.interest_rate_year / 365), decimal_precision)