cancel
Showing results for 
Search instead for 
Did you mean: 

Busqueda formulada

former_member228470
Participant
0 Kudos

Hola a todos

Necesito su ayuda. Estoy  haciendo una busqueda formulada que no me permita crear una orden de venta si el cliente no esta en la tabla de Precios especiales. El punto es que sea o no cliente me lo deja crear. No sé dónde radique el problema.

If @Object_Type = '17' and @transaction_type in ('A')

Begin

If (Select top 1 'True'  From ORDR T0

  INNER JOIN OSPP T4 ON T4.Cardcode = t0.CardCode

Where T0.DocEntry=@list_of_cols_val_tab_del

and T0.CardCode != t4.CardCode

)='True'

Begin

Set @error='-1'

Set @error_message='CLIENTE NO ESTA EN LISTA DE PRECIOS ESPECIALES '

End

End

Accepted Solutions (1)

Accepted Solutions (1)

gerardo_mendez
Active Contributor
0 Kudos

Pues si lo que buscas es que el cliente no esté en la tabla OSPP, yo lo haría de la siguiente manera:


      

If @Object_Type = '17' and @transaction_type in ('A')

       Begin

             If     (Select Count(T4.CardCode)  From OSPP T4

                    Where (Select T0.CardCode FROM ORDR T0 Where T0.DocEntry=@list_of_cols_val_tab_del) = T4.CardCode)=0

                    Begin

                           Set @error='-1'

                           Set @error_message='CLIENTE NO ESTA EN LISTA DE PRECIOS ESPECIALES '

                    End

       End



gerardo_mendez
Active Contributor
0 Kudos

Hola Sara.

¿Pudiste solucionar tu escenario?

Saludos.

former_member228470
Participant
0 Kudos

Hola Gerardo, en efecto hoy estaba haciendo las pruebas. Si me sirvió lo que me proporcionaste. Lo apliqué en el que ya tenía de bloqueo de listas de precios por debajo del limite permitido pero si el cliente está en lista de precios especiales si me debe dejar. Me funciona

If @Object_Type = '17' and @transaction_type in ('A')

Begin

If (Select top 1 'True'  From ORDR T0

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

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

  INNER JOIN OCRD T3 ON T0.CardCode = T3.CardCode

    Where T0.DocEntry=@list_of_cols_val_tab_del

    and T1.DocEntry=@list_of_cols_val_tab_del

    AND (T1.Price/T1.NumPerMsr) < (select t3.price from ITM1 t3 where T3.ITEMCODE=T1.ITEMCODE and t3.pricelist=5)

    and  (Select Count(T4.CardCode)  From OSPP T4 Where (Select T0.CardCode FROM ORDR T0 Where T0.DocEntry=@list_of_cols_val_tab_del) = T4.CardCode)=0

   )='True'

Begin

Set @error='-1'

Set @error_message='Artículo esta por debajo del Precio Permitido, Linea '

End

End

Pero el punto ahora es que si el cliente aunque esté en lista de precios especiales pero el articulo no, no debe dejarme. Debe estar el cliente y el articulo

Le agregué esta sentencia pero no me funciona

(Select Count(T4.ItemCode)  From OSPP T4  Where (Select T1.ItemCode FROM rdr1 T1 Where T1.DocEntry=@list_of_cols_val_tab_del) = T4.itemcode)=0

al final me queda asi pero no me funciona por el articulo

If @Object_Type = '17' and @transaction_type in ('A')

Begin

If (Select top 1 'True'  From ORDR T0

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

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

  INNER JOIN OCRD T3 ON T0.CardCode = T3.CardCode

    Where T0.DocEntry=@list_of_cols_val_tab_del

    and T1.DocEntry=@list_of_cols_val_tab_del

    AND (T1.Price/T1.NumPerMsr) < (select t3.price from ITM1 t3 where T3.ITEMCODE=T1.ITEMCODE and t3.pricelist=5)

    and  (Select Count(T4.CardCode)  From OSPP T4 Where (Select T0.CardCode FROM ORDR T0 Where T0.DocEntry=@list_of_cols_val_tab_del) = T4.CardCode)=0

    and (Select Count(T4.ItemCode)  From OSPP T4  Where (Select T1.ItemCode FROM rdr1 T1 Where T1.DocEntry=@list_of_cols_val_tab_del) = T4.itemcode)=0

)='True'

Begin

Set @error='-1'

Set @error_message='Artículo esta por debajo del Precio Permitido, Linea '

End

End

gerardo_mendez
Active Contributor
0 Kudos

Hola Sara.

No tengo tiempo para realizar una prueba pero desde mi lógica si quisiera una sentencia que me cuente los artículos que NO ESTAN contenidos en otra tabla, lo haría de la siguiente forma:

(Select Count(T4.ItemCode)  From OSPP T4  Where (Select T1.ItemCode FROM rdr1 T1 Where T1.DocEntry=@list_of_cols_val_tab_del) Not In(T4.itemcode))>0

No olvides marcar las respuestas que te han sido de ayuda. Saludos.

Answers (0)