• Este debate está vacío.
Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Autor
    Entradas
  • #32757
    Carranza Carlos
    Participante

    En oportunidad de tratar de utilizar lotes en los productos, me encontré (versión 14.02, pero lo revisé en la 13.01 y el resultado era el mismo) que luego de definir un lote, asociarlo a un producto, el producto indicar que tenía como atributo el lote, colocarle precio al artículo y crearle inventario; luego de crear un pedido con dicho artículo, y tratar de utilizar dicho lote, el diálogo de selección no traía nada.
    En la consola indicaba que faltaba el parámetro 1 en una consulta, en el método refresh de la clase pattribute.
    Luego de debuggear, encontré el que el problema real estaba en las funciones bompricestd, bompricelimit y bompricelist (las cuales son iguales, sólo que cambia el precio buscado). El problema es que uno de los parámetros es m_pricelist_version_id, el cual quedaba como ambigua al ejecutar el select, por lo que a los parámetros y a su uso en el interior de las funciones, le agregué la letra p, quedando pm_pricelist_version_id.
    Con esto quedó funcionando la consulta de los atributos.
    A modo de ejemplo coloco una de las funciones en su estado anterior y el nuevo (recuerden que son 3 porque los precios son 3).


    original



    — Function: libertya.bompricestd(integer, integer, integer)

    — DROP FUNCTION libertya.bompricestd(integer, integer, integer);

    CREATE OR REPLACE FUNCTION libertya.bompricestd(m_product_id integer, m_pricelist_version_id integer, m_attributesetinstance_id integer)
    RETURNS numeric AS
    $BODY$
    DECLARE
    i_price NUMERIC;
    BEGIN

    IF (m_attributesetinstance_id = 0) THEN
    select bomPriceStd(M_Product_ID,M_PriceList_Version_ID) into i_price;
    else
    SELECT pricestd into i_price FROM M_ProductPriceInstance pi WHERE pi.M_PriceList_Version_ID=M_PriceList_Version_ID AND pi.M_Product_ID=M_Product_ID AND pi.M_AttributeSetInstance_ID=M_AttributeSetInstance_ID;
    IF (i_price ISNULL) THEN
    select bomPriceStd(M_Product_ID,M_PriceList_Version_ID) into i_price;
    END IF;
    END IF;
    return i_price;
    END;
    $BODY$
    LANGUAGE plpgsql VOLATILE
    COST 100;
    ALTER FUNCTION libertya.bompricestd(integer, integer, integer)
    OWNER TO libertya;


    modificada (agregue p antes de m)



    — Function: libertya.bompricestd(integer, integer, integer)

    — DROP FUNCTION libertya.bompricestd(integer, integer, integer);

    CREATE OR REPLACE FUNCTION libertya.bompricestd(pm_product_id integer, pm_pricelist_version_id integer, pm_attributesetinstance_id integer)
    RETURNS numeric AS
    $BODY$
    DECLARE
    i_price NUMERIC;
    BEGIN

    IF (pm_attributesetinstance_id = 0) THEN
    select bomPriceStd(PM_Product_ID,PM_PriceList_Version_ID) into i_price;
    else
    SELECT pricestd into i_price FROM M_ProductPriceInstance pi WHERE pi.M_PriceList_Version_ID=PM_PriceList_Version_ID AND pi.M_Product_ID=PM_Product_ID AND pi.M_AttributeSetInstance_ID=PM_AttributeSetInstance_ID;
    IF (i_price ISNULL) THEN
    select bomPriceStd(PM_Product_ID,PM_PriceList_Version_ID) into i_price;
    END IF;
    END IF;
    return i_price;
    END;
    $BODY$
    LANGUAGE plpgsql VOLATILE
    COST 100;
    ALTER FUNCTION libertya.bompricestd(integer, integer, integer)
    OWNER TO libertya;

    #38572
    Saulo Gil
    Miembro

    Hola,

    ¿ Alguien podría reportar este bug en Google Code por favor ? Con esta información podemos dejar todo preparado para incluir este fix en el código principal.

    Gracias,

    Saulo

    PS: Les recomiendo usar el tag de código para el foro así es mucho más fácil de leer el código SQL/Java/etc que quieran mostrar ya que entre otras cosas no se eliminan los caracteres de tabulación/espaciado.

    #38573
    Carranza Carlos
    Participante

    Podés explicar como se reporta? Este es el segundo bug que corrijo. Y ya que estamos en orden de aportar, trataré de aportar como corresponde.

    #38576
    Saulo Gil
    Miembro

    Para no duplicar información, les dejo la referencia (en inglés) de Google para esto: https://code.google.com/p/support/wiki/IssueTracker#Issue_entry

    Lo ideal es que se reporte lo mínimo necesario como para entender cual es el problema, como reproducirlo y opcionalmente si es que ya tienen un fix. Cualquier cosa pregunten.

    Saludos

Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Debes estar registrado para responder a este debate.