- Este debate está vacío.
-
AutorEntradas
-
23 julio, 2014 a las 11:07 pm #32757Carranza CarlosParticipante
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;
BEGINIF (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;
BEGINIF (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;23 julio, 2014 a las 11:44 pm #38572Saulo GilMiembroHola,
¿ 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.
24 julio, 2014 a las 12:06 am #38573Carranza CarlosParticipantePodé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.
24 julio, 2014 a las 12:32 am #38576Saulo GilMiembroPara 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
-
AutorEntradas
- Debes estar registrado para responder a este debate.