Skip to Content
0

Query sales

Feb 09, 2017 at 12:15 AM

84

avatar image
Former Member

Estimados todos espero se encuentren bien, para pedir ayuda de su gran conocimiento les comento que tengo un reporte de ventas del cual necesito agregar dos campos de las tablas de OSLP y OHEM en el reporte jala el histórico del documento de ventas pero deseo que también me jale el campo actual ejemplo: en el documento de ventas si al cliente snmx0001 le generé uno con fecha 01-01-2017 y tenia como vendedor a vmx100 pedro perez si en mes de febrero genero otro documento de ventas pero si le cambie el asesor de ventas vmx105 juan perez al mismo socio de negocios snmx0001 quiero que si saco un reporte con los 2 meses enero y febrero me jale el vendedor actual (VMX105 JUAN PEREZ).

Set Language spanish

SELECT T0.[CardCode] AS 'Código SN', T0.[CardName] AS 'Socio de Negocio', T0.[DocDate], T0.[DocDueDate], T0.[CreateDate], DateName(m, T0.[CreateDate]) AS 'Mes', DateName(year, T0.[CreateDate]) AS 'Año', 'FACTURA' as Documento, T0.[DocNum], T1.[U_Sucursal] AS 'Sucursal', T2.[ItemCode] AS 'Código de Producto', T2.[Dscription] AS 'Nombre del Producto', T2.[Quantity] AS 'Cantidad', T2.[Price] AS 'Precio U', T2.[LineTotal], T2.[GrossBuyPr] AS 'Costo', T3.[U_Factor] AS 'Factor de Conversión', T4.[SlpName] AS 'Ruta', (T5.[firstName] +' '+ T5.[lastName])AS 'Nombre de Vendedor', T4.[U_SEGMENTO] AS 'Segmento', T3.[U_Grup] AS 'LOB', T3.[U_Clasif] AS 'Clasificación', T3.[U_Marca] AS 'Marca', (T2.[Quantity] * T3.[U_Factor]) as Litros_Piezas, T2.[LineTotal] * (1-(T0.DiscPrcnt/100)) as 'Importe total', T6.[PymntGroup] AS 'Condición de Pago', T0.[DiscPrcnt] AS '% De Descuento', T0.[Comments], T1.[County] AS 'Municipio', T1.[State1] AS 'Estado', T1.[ZipCode] AS 'Código Postal' FROM OINV T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode INNER JOIN INV1 T2 ON T0.DocEntry = T2.DocEntry INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode INNER JOIN OSLP T4 ON T0.SlpCode = T4.SlpCode INNER JOIN OHEM T5 ON T0.OwnerCode = T5.empID INNER JOIN OCTG T6 ON T0.GroupNum = T6.GroupNum where T0.[CreateDate] between [%0] and [%1] Union All SELECT T0.[CardCode], T0.[CardName], T0.[DocDate], T0.[DocDueDate], T0.[CreateDate], DateName(m, T0.[CreateDate]) AS 'Mes', DateName(year, T0.[CreateDate]) AS 'Año', 'NC', T0.[DocNum], T1.[U_Sucursal], T2.[ItemCode], T2.[Dscription], T2.[Quantity] * -1, T2.[Price], T2.[LineTotal] * -1, T2.[GrossBuyPr], T3.[U_Factor], T4.[SlpName], (T5.[firstName] +' '+ T5.[lastName]), T4.[U_SEGMENTO], T3.[U_Grup], T3.[U_Clasif], T3.[U_Marca], (T2.[Quantity] * T3.[U_Factor]) * -1 as Litros_Piezas, T2.[LineTotal] * -1 * (1-(T0.DiscPrcnt/100)) as 'Importe total', T6.[PymntGroup], T0.[DiscPrcnt], T0.[Comments], T1.[County], T1.[State1], T1.[ZipCode] FROM [dbo].[ORIN] T0 INNER JOIN [dbo].[OCRD] T1 ON T0.CardCode = T1.CardCode INNER JOIN [dbo].[RIN1] T2 ON T0.DocEntry = T2.DocEntry INNER JOIN [dbo].[OITM] T3 ON T2.ItemCode = T3.ItemCode INNER JOIN [dbo].[OSLP] T4 ON T0.SlpCode = T4.SlpCode INNER JOIN [dbo].[OHEM] T5 ON T0.OwnerCode = T5.empID INNER JOIN [dbo].[OCTG] T6 ON T0.GroupNum = T6.GroupNum where T0.[CreateDate] between [%0] and [%1]

De antemano agradezco mucho de su gran ayuda y apoyo..

Saludos.

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

6 Answers

Gonzalo Gomez Feb 09, 2017 at 12:02 PM
0

Entonces el slpcode lo tienes que coger la tabla OCRD cuando haces INNER JOIN OSLP T4 ON T0.SlpCode = T4.SlpCode

debería ser T1.SlpCode=T4.SlpCode

Share
10 |10000 characters needed characters left characters exceeded
avatar image
Former Member Feb 10, 2017 at 01:00 AM
0

Mil gracias por tu respuesta Gonzalo modifique el campo como lo indicas pero aún me sale el histórico.

Share
10 |10000 characters needed characters left characters exceeded
avatar image
Former Member Feb 10, 2017 at 01:03 AM
0

me aparece el nombre y apellido del cual se hizo la primer venta, esos campos son de la tabla de OHEM firstname y lastname, y este es el erro porque debería de jalar el nombre del siguiente campo de la imagen

estos nombres estan ligados desde datos maestros del empleado


Share
10 |10000 characters needed characters left characters exceeded
Gonzalo Gomez Feb 10, 2017 at 08:44 AM
0

A ver... yo el cambio que te propongo según entendí es que el comercial es el empleado del departamentos de ventas, así te saldría el comercial del cliente y no el comercial del documento.

Lo que tú ahora dices es el empleado del modulo de recursos humanos que lo vinculas o estás sacando del documento. Para lograr lo que pretendes tienes que tener alimentado el dato de técnico en la tabla OCRD el campo es DfTcnician y leer el nombre a través del técnico de la tabla OCRD y no del owner del documento. O sea la join tienes que hacerla desde OCRD a OHEM y el campo DfTcnician=empID

o sea:

INNER JOIN OHEM T5 ON T1.DfTcnician = T5.empID
Share
10 |10000 characters needed characters left characters exceeded
avatar image
Former Member Feb 10, 2017 at 04:15 PM
0

Hola Gonzalo en efecto tal cual como dices el reporte jalaba el comercial desde documento, con la modificación del join T1.SlpCode=T4.SlpCode ya lo jala desde OCRD Datos Maestros del cliente, así mismo también como dices mi reporte esta jalando desde la tabla de OHEM los Datos maestros del empleado el nombre y apellido (owner), y de donde quiero que jale los datos es de la tabla de OSLP tal cual como la imagen que anexe, con el join que me envías me aparece que no se encontró ningún dato: FROM OINV T0 INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode INNER JOIN INV1 T2 ON T0.DocEntry = T2.DocEntry INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode INNER JOIN OSLP T4 ON T1.SlpCode = T4.SlpCode INNER JOIN OHEM T5 ON T1.DfTcnician = T5.empID

mil gracias por tu apoyo.

Saludos


error-5.jpg (120.9 kB)
Share
10 |10000 characters needed characters left characters exceeded
Gonzalo Gomez Feb 13, 2017 at 12:14 PM
0

A ver...que me estás liando.

Por un lado tienes empleados del departamento de ventas que es la tabla OSLP y ya lo tienes resuelto.

La tabla OHEM es la de Recursos Humanos, para que te devuelva algo en la tabla OCRD o en el IC en sus datos tienes que tener cubierto el campo técnico.

Si ese valor de empleado lo tienes en la tabla OSLP, no tienes que hacer join con OHEM, simplemente tienes que seleccionar el campo Memo que es el que se visualiza que estás usando de la tabla OSLP o sea de la T4 que ya tienes y no de OHEM

Share
10 |10000 characters needed characters left characters exceeded