on 04-23-2016 6:19 PM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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.
User | Count |
---|---|
98 | |
11 | |
11 | |
6 | |
6 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.