123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- # -*- coding: utf-8 -*-
- from openerp import models, fields, tools, api, _
- import openerp.addons.decimal_precision as dp
- from openerp.exceptions import Warning, except_orm, AccessError
- class constructionOrderContractor(models.Model):
- _name = 'construction.order.contractor'
- name = fields.Char('name')
- date = fields.Date()
- active = fields.Boolean('Active', default=True)
- ref = fields.Char('Ref')
- comment = fields.Text('Comment', help='information')
- state = fields.Selection([('draft', 'Borrador'),('done', 'Hecho')], default='draft')
- ''' Contratista && subcontratista '''
- partner_id = fields.Many2one('res.partner', string='contractor', required=True)
- ''' ORDER && PRESUPUSETO '''
- budget_id = fields.Many2one('construction.order', string='budget', required=True)
- order_id = fields.Many2one('construction.order', string='order')
- line_ids = fields.One2many('construction.order.contractor.line', 'order_contractor_ids', string='lines')
- amount_total = fields.Float('Amount Total', digits_compute=dp.get_precision('Account'), default=0.0)
- ''' CREATE '''
- @api.model
- def create(self, vals):
- partner = self.env['res.partner'].browse(vals['partner_id'])
- budget = self.env['construction.order'].browse(vals['budget_id'])
- name ="Subcontratista/%s/%s" % (partner.name, budget.name)
- vals['name'] = name.upper()
- return super(constructionOrderContractor, self).create(vals)
- ''' Currency '''
- @api.model
- def get_currency_budget(self, id):
- contractor = self.env['construction.order.contractor'].browse(id)
- budget = contractor.budget_id
- return budget.get_currency_order(budget.id)
- @api.model
- def add_task_contractor(self, id,tasks):
- line = self.env['construction.order.contractor.line'].search([('order_contractor_ids', '=', id )])
- lineTask = []
- if ( line ):
- for i in line:
- i.unlink()
- for task in tasks:
- lineTask= {
- 'code':task['code'],
- 'task_name': task['taskName'],
- 'uom_id': task['uomId'],
- 'task_id': task['taskId'],
- 'task_line_id': task['taskLineId'],
- 'qty': task['qty'],
- 'amount': task['amount'],
- 'amount_total': task['amountTotal'],
- 'type': task['type'],
- 'order_contractor_ids': id,
- }
- line.create(lineTask)
- contractor = self.env['construction.order.contractor'].browse(id)
- if (not contractor):
- return {'state': False }
- ammount = 0
- for line in contractor.line_ids:
- if (line.type =='activity'):
- ammount += line.amount_total
- contractor.write({'amount_total': ammount})
- return {'state': True }
- class ConstructionOrder(models.Model):
- _inherit = 'construction.order'
- contractor_budget_ids = fields.One2many('construction.order.contractor', 'budget_id', string='contractor')
- contractor_order_ids = fields.One2many('construction.order.contractor', 'order_id', string='contractor')
- ''' RES PARTNER '''
- class ResPartnerContractor(models.Model):
- _inherit = 'res.partner'
- contractor = fields.Boolean('contractor', default=False, help='Define si es un contratista o un subcontratista')
- class constructionOrderContractorLine(models.Model):
- _name = 'construction.order.contractor.line'
- code = fields.Char('Code', size=32, required=True, select=True)
- task_name = fields.Char('name')
- uom_id = fields.Many2one('construction.uom', string='Unidad de medida')
- task_id = fields.Many2one('construction.task', string='Tarea')
- task_line_id = fields.Many2one('construction.task.line', string='Actividad')
- qty = fields.Float('Cantidad', default=0)
- amount = fields.Float('Amount Unit', digits_compute=dp.get_precision('Account'), default=0.0)
- amount_total = fields.Float('Amount Total', digits_compute=dp.get_precision('Account'), default=0.0)
- type = fields.Selection([('task', 'Tarea'),('activity', 'Actividad')])
- order_contractor_ids = fields.Many2one('construction.order.contractor', string='Orden Contratista', ondelete='cascade', index=True, required=True)
|