prod_pfinal.py 2.51 KB
# -*- coding: utf-8 -*-
from odoo import models, fields, api

class asw_prod_pfinal(models.TransientModel):
    _name = 'asw.prod_pfinal'
    _description = 'Producto Precio Final' 

    ppf_producto = fields.Many2one(
        string=u'Producto',
        comodel_name='asw.producto',
        ondelete='set null',
    )

    ppf_descripcion_producto = fields.Text(
        string='Descripcion',
    )

    ppf_comprobante = fields.Many2one(
        string=u'Comprobante',
        comodel_name='asw.comprobante',
        ondelete='cascade',
    )

    ppf_cantidad = fields.Float(
        string=u'Cantidad',
        default=1,
    )

    ppf_precio= fields.Monetary(
        string=u'Precio Final',
        currency_field='ppf_moneda',
        store=True
    )

    ppf_precio_bruto= fields.Monetary(
        string=u'Precio Bruto',
        currency_field='ppf_moneda',
        readonly=True,
        store=True,
        compute="obtener_ppf_precio_bruto"
    )
    
    ppf_moneda = fields.Many2one(
        string=u'Moneda del Producto',
        comodel_name='res.currency',
        ondelete='set null',        
        default=lambda self: self.env.user.company_id.currency_id,
    )

    ppf_impuesto = fields.Many2one(
        string=u'IVA',
        comodel_name='asw.impuesto',
        ondelete='set null',
    )

    #metodo para obtener el dominio de prods
    def get_domain_producto(self):
        domain = []
        if(self.ppf_comprobante.comp_tipo_comp == 'e'):
            return [('pro_puede_ser_vendido','=', True)]
        if(self.ppf_comprobante.comp_tipo_comp == 'r'):
            return [('pro_puede_ser_comprado','=', True)]
        return domain

    #metodo de creacion de linea de factura y su asociacion al comprobante en curso
    def crear_linea(self):
        pb = self.ppf_precio_bruto
        print("pb es "+ str(pb))
        vals = {
            'lcp_producto' : self.ppf_producto.id,
            'lcp_descripcion_producto' : self.ppf_descripcion_producto,
            'lcp_comprobante': self.ppf_comprobante.id,
            'lcp_cantidad': self.ppf_cantidad,
            'lcp_precio': pb,
            'lcp_importe': self.ppf_precio,
            'lcp_moneda': self.ppf_moneda.id,
            'lcp_iva': self.ppf_impuesto.id,
        }

        nva_lineaf = self.env['asw.linea_comprobante'].create(vals)

    @api.depends('ppf_impuesto','ppf_precio')
    def obtener_ppf_precio_bruto(self):
        pnet= self.ppf_precio
        iva = self.ppf_impuesto.imp_porcentaje
        self.ppf_precio_bruto = ((100-iva)/100)*self.ppf_precio