Bloqueo de factura de venta sin centro de costo

Buen día

He colocado un código en el TN para el bloqueo de la creación de una factura de ventas si la misma en sus lineas no tiene centro de costo, me funciona bien siempre y cuando la factura sea de una sola linea, si agrego 2 lineas y a una de esas lineas le quito el centro de costo me envía un error.

Como puedo hacer para que aplique a las demás lineas?

if (@object_type = '13') and (@transaction_type = 'A') --No se permite la creacion de factura de venta sin centro de costo
begin
declare @Sucursal as nvarchar(40)
set @Sucursal = (select isnull(T0.OcrCode,0) from INV1 T0 where T0.DocEntry = @list_of_cols_val_tab_del)
IF (@Sucursal = '0')
begin
select @error = 1 
set @error_message = 'No es posible crear factura sin Centro de Costo, por favor seleccione un Centro de Costo'
end
end

Hola @Lsanders,

Tu consulta que pones valor en @Sucursal, esta devolviendo mas de un valor, podrias cambiarlo asi:

declare @Sucursal as integer
set @Sucursal = (select count(*) from INV1 T0 where T0.DocEntry = @list_of_cols_val_tab_del
and isnull(T0.OcrCode,"0") = "0"
)
IF (@Sucursal > 0)

Espero te sirva.

Saludos,

1 me gusta

Buenos dias Lsanders puedes usar este Transact SQL:

DECLARE @Centro_VACIO VARCHAR(MAX)
IF @OBJECT_TYPE IN ('13') AND @TRANSACTION_TYPE IN ('A')
BEGIN
    SET @Centro_VACIO=(SELECT COUNT(*) FROM OINV A FULL JOIN INV1 B ON A.DOCENTRY=B.DOCENTRY  
    WHERE (B.OcrCode IS NULL OR  B.OcrCode='')AND A.DOCENTRY=@LIST_OF_COLS_VAL_TAB_DEL )
                IF (@Centro_VACIO  > 0)  --AND ( @GRUPO_ARTICULO > 0)
                BEGIN
                    SET @ERROR = 13
                    SET @ERROR_MESSAGE ='NO ES POSIBLE CREAR FACTURA SIN CENTRO DE COSTO'
             
                END
    END
1 me gusta

Gracias, me funciono de maravilla