BUEN DIA
ESTIMADOS agradzeco si me peuden ayudar es que necesito un TN que me ayude a blqoear y no cear las solciitudes de compra cyuando el total sea igual a cero o algun item tenga preice 0 oe n blanco tengo este tn pero no em funciona me deja pasar las oslcitudes de compra o crearlas
IF (:object_type = '147000011' AND :transaction_type = 'A') THEN
DECLARE PRECIO_INVALIDO INT;
SELECT (SELECT COUNT(*)
FROM PRQ1
WHERE "DocEntry" = :list_of_cols_val_tab_del
AND (IFNULL("Price", 0) <= 0)) INTO PRECIO_INVALIDO FROM DUMMY;
IF :PRECIO_INVALIDO > 0 THEN
SELECT 1471 INTO error FROM DUMMY;
SELECT 'Error 1471: Hay líneas con precio igual o menor a cero en la solicitud de compra.' INTO error_message FROM DUMMY;
END IF;
END IF;
este es mi tn copmopelto
ALTER PROCEDURE SBO_SP_TransactionNotification
(
in object_type nvarchar(30), -- SBO Object Type
in transaction_type nchar(1), -- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose
in num_of_cols_in_key int,
in list_of_key_cols_tab_del nvarchar(255),
in list_of_cols_val_tab_del nvarchar(255)
)
LANGUAGE SQLSCRIPT
SQL SECURITY INVOKER
AS
-- Return values
error int; -- Result (0 for no error)
error_message nvarchar (200); -- Error string to be displayed
CuentaBodDifSolTr INT;
CSS_CONTEO INT;
DocSubType VarChar(2);
begin
error := 0;
error_message := N'Ok';
--------------------------------------------------------------------------------------------------------------------------------
-- ADD YOUR CODE HERE
/*
Objetivo: Restricción para evitar creación y actualización de solicitud de traslado en caso de que el almacén de destino sea distinto para la cabecera y las líneas
Creado por: CSS Jeisson Cristancho
Fecha creación: 04-11-2020 8:16 am
Fecha modificación
*/
IF((object_type = '1250000001') AND ( (transaction_type = 'U') or (transaction_type = 'A'))) THEN
SELECT COUNT(*) INTO CuentaBodDifSolTr FROM OWTQ T0 INNER JOIN WTQ1 T1 ON T0."DocEntry" = T1."DocEntry" WHERE T0."ToWhsCode" != T1."WhsCode" And T0."DocEntry" = :list_of_cols_val_tab_del ;
IF :CuentaBodDifSolTr > 0 THEN
error := '1';
error_message := 'CSS - El almacén destino no puede ser diferente a la de cabecera';
END IF;
END IF;
IF((:object_type = '112') AND ( (:transaction_type = 'U') or (:transaction_type = 'A'))) THEN
SELECT COUNT(*) INTO CuentaBodDifSolTr FROM ODRF T0 INNER JOIN DRF1 T1 ON T0."DocEntry" = T1."DocEntry" WHERE T0."ObjType" = '1250000001' And T0."ToWhsCode" != T1."WhsCode" And T0."DocEntry" = :list_of_cols_val_tab_del ;
IF :CuentaBodDifSolTr > 0 THEN
error := '1';
error_message := 'CSS - El almacén destino no puede ser diferente a la de cabecera';
END IF;
END IF;
IF((object_type = '13') AND ( (transaction_type = 'U') or (transaction_type = 'A'))) THEN
DECLARE cuenta int;
SELECT COUNT(*) INTO cuenta FROM INV1 T0 INNER JOIN OITM T1 ON T0."ItemCode" = T1."ItemCode" WHERE IFNULL(T1."U_COD_CABYS", '') = '' And T0."DocEntry" = :list_of_cols_val_tab_del ;
IF :cuenta > 0 THEN
error := '1';
error_message := 'El campo "CODIGOS CABUY" en el dato maestro de artículo no puede estar vacío';
END IF;
END IF;
--------------------------------------------------------------------------------------------------------------------------------
/* Factura con margen menor a 20% */
IF (:object_type = '13' AND :transaction_type = 'A') THEN
DECLARE MARGEN INT;
SELECT (SELECT
COUNT(*)
FROM (SELECT
A0."ItemCode",
CASE
WHEN A0."TotalBruto" = 0 THEN 0
ELSE (A0."GrssProfit"/A0."TotalBruto")*100
END "%Ganancia"
FROM (SELECT
T1."ItemCode",
T1."LineTotal" - (T1."LineTotal" * (T0."DiscSum" / (T0."DocTotal" + T0."WTSum" - T0."VatSum" - T0."RoundDif" - T0."TotalExpns" + T0."DpmAmnt" + T0."DiscSum"))) AS "TotalBruto",
T1."GrssProfit"
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE :list_of_cols_val_tab_del = T0."DocEntry"
AND T0."U_Check_Margen_FV" = 'N'
) A0
) B0
WHERE B0."%Ganancia" < 20) INTO MARGEN FROM DUMMY;
IF :MARGEN > 0 THEN
SELECT 10 INTO error FROM DUMMY;
SELECT 'Por favor verificar margen de venta' INTO error_message FROM DUMMY;
END IF;
END IF;
----------------------------------------------------------------------------------------------------------------------------------
IF (:object_type = '147000011' AND :transaction_type = 'A') THEN
DECLARE PRECIO_INVALIDO INT;
SELECT (SELECT COUNT(*)
FROM PRQ1
WHERE "DocEntry" = :list_of_cols_val_tab_del
AND (IFNULL("Price", 0) <= 0)) INTO PRECIO_INVALIDO FROM DUMMY;
IF :PRECIO_INVALIDO > 0 THEN
SELECT 1471 INTO error FROM DUMMY;
SELECT 'Error 1471: Hay líneas con precio igual o menor a cero en la solicitud de compra.' INTO error_message FROM DUMMY;
END IF;
END IF;
--------------------------------------------------------------------------------------------------------------------------------
/*
IF (:object_type = '17' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
DECLARE MARGEN INT;
SELECT (SELECT
COUNT(*)
FROM (SELECT
A0."ItemCode",
CASE
WHEN A0."TotalBruto" = 0 THEN 0
ELSE (A0."GrssProfit"/A0."TotalBruto")*100
END "%Ganancia"
FROM (SELECT
T1."ItemCode",
T1."LineTotal" - (T1."LineTotal" * (T0."DiscSum" / (T0."DocTotal" + T0."WTSum" - T0."VatSum" - T0."RoundDif" - T0."TotalExpns" + T0."DpmAmnt" + T0."DiscSum"))) AS "TotalBruto",
T1."GrssProfit"
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE :list_of_cols_val_tab_del = T0."DocEntry"
AND T0."U_Check_Margen" = 'N'
) A0
) B0
WHERE B0."%Ganancia" < 20) INTO MARGEN FROM DUMMY;
IF :MARGEN > 0 THEN
SELECT 1702 INTO error FROM DUMMY;
SELECT '1702 - Por favor verificar margen de venta' INTO error_message FROM DUMMY;
END IF;
END IF;
*/
--------------------------------------------------------------------------------------------------------------------------------
/*
IF (:object_type = '112' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
DECLARE MARGEN INT;
SELECT (SELECT
COUNT(*)
FROM (SELECT
A0."ItemCode",
CASE
WHEN A0."TotalBruto" = 0 THEN 0
ELSE (A0."GrssProfit"/A0."TotalBruto")*100
END "%Ganancia"
FROM (SELECT
T1."ItemCode",
T1."LineTotal" - (T1."LineTotal" * (T0."DiscSum" / (T0."DocTotal" + T0."WTSum" - T0."VatSum" - T0."RoundDif" - T0."TotalExpns" + T0."DpmAmnt" + T0."DiscSum"))) AS "TotalBruto",
T1."GrssProfit"
FROM ODRF T0
INNER JOIN DRF1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE :list_of_cols_val_tab_del = T0."DocEntry" AND T0."ObjType" = 17
AND T0."U_Check_Margen" = 'N'
) A0
) B0
WHERE B0."%Ganancia" < 20) INTO MARGEN FROM DUMMY;
IF :MARGEN > 0 THEN
SELECT 1121702 INTO error FROM DUMMY;
SELECT '1121702 - Por favor verificar margen de venta' INTO error_message FROM DUMMY;
END IF;
END IF;
*/
---------------------------------------------------------------------------------------------------------------------------------
/*Orden de venta: validacion cuenta anexo obligatorio
Creada por CONSENSUS - German Duque - 16/abr/2021
IF (:object_type = '17' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
SELECT (SELECT
COUNT(*)
FROM ORDR T0
WHERE :list_of_cols_val_tab_del = T0."DocEntry"
AND T0."AtcEntry" is null) INTO CSS_CONTEO FROM DUMMY;
IF :CSS_CONTEO > 0 THEN
error := 1702;
error_message := '1702 CSS - Debe anexar OC o Soporte';
END IF;
END IF;
*/
---------------------------------------------------------------------------------------------------------------------------------
/*Orden de venta borrador: validacion anexo obligatorio
Creada por CONSENSUS - German Duque - 16/abr/2021
IF (:object_type = '112' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
SELECT (SELECT
COUNT(*)
FROM ODRF T0
WHERE :list_of_cols_val_tab_del = T0."DocEntry" AND T0."ObjType" = 17
AND T0."AtcEntry" is null) INTO CSS_CONTEO FROM DUMMY;
IF :CSS_CONTEO > 0 THEN
error := 1121702;
error_message := '1121702 CSS - Debe anexar OC o Soporte';
END IF;
END IF;
*/
-------------------------------------------------------------------------------------------------------------------------------
/*Factura de venta: validacion cuenta ingresos vs. cuenta costos
Creada por CONSENSUS - German Duque - 08/mar/2021 */
IF (:object_type = '13' AND :transaction_type = 'A') THEN
SELECT (SELECT
COUNT(*)
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode"
WHERE :list_of_cols_val_tab_del = T0."DocEntry"
AND (RIGHT(T1."AcctCode",2) <> RIGHT(T2."ItmsGrpCod",2) OR RIGHT(T1."CogsAcct",2) <> RIGHT(T2."ItmsGrpCod",2))
AND T2."GLPickMeth"='C') INTO CSS_CONTEO FROM DUMMY;
IF :CSS_CONTEO > 0 THEN
error := 1301;
error_message := '1301 CSS - Las cuentas de ingresos no corresponden a las cuentas de costos';
END IF;
END IF;
---------------------------------------------------------------------------------------------------------------------------------
/*Orden de venta: validacion cuenta ingresos vs. cuenta costos
Creada por CONSENSUS - German Duque - 08/mar/2021
IF (:object_type = '17' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
SELECT (SELECT
COUNT(*)
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry"
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode"
WHERE :list_of_cols_val_tab_del = T0."DocEntry"
AND (RIGHT(T1."AcctCode",2) <> RIGHT(T2."ItmsGrpCod",2) OR RIGHT(T1."CogsAcct",2) <> RIGHT(T2."ItmsGrpCod",2))
AND T2."GLPickMeth"='C') INTO CSS_CONTEO FROM DUMMY;
IF :CSS_CONTEO > 0 THEN
error := 1701;
error_message := '1701 CSS - Las cuentas de ingresos no corresponden a las cuentas de costos';
END IF;
END IF;
*/
---------------------------------------------------------------------------------------------------------------------------------
/*Orden de venta borrador: validacion cuenta ingresos vs. cuenta costos
Creada por CONSENSUS - German Duque - 08/mar/2021
IF (:object_type = '112' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
SELECT (SELECT
COUNT(*)
FROM ODRF T0
INNER JOIN DRF1 T1 ON T0."DocEntry" = T1."DocEntry"
INNER JOIN OITM T2 ON T1."ItemCode" = T2."ItemCode"
WHERE :list_of_cols_val_tab_del = T0."DocEntry" AND T0."ObjType" = 17
AND (RIGHT(T1."AcctCode",2) <> RIGHT(T2."ItmsGrpCod",2) OR RIGHT(T1."CogsAcct",2) <> RIGHT(T2."ItmsGrpCod",2))
AND T2."GLPickMeth"='C') INTO CSS_CONTEO FROM DUMMY;
IF :CSS_CONTEO > 0 THEN
error := 1121701;
error_message := '1121701 CSS - Las cuentas de ingresos no corresponden a las cuentas de costos';
END IF;
END IF;
*/
---------------------------------------------------------------------------------------------------------------------------------
/*
Objetivo: Restricción traslado solo area logistica*/
IF((object_type = '67') AND ( (transaction_type = 'U') or (transaction_type = 'A'))) THEN
DECLARE Traslado INT;
SELECT COUNT(*) INTO Traslado FROM OWTR T0 WHERE IFNULL(T0."U_TRAS_AREA",'') != 'LOGISTICA' And T0."DocEntry" = :list_of_cols_val_tab_del ;
IF :Traslado > 0 THEN
error := '1';
error_message := 'Transferencia de Stock solo lo debe hacer el area de Logistica. Selecione la opcion LOGISTICA EN "U_TRAS_AREA"';
END IF;
END IF;
---------------------------------------------------------------------------------------------------------------------------------
/*FACTURA PROVEEDORES : validacion anexo obligatorio
Creada Diego Pinilla - 24/Agosto/2021 */
IF (:object_type = '18' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
SELECT (SELECT
COUNT(*)
FROM OPCH T0
WHERE :list_of_cols_val_tab_del = T0."DocEntry" AND T0."DataSource" <> 'O'
AND T0."AtcEntry" is null) INTO CSS_CONTEO FROM DUMMY;
IF :CSS_CONTEO > 0 THEN
error := 1702;
error_message := '1702 DP Debe Anexar Factura,Doc.Trasnporte';
END IF;
END IF;
------------------------------------------------
--Consulta para TN--
---TN-XX - Valida articulos en la orden de venta---
---------- busca facturas de venta del mismo cliente de la OV con dichos articulos en los ultimos 6 meses ---
---------- si por lo menos un articulo no se ha comprado en los ultimos 6 meses, retorna error y debe irse para autorizacion---
/*IF :object_type='17' AND (:transaction_type='A' or :transaction_type='U') THEN
DECLARE cont INT;
DECLARE maxrownumber INT;
DECLARE rownumber INT;
DECLARE linenumber INT;
DECLARE invoicelines INT;
DECLARE itemcode NVARCHAR (50);
DECLARE cardcode NVARCHAR (15);
DECLARE docdate DATE;
DECLARE backdate DATE;
/*Verificar si el campo U_AUTOR_VENTA tiene valor SI/NO en la orden de venta*/
/*
SELECT CASE WHEN IFNULL(H0."U_AUTOR_VENTA",'')='S' THEN 1 ELSE 0 END INTO cont FROM ORDR H0 WHERE H0."DocEntry"= :list_of_cols_val_tab_del;
IF cont = 0 THEN
rownumber:= 0;
SELECT COUNT(*) INTO maxrownumber FROM RDR1 WHERE "DocEntry" = :list_of_cols_val_tab_del;
WHILE (:rownumber < :maxrownumber) DO
SELECT "VisOrder" INTO linenumber FROM RDR1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "VisOrder" = :rownumber;
SELECT "ItemCode" INTO itemcode FROM RDR1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "LineNum" = :linenumber;
SELECT "BaseCard" INTO cardcode FROM RDR1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "LineNum" = :linenumber;
SELECT "DocDate" INTO docdate FROM RDR1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "LineNum" = :linenumber;
SELECT ADD_MONTHS(:docdate, -6) INTO backdate FROM DUMMY;
SELECT COUNT (*) INTO invoicelines FROM INV1 T0 WHERE T0."ItemCode"=:itemcode AND T0."DocDate" BETWEEN :backdate AND :docdate AND T0."BaseCard"= :cardcode;
IF (:invoicelines <= 0) THEN
error:= 1;
error_message:= 'SP-xx: Articulo en linea ('||:linenumber+1||') sin ventas en los ultimos meses, necesita autorizacion';
END IF;
rownumber:= :rownumber + 1;
END WHILE;
END IF;
END IF;
*/
---------------------------------------------------------------------------------------------------------------------------------
/*IF :object_type='112' AND(:transaction_type='A' or :transaction_type='U') THEN
DECLARE cont INT;
DECLARE maxrownumber INT;
DECLARE rownumber INT;
DECLARE linenumber INT;
DECLARE invoicelines INT;
DECLARE itemcode NVARCHAR (50);
DECLARE cardcode NVARCHAR (15);
DECLARE docdate DATE;
DECLARE backdate DATE;
/*Verificar si el campo U_AUTOR_VENTA tiene valor SI/NO en la orden de venta*/
/*SELECT CASE WHEN IFNULL(H0."U_AUTOR_VENTA",'')='S' THEN 1 ELSE 0 END INTO cont FROM ODRF H0 WHERE H0."DocEntry"= :list_of_cols_val_tab_del;
IF cont = 0 THEN
rownumber:= 0;
SELECT COUNT(*) INTO maxrownumber FROM DRF1 WHERE "ObjType" = 17 AND "DocEntry" = :list_of_cols_val_tab_del;
WHILE (:rownumber < :maxrownumber) DO
SELECT "VisOrder" INTO linenumber FROM DRF1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "VisOrder" = :rownumber;
SELECT "ItemCode" INTO itemcode FROM DRF1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "LineNum" = :linenumber;
SELECT "BaseCard" INTO cardcode FROM DRF1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "LineNum" = :linenumber;
SELECT "DocDate" INTO docdate FROM DRF1 WHERE "DocEntry" = :list_of_cols_val_tab_del AND "LineNum" = :linenumber;
SELECT ADD_MONTHS(:docdate, -6) INTO backdate FROM DUMMY;
SELECT COUNT (*) INTO invoicelines FROM INV1 T0 WHERE T0."ItemCode"=:itemcode AND T0."DocDate" BETWEEN :backdate AND :docdate AND T0."BaseCard"= :cardcode;
IF (:invoicelines <= 0) THEN
error:= 1;
error_message:= 'SP-xx: Articulo en linea ('||:linenumber+1||') sin ventas en los ultimos meses, necesita autorizacion';
END IF;
rownumber:= :rownumber + 1;
END WHILE;
END IF;
END IF;
*/
---------------------------------------------------------------------------------------------------------------------------------
/* Factura con margen mayor a 60% */
IF (:object_type = '13' AND :transaction_type = 'A') THEN
DECLARE MARGEN INT;
SELECT (SELECT
COUNT(*)
FROM (SELECT
A0."ItemCode",
CASE
WHEN A0."TotalBruto" = 0 THEN 0
ELSE (A0."GrssProfit"/A0."TotalBruto")*100
END "%Ganancia"
FROM (SELECT
T1."ItemCode",
T1."LineTotal" - (T1."LineTotal" * (T0."DiscSum" / (T0."DocTotal" + T0."WTSum" - T0."VatSum" - T0."RoundDif" - T0."TotalExpns" + T0."DpmAmnt" + T0."DiscSum"))) AS "TotalBruto",
T1."GrssProfit"
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE :list_of_cols_val_tab_del = T0."DocEntry"
AND T0."U_Check_Margen_FV" = 'N'
) A0
) B0
WHERE B0."%Ganancia" > 60) INTO MARGEN FROM DUMMY;
IF :MARGEN > 0 THEN
SELECT 10 INTO error FROM DUMMY;
SELECT 'Por favor verificar margen de venta en "U_Check_Margen_FV es mayor a 60%" ' INTO error_message FROM DUMMY;
END IF;
END IF;
--------------------------------------------------------------------------------------------------------------------------------
/*
IF (:object_type = '17' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
DECLARE MARGEN INT;
SELECT (SELECT
COUNT(*)
FROM (SELECT
A0."ItemCode",
CASE
WHEN A0."TotalBruto" = 0 THEN 0
ELSE (A0."GrssProfit"/A0."TotalBruto")*100
END "%Ganancia"
FROM (SELECT
T1."ItemCode",
T1."LineTotal" - (T1."LineTotal" * (T0."DiscSum" / (T0."DocTotal" + T0."WTSum" - T0."VatSum" - T0."RoundDif" - T0."TotalExpns" + T0."DpmAmnt" + T0."DiscSum"))) AS "TotalBruto",
T1."GrssProfit"
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE :list_of_cols_val_tab_del = T0."DocEntry"
AND T0."U_Check_Margen" = 'N'
) A0
) B0
WHERE B0."%Ganancia" > 60) INTO MARGEN FROM DUMMY;
IF :MARGEN > 0 THEN
SELECT 1702 INTO error FROM DUMMY;
SELECT '1702 - Por favor verificar margen de venta es mayor a 60%' INTO error_message FROM DUMMY;
END IF;
END IF;
*/
--------------------------------------------------------------------------------------------------------------------------------
/*
IF (:object_type = '112' AND (:transaction_type = 'A' OR :transaction_type = 'U')) THEN
DECLARE MARGEN INT;
SELECT (SELECT
COUNT(*)
FROM (SELECT
A0."ItemCode",
CASE
WHEN A0."TotalBruto" = 0 THEN 0
ELSE (A0."GrssProfit"/A0."TotalBruto")*100
END "%Ganancia"
FROM (SELECT
T1."ItemCode",
T1."LineTotal" - (T1."LineTotal" * (T0."DiscSum" / (T0."DocTotal" + T0."WTSum" - T0."VatSum" - T0."RoundDif" - T0."TotalExpns" + T0."DpmAmnt" + T0."DiscSum"))) AS "TotalBruto",
T1."GrssProfit"
FROM ODRF T0
INNER JOIN DRF1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE :list_of_cols_val_tab_del = T0."DocEntry" AND T0."ObjType" = 17
AND T0."U_Check_Margen" = 'N'
) A0
) B0
WHERE B0."%Ganancia" > 60) INTO MARGEN FROM DUMMY;
IF :MARGEN > 0 THEN
SELECT 1121702 INTO error FROM DUMMY;
SELECT '1121702 - Por favor verificar margen de venta es mayor a 60%' INTO error_message FROM DUMMY;
END IF;
END IF;
*/
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--ENTREGA CON PRECIOS DISTINTOS A LOS ESTABLECIDOS EN LISTA DE PRECIOS ESPECIALES POR SOCIOS DE NEGOCIOS
IF(:object_type = '15' AND (:transaction_type='A' OR :transaction_type='U')) THEN
DECLARE COUNTER INT;
SELECT COUNT(*) INTO COUNTER
FROM ODLN T0
INNER JOIN DLN1 T1 ON T0."DocEntry"=T1."DocEntry"
INNER JOIN OSPP T2 ON T0."CardCode"=T2."CardCode" AND T1."ItemCode"=T2."ItemCode"
WHERE (T1."Currency" <> T2."Currency" OR T1."Price"<>T2."Price") AND T1."ItemCode"=T2."ItemCode" AND T0."DocEntry"=:list_of_cols_val_tab_del;
IF :COUNTER > 0 THEN
error := 1501;
error_message := 'Precio en lineas de la entrega no puede ser distinto del establecido en la lista de precios especiales para el socio de negocio';
END IF;
END IF;
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--ENTREGA CON ARTICULOS DIFERENTES A LA LISTA DE PRECIOS ESPECIALES
IF(:object_type = '15' AND (:transaction_type='A' OR :transaction_type='U')) THEN
DECLARE COUNTER INT;
SELECT COUNT(*) INTO COUNTER
FROM ODLN T0
INNER JOIN DLN1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T1."ItemCode" NOT IN (Select "ItemCode" from OSPP where "CardCode" = T0."CardCode" ) and T0."DocEntry"=:list_of_cols_val_tab_del;
IF :COUNTER > 0 THEN
SELECT 1502 INTO error FROM DUMMY;
SELECT 'Uno de los articulo no se encuentra en la lista de precios especiales para el socio de negocio' INTO error_message FROM DUMMY;
END IF;
END IF;
/*******************************************************/
/*******************************************************/
/*** INICIO VALIDACIONES V3 PARA FACTURA ELECTRONICA ***/
/********************************/
/*** V3 - FACTURA ELECTRONICA ***/
/********************************/
/*
IF :Object_Type = 'V3_CR_FCE' THEN
CALL "SBO_SP_TransactionNotification_V3_OBJETOS_FCE"(:object_type, :transaction_type, :num_of_cols_in_key,
:list_of_key_cols_tab_del, :list_of_cols_val_tab_del, :error, :error_message);
END IF;
*/
/*************************/
/*** VENTAS - FACTURAS ***/
/*************************/
IF :Object_Type = '13' THEN
select "DocSubType" into DocSubType from OINV where "DocEntry" = :list_of_cols_val_tab_del;
if :DocSubType <> 'DN' then
CALL "SBO_SP_TransactionNotification_V3_FE_VE_FC"(:object_type, :transaction_type, :num_of_cols_in_key,
:list_of_key_cols_tab_del, :list_of_cols_val_tab_del, :error, :error_message);
/*else
CALL "SBO_SP_TransactionNotification_V3_FE_VE_ND"(:object_type, :transaction_type, :num_of_cols_in_key,
:list_of_key_cols_tab_del, :list_of_cols_val_tab_del, :error, :error_message);
*/
end if;
END IF;
/*********************************/
/*** VENTAS - NOTAS DE CREDITO ***/
/*********************************/
IF :Object_Type = '14' THEN
CALL "SBO_SP_TransactionNotification_V3_FE_VE_NC"(:object_type, :transaction_type, :num_of_cols_in_key,
:list_of_key_cols_tab_del, :list_of_cols_val_tab_del, :error, :error_message);
END IF;
/*** FIN VALIDACIONES V3 PARA FACTURA ELECTRONICA ***/
/****************************************************/
/****************************************************/
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- Select the return values
select :error, :error_message FROM dummy;
end;
agradzeco su ayuda