-- Function: adempiere.qtyondateorg2(integer, timestamp with time zone, character varying)
-- DROP FUNCTION adempiere.qtyondateorg2(integer, timestamp with time zone, character varying);
CREATE OR REPLACE FUNCTION adempiere.qtyondateorg2(
product_id integer,
indate timestamp with time zone,
org_id character varying)
RETURNS numeric AS
$BODY$
DECLARE
Quantity NUMERIC := 0;
vP NUMERIC := 0;
BEGIN
SELECT Aux.M_Product_ID, SUM(Aux.QtyOnHand) AS QtyOnHand
INTO vP, Quantity FROM
(SELECT DISTINCT '1', s.M_Product_ID, SUM(s.QtyOnHand) AS QtyOnHand, l.M_Warehouse_ID, l.M_Locator_ID
FROM M_Storage s
INNER JOIN M_Locator l ON s.M_Locator_ID = l.M_Locator_ID
INNER JOIN M_Warehouse w ON l.M_Warehouse_ID=w.M_Warehouse_ID
WHERE s.M_Product_ID = Product_ID
AND w.lbr_WarehouseType NOT LIKE '3RD'
AND l.AD_Org_ID IN (org_id)
GROUP BY s.M_Product_ID, l.M_Warehouse_ID, l.M_Locator_ID, l.AD_Org_ID
UNION
SELECT '2', t.M_Product_ID, SUM(t.MovementQty) * -1 AS QtyOnHand, l.M_Warehouse_ID, t.M_Locator_ID
FROM M_Transaction t
INNER JOIN M_Locator l ON t.M_Locator_ID = l.M_Locator_ID
INNER JOIN M_Warehouse w ON l.M_Warehouse_ID=w.M_Warehouse_ID
WHERE TRUNC(t.MovementDate) >= TRUNC(InDate)
AND w.lbr_WarehouseType NOT LIKE '3RD'
AND t.M_Product_ID = Product_ID
AND l.AD_Org_ID IN ( org_id )
GROUP BY t.M_Product_ID, l.M_Warehouse_ID, t.M_Locator_ID, l.AD_Org_ID) Aux
GROUP BY M_Product_ID;
IF (Quantity IS NULL) THEN
Quantity := 0;
END IF;
RETURN Quantity;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION adempiere.qtyondateorg2(integer, timestamp with time zone, character varying)
OWNER TO adempiere;
У меня проблема в следующей функции, в параметре AD_Org_ID я хотел бы передать в виде строки, как показано ниже:
select adempiere.qtyondateorg2 (2045480, '31/12/2018',' 2000002, 2000003');
Однако я получаю следующую ошибку:
ОШИБКА: оператор не существует: числовой = символ меняется
ЛИНИЯ 10: И l.AD_Org_ID IN (org_id)
СОВЕТ: ни один оператор не соответствует заданному имени и типу (аргументам) аргумента. Возможно, вам придется добавить явные приведения типов.
Помогите ли вы правильно сформировать функцию? Спасибо