No crear factura si no existe una Orden de venta

Cordial saludo

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?

Gracias.

mediante el workflow

Podrías explicarme por favor

Hice este SP pero no se muestra el mensaje de error, solo se muestra la pantalla roja en el log de SAP.

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;

Hola @camilog
El campo BaseType cuando no tiene doc base es igual a -1. Ajusta la condicion del where

Andres Ramirez Jaramillo :colombia:

Hola! cambia el Basetype=’’ por Basetype !=‘17’

Estoy usando este código, pero no esta tomando la restricción :confused:

----------------------------------------------------------------------------------
---- 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;

Buenas tardes

Seria con != 15 ya que el documento origen de la factura es la entrega, pero no funciona.

Hola @andresramirez

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;

Pero no he logrado que funcione el SP

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.

Saludos

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.

Mi versión es SAP Business One for Hana.

Entonces haz que el docentry de la factura esté registrado en el target entry de la tabla rdr1.

Hola.

Estas trabajando con el procedimiento SP_TRANSACTIONNOTIFICATION???

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.

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.