cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction para hacer Traspasos de mercancías Completos

Former Member
0 Kudos

Buenos Días, quien me puede ayudar a elaborar un transaction notification para el objeto de traspaso de mercancias de invetarios.  Ya que al hacer traspaso de mercancia de artículos que tengo en mi bodega 05 no puedo hacer un traspaso parcial.  Cuando saco esa mercancía a la venta debe ser completo.

Dicho Transaction solo se debe cumplir cuando traspaso mercancia de la bodega 05 a la bodega 01, los demás traspasos no queda involucrados.

Adicional a mandarme el error si la cantidad que transacciono de un artículo es mayor a 0 de lo que quede también me debería decir que línea del traspaso a hacer es la que no está cumpliendo con dicho transaction.

Esperando alguien me pueda ayudar por favor

Saludos y Gracias de Antemano

Yamileth

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hola Yamileth,
he creado este codigo para el Transaction que necesitas segun te entendi, solo cambia el codigo de Bodega para que puedas intentar.

-------------------------------------------------------------------------------------------------------------------

DECLARE @Articulo AS VARCHAR(10)

IF @object_type = '67'

BEGIN

    IF EXISTS (SELECT * FROM OWTR T0

                INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

                INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.FromWhsCod

                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.FromWhsCod = 'Codigo de la Bodega 05' AND T1.WhsCode = 'Codigo de Bodega 01'

                AND T2.OnHand > 0)

          

        BEGIN

            SET @Articulo = (SELECT TOP 1 T1.LineNum + 1 FROM OWTR T0

            INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

            INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.FromWhsCod

            WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.FromWhsCod = 'Codigo de la Bodega 05' AND T1.WhsCode = 'Codigo de Bodega 01'

            AND T2.OnHand > 0)

          

          

            Set @error = 1

            Set @error_message = 'La Linea ' + @Articulo + ' No cumple la condicion'

          

        END

END

------------------------------------------------------------------------------------------------------------------------


Espero te sirva, cree el codigo solo comprobandolo mentalmente

Saludos!!

Former Member
0 Kudos

Hola Joseph no me ha funcionado no se si por algun tipo de conversión.

DECLARE @Articulo AS varchar(10)

IF @object_type = '67' and @transaction_type in ('A')

BEGIN

    IF EXISTS (SELECT * FROM OWTR T0

                INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

                INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.WhsCode

                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.WhsCode = '001 Bodega a donde va la mercancía' AND T0.Filler = '005 Bodega de donde sale la mercancia'

                AND T2.ItemCode > 0)

           

        BEGIN

            SET @Articulo = (SELECT TOP 1 T1.LineNum + 1 FROM OWTR T0

            INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

            INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.WhsCode

            WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.WhsCode = '001 Bodega a donde va la mercancía' AND T0.Filler = '005 Bodega de donde sale la mercancia'

            AND T2.ItemCode > 0)

           

           

            Set @error = 1

            Set @error_message = 'La Linea ' + @Articulo + ' No cumple la condicion'

           

        END

END

Cuando hago una prueba con mercancía parcial o la que sea me sale el error ' Convertion Failed when converting nvarchar value 20102AML0MF0VD15-01A to data type int

mi artículo son nvarchar de 20 caracteres no se si esto influya en algo.  Lo que si es cierto que cuando lo paso a otra bodega como la 009 si me lo deja pasar asi que esto quiere decir que va por buen camino.

Puedes probar tu codigo en alguna prueba de tu aplicación usando como ejemplo 2 bodegas de las tuyas para ver si funciona?

Saludos y Gracias

Former Member
0 Kudos

ahh ya pues creo que tienes que cambiar  esto  =  T2.ItemCode > 0 , y dejarlo asi =  T2.OnHand > 0

Cambialo en las dos veces que aparece en el codigo.

Former Member
0 Kudos

Ya lo había hecho porque vi que lo que tiene que ser mayor a 0 es el stock.  Pero me sigue mandando error.  Ahora me manda el error

Convertion Failed when converting nvarchar value 'La Linea' to data type int

Former Member
0 Kudos

que raro, porque el @error_message no es un dato Int.


Muestrame como ha quedado tu codigo vale.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas

Creo que estas haciendo mal los filtros

WHERE T0.DocEntry = @list_of_cols_val_tab_del AND

T1.WhsCode = '001 Bodega a donde va la mercancía' AND

T0.Filler = '005 Bodega de donde sale la mercancia'

Lo correcto es

WHERE T0.DocEntry = @list_of_cols_val_tab_del AND

T1.WhsCode = '001' AND

T0.Filler = '005'

Los códigos de almacén no tienen tantos caracteres.

Saludos

Former Member
0 Kudos

DECLARE @Articulo AS integer

IF @object_type = '67' and @transaction_type in ('A')

BEGIN

    IF EXISTS (SELECT * FROM OWTR T0

                INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

                INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.WhsCode

                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.WhsCode = '001' AND T0.Filler = '005'

                AND T2.OnHand > 0)

           

        BEGIN

            SET @Articulo = (SELECT TOP 1 T1.LineNum + 1 FROM OWTR T0

            INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

            INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T1.WhsCode

            WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.WhsCode = '001' AND T0.Filler = '005'

            AND T2.OnHand > 0)

           

           

            Set @error = 1

            Set @error_message = 'La Linea ' + @Articulo + ' No cumple la condicion'

           

        END

END

De esta forma sigue saliendo el error Convertion Failed when converting nvarchar value 'La Linea' to data type int

felipe_loyolarodriguez
Active Contributor
0 Kudos

Eso es porque la variable @Articulo es interger y no la estas conviertiendo a texto antes de concatenar

Debes colocarlo así

Set @error_message = 'La Linea ' + cast(@Articulo as varchar(100)) + ' No cumple la condicion'

Saludos

Former Member
0 Kudos

ok, creo que es porque la variable @articulo esta en Int y no puede concatenarse a la cadena de Texto

Cambia esto y ponlo asi: DECLARE @Articulo AS varchar(10)

Former Member
0 Kudos

Ok haciendo lo que dice Felipe ya me sale que no cumple, ahora el problema es que el artículo tiene 175 en la bodega 005 y si pongo traspasar 5 me sale que la linea no cumple, eso es correcto, pero si pongo los 175 que si debería dejarme también me sale el error que no cumple porque?

Está bien que el es porque el stock es mayor a 0? o debe ser que sea = a 0?

Former Member
0 Kudos

Intenta con este cambio:

INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T0.Filler

en las dos veces que aparece vale!

Answers (1)

Answers (1)

Former Member
0 Kudos

Muchísimas gracias ahora si funciona.  Gracias a los 2 porque con ambas respuestas complementadas han hecho el query correcto.

Lo dejo abajo por si hay otros que lo desean.

Saludos y Gracias

DECLARE @Articulo AS integer

IF @object_type = '67' and @transaction_type in ('A')

BEGIN

    IF EXISTS (SELECT * FROM OWTR T0

                INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

                INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T0.Filler

                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.WhsCode = '001' AND T0.Filler = '005'

                AND T2.OnHand >0)

           

        BEGIN

            SET @Articulo = (SELECT TOP 1 T1.LineNum + 1 FROM OWTR T0

            INNER JOIN WTR1 T1 ON T1.DocEntry = T0.DocEntry

            INNER JOIN OITW T2 ON T2.ItemCode = T1.ItemCode AND T2.WhsCode = T0.Filler

            WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T1.WhsCode = '001' AND T0.Filler = '005'

            AND T2.OnHand >0)

           

           

            Set @error = 1

           Set @error_message = 'La Linea ' + cast(@Articulo as varchar(100)) + ' No cumple la condicion'

           

        END

END