Se quiere implementar una restricción que no permita crear facturas de venta si no vienen de una orden de venta, existe alguna restricción en Sap Business One que se pueda implementar sin llegar al desarrollo de un Transaction Notification?
CNT:= 0;
IF object_type = '13' AND (:transaction_type='A' OR :transaction_type='U') THEN
SELECT COUNT (*) INTO CNT
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."DocEntry" = :list_of_cols_val_tab_del
AND (T1."BaseType" = '' OR T1."BaseType" IS NULL) ----, T1."BaseRef", T1."BaseEntry"
;
IF :CNT>0 THEN
error := 2;
error_message := '**** AMS - 008 Se requiere de una orden de venta para continuar. ';
END IF;
END IF;
Estoy usando este código, pero no esta tomando la restricción
----------------------------------------------------------------------------------
---- FACTURA DEUDORES - FACTURA QUE NO VIENE DE ORDEN DE VENTA NO SE PUEDE CREAR EN EL SISTEMA
CNT:= 0;
IF object_type = '13' AND (:transaction_type='A' OR :transaction_type='U') THEN
SELECT COUNT (*) INTO CNT
FROM OINV T0
INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."DocEntry" = :list_of_cols_val_tab_del
AND CAST (T1."BaseType" AS INT) = -1 ;
IF :CNT>0 THEN
error := 2;
error_message := '**** AMS - 008 Se requiere de una orden de venta para continuar. ';
END IF;
END IF;
He intentado usando:
T1.“BaseType” = ‘-1’,
T1.“BaseType” = -1,
T1.“BaseType” LIKE ‘%%-1%%’,
T1.“BaseType” NOT LIKE ‘%%15%%’
CAST (T1.“BaseType” AS INT) = -1,
CAST (T1.“BaseType” AS VARCHAR(10)) LIKE ‘%%-1%%’
Dentro del codigo:
CNT:= 0;
IF object_type = '13' AND (:transaction_type= 'A' OR :transaction_type='U') THEN
SELECT COUNT (*) INTO CNT
FROM OINV T0 INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry"
WHERE T0."DocEntry" = :list_of_cols_val_tab_del
AND T1."BaseType" = '-1';
IF :CNT>0 THEN
error := 2;
error_message := '**** AMS - 008 Se requiere de una orden de venta para continuar ';
END IF;
END IF;
Hola @camilog realice unas pruebas en mi base de pruebas y me funciono el bloqueo de esta forma, ve si te es funcional para ti, en resumen realiza lo que pides que no se cree la factura de ventas si no tiene una Orden de venta.
if @object_type = '13' AND @transaction_type = 'A' and
@BaseType = (Select T0.BaseType From INV1 t0 inner join oinv t1 on t1.docentry=t0.docentry where T0.DocEntry = convert(Int,@list_of_cols_val_tab_del) and T0.BaseEntry IS NULL)
begin
set @error = 1
set @error_message = 'NO SE PUEDE CREAR FACTURAS SIN ORDEN DE VENTA ATENCION!!'
goto fin
end
Espero te sea de ayuda el código y nos comentas siempre como te fue.
Nada no me funciona, si le digo que es null la restricción no funciona, si le digo que es vacio ‘’ o null se genera un bloqueo general en los documentos.
Finalmente encontré el problema, el código esta correcto pero hay un SP implementado por el partner que deja inhabilitados todos mis SP de facturas deudor.
Ya nos estan ayudando a resolver el incidente, dado lo anterior cierro este post, gracias a todos.