account_loan_system.py 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, tools, api
  3. import openerp.addons.decimal_precision as dp
  4. from datetime import datetime
  5. class accountLoanSystem(models.Model):
  6. _name = 'account.loan.system'
  7. name = fields.Char('Name', required=True)
  8. code = fields.Char('Code', size=64, required=True, help="Código para identificar el sistema de calculo.")
  9. active = fields.Boolean('active',default=True)
  10. condition_interest = fields.Text('interest Condition', help='Condición para definir la forma del sistema de calculo.')
  11. note = fields.Text('Descripción', help="Descripción")
  12. comment = fields.Text('Comment', help="Información adicional")
  13. @api.model
  14. def _create_account_loan_system(self):
  15. systemLoan = [
  16. {
  17. 'name': 'Francés',
  18. 'code': 'FRANCES',
  19. 'note': 'Las características principales del sistema francés son:\n'
  20. ' - Amortización de capital periódica creciente.\n'
  21. ' - Intereses decrecientes, dado que el interés se calcula sobre saldos\n'
  22. ' - Cuota total (amortización de capital + intereses) constante, como consecuencia de las características de los componentes anteriores.',
  23. 'condition_interest': 'cuota = ((interes * capital) / ( 1- ( 1 / 1 + interes ) ** plazo ))\n'
  24. ' interesCuota = capital * interes\n'
  25. ' amortizacion = cuota - interesCuota\n'
  26. ' amortizado += amortizacion\n'
  27. ' capital -= amortizacion'
  28. },
  29. {
  30. 'name': 'Alemán',
  31. 'code': 'ALEMAN',
  32. 'note': 'Las características principales del sistema alemán son:\n'
  33. ' - Amortización de capital periódica constante, es decir que el capital de la deuda va a disminuir siempre en un mismo monto.\n'
  34. ' - Intereses decrecientes, dado que se calculan sobre el saldo adeudado.\n'
  35. ' - Cuota total (amortización de capital + intereses) decreciente, como consecuencia de las características de los componentes anteriores.',
  36. 'condition_interest': 'amortizacion = capital / plazo\n'
  37. ' interesCuota = capital * interes\n'
  38. ' cuota = amortizacion + interesCuota\n'
  39. ' amortizado += amortizacion\n'
  40. ' capital -= amortizacion'
  41. }
  42. ]
  43. for system in systemLoan:
  44. loanSystem = self.env['account.loan.system'].search([('name', '=', system['name'])])
  45. loan = {
  46. 'name':system['name'],
  47. 'code':system['code'],
  48. 'note':system['note'],
  49. 'condition_interest':system['condition_interest']
  50. }
  51. if (not loanSystem):
  52. loanSystem.create(loan)
  53. class accountLoan(models.Model):
  54. _inherit = 'account.loan'
  55. ''' Tipo de plazo del prestamos (Días, Semana , Mes, Año) '''
  56. loan_system = fields.Many2one('account.loan.system', string='Sistema de calculo', ondelete='restrict', index=True, required=True, help="Sistema de calculo (Francés - Alemán)")