construction_config.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, tools, api
  3. import openerp.addons.decimal_precision as dp
  4. class ConstructionConfig(models.Model):
  5. _name = 'construction.config'
  6. name = fields.Char('Name', required=True, readonly=True)
  7. active = fields.Boolean('active',default=True)
  8. comment = fields.Text('Comment', help="Información adicional")
  9. ''' Invoice '''
  10. invoice_journal_id = fields.Many2one('account.journal', string='Journal', required=True, domain="[('type','=','sale')]", help="Diario que utilizara para la facturación")
  11. invoice_account_id = fields.Many2one('account.account', string='Account', required=True, domain="[('type','=','receivable')]")
  12. ''' Line '''
  13. line_account_id = fields.Many2one('account.account', string='Account', required=True, domain=[('type','=','other')])
  14. line_tax_id = fields.Many2one('account.tax', string='Tax', domain=[('type_tax_use','=','sale')])
  15. @api.model
  16. def create_default_construction_config(self):
  17. config = {
  18. 'name': 'Facturación de cliente',
  19. 'invoice_journal_id': self.get_account_journal_construction({'code':'VENTA', 'type': 'sale'}),
  20. 'invoice_account_id': self.get_account_account_construction({'code':'121000', 'type':'receivable'}),
  21. 'line_account_id': self.get_account_account_construction({'code':'411.01', 'type':'other'}),
  22. 'comment': 'Creación de factura de cliente desde la orden de servicio',
  23. }
  24. constructionConfig = self.env['construction.config'].search([('name', '=', config['name'])])
  25. if (not constructionConfig):
  26. constructionConfig.create(config)
  27. def get_account_account_construction(self, vals):
  28. account = self.env['account.account'].search([('code','=', vals['code']),('type','=',vals['type'])])
  29. if (not account):
  30. return ''
  31. if (len(account) > 1):
  32. account = account[len(account) -1]
  33. return account.id or ''
  34. def get_account_journal_construction(self, vals):
  35. journal = self.env['account.journal'].search([('code','=',vals['code']),('type','=',vals['type'])])
  36. if (not journal):
  37. return ''
  38. if (len(journal) > 1):
  39. journal = journal[len(journal)-1]
  40. return journal.id or ''