Ayuda con TRANSACTIONNOTIFICATION HANA B1 Pedidos

Estoy tratando de realizar una validacion en SAP B1 HANA, para impedir de que se genere una factura sin un pedido previo ya cree el SP y aun asi me sigue dejando hacer la factura, por favor si alguien puede darme una mano con estoy plis.

El codigo que tengo implementado es este:

ALTER PROCEDURE "SP_MisValidaciones"
(
	object_type nvarchar(30), 				-- SBO Object Type
	transaction_type nchar(1),			-- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose
	num_of_cols_in_key int,
	list_of_key_cols_tab_del nvarchar(255),
	list_of_cols_val_tab_del nvarchar(255),
	OUT error int,
	OUT error_message nvarchar(200)
)
LANGUAGE SQLSCRIPT
AS
BEGIN
	DECLARE validacionDoc INT;
	IF (:error = 0) and (:object_type = '13') and (:transaction_type = 'A')  
	THEN
		SELECT T1."BaseType" INTO validacionDoc
		FROM OINV T0 INNER JOIN INV1 T1 ON T0."DocEntry" = T1."DocEntry" WHERE 
		T0."DocEntry" = :list_of_cols_val_tab_del AND T0."CANCELED" = 'N';	
		IF(:validacionDoc <> 17) 
			THEN BEGIN
			error := 99999;
			error_message := 'No puede facturar sin haber un pedido previo';
			return;
			END;
		END IF;
	END IF;
END;

Hola @xMythCraftx, si añades lo siguiente al código y lo intentas.

O revisa en el IF de la evaluación de la variable de retorno del Query, porque al parecer estas evaluando como si fuera un número y es posible que venga vacía, intenta evaluar tambien con :variable = ‘’ o con :variable IS NULL

Hola

prueba validando T1.“BaseType” con nu IFNULL y elimina el “IF (:error = 0) and”
y deja IF :object_type = ‘17’ AND (:transaction_type = ‘A’ )

slds

Hola, Yo trabajo con SQL me sirve esta TN

If @object_type = '13' AND @transaction_type IN ('A','U')
Begin
      If Exists(Select ItemCode From INV1 T0 Where T0.BaseEntry Is Null And T0.DocEntry = @list_of_cols_val_tab_del)
      Begin
            Set @error = '1003'
            Set @error_message = 'La Factura no puede ser creada sin un pedido'
      End

End

Quizás puedas adecuarlo a Hana

buenos días,

Ya llamaste este procedure en el transaccion notification en el objeto que corresponde?

Hola @xMythCraftx debes tener en cuenta el campo BaseEntry y/o BaseType a nievel de detalle. Aca un ejemplo de un SP para validar que las facturas de reserva por compras tengan vinculado una Orden de compra.

----------------------------------------------------------------------------------
/*
*	En las Facturas de Reserva por compra
* 	Validar que tenga relacionada una orden de compra.
*   
*	
-- ***********************************************
-- * 	@autor:  	Diego Achury             *
-- *	@versión:	1.0                      *
-- *	@fecha:		2019-01-21               *
-- ***********************************************
*/
IF :object_type = '18' AND (:transaction_type='A') THEN
	
	select 
	ifnull(count(*),0) into valida 
	from "SBO_COLOMBIA".PCH1 T0
	left join "SBO_COLOMBIA".OPCH T1 on T0."DocEntry" = T1."DocEntry"
	where T0."DocEntry" = :list_of_cols_val_tab_del
	and T0."BaseType" <> 22
	and T1."CANCELED" = 'N'
	and T1."DocType" = 'I';
		
	IF :valida > 0 then
		error := 18;
		error_message := 'SP_3* La Factura de reserva debe tener Doc base Orden de Compra';
		
	END IF;
	

END IF;
----------------------------------------------------------------------------------

Saludos,

Diego Achury :colombia:

1 me gusta

Muchisimas Gracias!! Mer sirvio de mucho sus respuestas!!

Hola,
Entre el pedido y la factura…¿creas albaranes de venta?
En caso afirmartivo debes contemplar esta casuistica

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