cancel
Showing results for 
Search instead for 
Did you mean: 

Query Orden de Ventas - Entrega - Factura

Former Member
0 Kudos

Saludos a todos.

Tengo el siguiente query

SELECT distinct

       T0.[DocNum] 'Orden Ventas',

       T0.[DocDate] 'Fecha OV',

       T3.[SlpName] 'Vendedor',

       T0.[U_FCOrden] 'Fecha Fin',

       t4.[LastName]+' '+t4.[FirstName] 'DP',

       T0.[Project]   'UN',

       T0.[U_OrdTecni] 'Instalador',

       T0.[DocTotal]   'Total',

       T0.[DiscPrcnt]  'Desc OV',

       t2.[DocNum]     'Factura',

       t2.[DiscPrcnt]  'Desc Fac'     

  FROM ORDR T0  

        INNER JOIN INV1 T1 ON T1.[BaseEntry] = T0.[DocEntry] AND T1.BaseType='17'  

        INNER JOIN OINV T2 ON T2.[DocEntry]  = T1.[DocEntry]

        left outer join oslp t3 on t3.[slpcode]   = t0.[slpcode]

        left outer join ohem t4 on t4.[empId]     = t0.[OwnerCode]          

Where T0.[DocDate] between [%0] and [%1]

La idea es que me de las Ordenes de Venta y las Facturas, pero tengo problemas cuando existe una Entraga de pormedio.

Y no se como agregar las tabla de entrega ODLN y me muestre tanto las que tiene entregas como las que no.

Si alguien me puede ayudar.

Saludos y gracias de antemano.

Que todo sea para bien..

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Buen día Christian.

Para ligar las tablas de ordenes de ventas y entregas debes vincular de la siguiente manera.

El campo TrgetEntry de la tabla RDR1 es el que indica la existencia de una entrega en una orden de venta por lo tanto puedes hacer algo así:

SELECT ...

...

...

...

...

FROM ORDR t0

LEFT JOIN RDR1 t1 ON t0.docentry = t1.docentry

LEFT JOIN ODLN t2 ON t1.TrgetEntry = t2.docentry and t1.TrgetEntry > 0

...

De esta manera solo traerías las Ordenes de Venta que tienen Entregas y en el mismo query agregarías el vínculo a la tabla OINV que ya sabes como hacer.

Saludos y mucha suerte.

Former Member
0 Kudos

Hola Diego, gracias por la ayuda.

Te comento, con el siguiente query, creo, que logre lo que ocupaba, pero no se la diferencia entre la forma como lo hice y la que me indicas.

Para aprender y si es posible me gustaria me lo aclares.

SELECT distinct

       T0.[DocNum]     'Orden de Venta',

       T0.[DocDate]    'Fecha OV',

       T7.[SlpName]    'Vendedor',

       T8.[lastName]+' '+T8.[firstName]  'DP',

       T0.[U_FCOrden]  'Instalador',

       T0.[Project]    'UN',

       T0.[U_OrdTecni] 'Fecha Fin',

       T0.[DocTotal]   'Monto',

       T0.[DiscPrcnt]  'Desc OV',

       T4.[DocNum]     'Factura',

       T4.[DiscPrcnt]  'Desc Fac'      

  FROM ORDR T0 

         INNER JOIN DLN1 T1 ON T1.[BaseEntry] = T0.[DocEntry] and t0.[ObjType] = t1.[BaseType]

         INNER JOIN ODLN T2 ON T2.[DocEntry]  = T1.[DocEntry]

         INNER JOIN INV1 T3 ON T3.[BaseEntry] = T2.[DocEntry] and t2.[ObjType] = t3.[BaseType]

         INNER JOIN OINV T4 ON T4.[DocEntry]  = T3.[DocEntry]

         INNER JOIN OSLP T7 ON T0.[SlpCode]   = T7.[SlpCode]

         INNER JOIN OHEM T8 ON T0.[OwnerCode] = T8.[EmpID]

WHERE T0.[DocDate] between [%0] and [%1]

Gracias de antemano.

Saludos.