compra_solicitudpresupuesto.py 2.31 KB
from odoo import models, fields, api
from odoo.exceptions import UserError

class hgt_compra_solicitudpresupuesto(models.Model):
    _name='hgt.compra_solicitudpresupuesto'
    _order = 'id asc'

    csp_solicitante = fields.Many2one(
        string =u'Solicitante',
        comodel_name ='res.users',
    )

    csp_proovedorp= fields.Many2one (
        string =u'Proovedor',
        comodel_name ='hgt.instituciones',
    )

    csp_solicitudlinea = fields.Many2many(
        string=u'A presupuestar',
        comodel_name='hgt.compra_solicitudlinea',
        relation='presupuesto_lineasolicitud',
        column1='hgt_compra_solicitudlinea_id',
        column2='hgt_compra_solicitudpresupuesto_id',
    )

    csp_adjuntos = fields.Many2many(
        'asw.adjuntos', 
        string='Archivos Adjuntos'
    )

    csp_estados = fields.Selection(
        string = 'Estado',
        selection = [
            ('pe', 'Pendiente'),
            ('e', 'Enviado al Proovedor'),
            ('a', 'Presupuesto Aprobado'),
            ('r', 'Presupuesto Rechazado'),
        ],
        store = True,
        default= 'pe',
        readonly = True,
    )

    csp_orden_generada = fields.Boolean(
        string="Orden generada?",
        default=False,
    )

    csp_notas = fields.Text(
        string="Notas",
    )

    def enviar_pdf(self):
        #PDF
        obj = self.env.ref('hgt_compras.solicitud_presupuesto_proovedor').report_action(self)
        self.csp_estados = 'e'
        return obj
    
    def chequear_ajuntos(self):
        if not self.csp_adjuntos:
            raise UserError("Debe haber algún presupuesto cargado en adjuntos para poder aceptarlo o rechazarlo")

    def aceptar_presup(self):
        self.chequear_ajuntos()
        self.csp_estados = 'a'

    def rechazar_presup(self):    
        self.chequear_ajuntos()
        self.csp_estados = 'r'

    def generar_sc(self):
        lista = []
        datos = {'cor_comprador': self.csp_solicitante.id,
        'cor_sp': self.id}
        nva_orden = self.env['hgt.compra_orden'].create(datos)
        for lin in self.csp_solicitudlinea:
            lista.append(lin.id)
        nva_orden.cor_linea_solicitud = lista
        self.csp_orden_generada = True
        return (True)

    def orden_rechazada(self):
        self.csp_orden_generada = False
        return (True)