compra_solicitudpresupuesto.py 5.25 KB
from odoo import models, fields, api
from odoo.exceptions import UserError
from datetime import date

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

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

    csp_compra_solicitud = fields.Many2one(
        string = 'Solicitud de Compra Asociada',
        comodel_name = 'hgt.compra_solicitud',
    )

    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_ordencompra = fields.Many2one(
        comodel_name="hgt.compra_orden",
        string=u"Órden de Compra asociada",
    )

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

    csp_pna_ejecuto = fields.Many2one(
        string =u'Aceptó/Rechazó sin adjunto',
        comodel_name ='res.users',
        readonly=True,
    )

    csp_pna_fecha = fields.Date(
        string = u'Fecha',
        readonly=True,
    )

    csp_monto_tot = fields.Float(
        string='Monto total presupuestado',
    )

    @api.depends('csp_pna_ejecuto')
    def onchange_fecha_pna(self):
        self.csp_pna_fecha = str(date.today())

    def enviar_pdf(self):
        #PDF
        obj = self.env.ref('hgt_compras.solicitud_presupuesto_proovedor').report_action(self)
        self.csp_estados = 'e'
        return obj

    def duplicar_solicitud(self):
        #abrir wizard p elegir proovedores
        datos = {'wiz_solicitud': self.id}
        nwiz = self.env['hgt.solicitarp'].create(datos)
        return {
            'type': 'ir.actions.act_window',
            'res_model': 'hgt.solicitarp',
            'view_mode': 'form',
            'view_type': 'form',
            'res_id': nwiz.id,
            'views': [(False, 'form')],
            'target': 'new',
        }

    def aceptar_presup(self):
        if (not self.csp_adjuntos) and (not self.csp_pna_ejecuto):
            datos = {'pna_solicitudpres': self.id,
            'pna_opcion': 'a'}
            nwiz = self.env['hgt.presupnoadjunto'].create(datos)
            return {
                'type': 'ir.actions.act_window',
                'res_model': 'hgt.presupnoadjunto',
                'view_type': 'form',
                'view_mode': 'form',
                'res_id': nwiz.id,
                'views': [(False, 'form')],
                'target': 'new',
                'context': self.env.context,
                "view_id": self.env.ref("hgt_compras.view_form_procesar_sa_ui").id,
            }
        else:
            datos = {'wizap_solicitud': self.id}
            nwiz = self.env['hgt.aceptacionp'].create(datos)
            return {
                'type': 'ir.actions.act_window',
                'res_model': 'hgt.aceptacionp',
                'view_type': 'form',
                'view_mode': 'form',
                'res_id': nwiz.id,
                'views': [(False, 'form')],
                'target': 'new',
                'context': self.env.context,
                "view_id": self.env.ref("hgt_compras.view_form_aceptacion_p_ui").id,
            }
            

    def rechazar_presup(self):    
        if not self.csp_adjuntos:
            datos = {'pna_solicitudpres': self.id,
            'pna_opcion': 'r'}
            nwiz = self.env['hgt.presupnoadjunto'].create(datos)            
            return {
                'type': 'ir.actions.act_window',
                'res_model': 'hgt.presupnoadjunto',
                'view_type': 'form',
                'view_mode': 'form',
                'res_id': nwiz.id,
                'views': [(False, 'form')],
                'target': 'new',
                'context': self.env.context,
                "view_id": self.env.ref("hgt_compras.view_form_procesar_sa_ui").id,
            }
        else:
            self.csp_estados = 'r'
            return(True)

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

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