cancel
Showing results for 
Search instead for 
Did you mean: 

Query SAP Business One Orden de venta, entrega, factura

Former Member
0 Kudos

Hola que tal,

De antemano muchas gracias por su apoyo, me gustaría mucho me pudieran ayudar con una consulta para mostrar las ordenes de venta que pertenezcan a una entrada y esta a su vez a las facturas?

Select

D1.U_FOLIO as 'Folio',

T3.Docnum as 'Entrega',

T0.DocNum as 'Factura',

T0.Doctotal as 'ImporteFactura',

end as Total,

t0.DocDate as 'FechaCont',

D1.U_FECHFORM as 'FechaFor',

t0.CardName as 'Banco'

from ODLN T3

left JOIN DLN1 D1 ON T3.DocEntry = D1.DocEntry

left JOIN ORDR T2 ON T2.DocEntry = D1.BaseEntry

left join rdr1 t1 on t2.docentry = t1.docentry

right join OINV T0 ON T3.NumAtCard = t0.NumAtCard  or T3.Doctotal=T0.Doctotal

Me funciona perfecto para cuando una factura no esta cancelada por nota de crédito, que si esta cancelada con nota de crédito me vuelve a mostrar la entrega tanto la cancelada como la que esta abierta.

Gracias, que pasen buena tarde!

Accepted Solutions (1)

Accepted Solutions (1)

former_member413321
Contributor
0 Kudos

Hola,

     Si te entiendo bien, la parte de uniones de tu query sería de la siguiente manera.

from ODLN T3

INNER JOIN DLN1 D1 ON T3.DocEntry = D1.DocEntry

INNER JOIN ORDR T2 ON T2.ObjType  = D1.BaseType and T2.DocEntry = D1.BaseEntry

INNER JOIN RDR1 t1 on T2.DocEntry = T1.DocEntry

INNER JOIN INV1 T4 ON D1.ObjType  = T4.BaseType and D1.DocEntry = T4.BaseEntry 

INNER JOIN OINV T0 ON T0.DocEntry = T4.DocEntry

Espero te funcione.

Former Member
0 Kudos

hOLA QUE TAL, MUCHAS GRACIAS POR TU APOYO

SELECT distinct T0.DOCNUM AS 'Factura',

I1.BaseEntry as 'Entrega',

r1.u_folio as 'folio',

isnull(R1.price,t0.GrosProfit) as 'Importe'

from Inv1 as I1

RIGHT join OINV AS T0 ON I1.DOCENTRY=T0.DOCENTRY

LEFT JOIN ODLN AS OD ON I1.BASEENTRY=OD.DOCENTRY

LEFT JOIN DLN1 AS D1 ON OD.DOCENTRY=D1.DOCENTRY

left  JOIN RDR1 R1  ON  i1.baseEntry = r1.trgetEntry

WHERE T0.DOCSTATUS='O'

Tengo esta consulta, es la mas cercana a lo que necesito, solo que estoy teniendo problemas en las ordenes de venta, no me las muestra todas, solo algunas.

former_member413321
Contributor
0 Kudos

Hola,

      es porque en el left join de RDR1 tiene i1.Baseentry = R1.trgetEntry.

  Deberia ser D1.BaseEntry = r1.DocEntry

Former Member
0 Kudos

Gracias por tu apoyo, un saludo

Si hago eso no me muestra las facturas que no tienen entrega.

El rollo es que tengo ordenes de venta---->Entregas----->Facturas

Tengo algunas facturas que no tienen entregas,

Facturas con entregas, pero algunos pedidos no me muestran el folio (Esto en la pantalla de facturas), mas si abro la entrega algunas ordenes de venta si están y otras no tienen folio.

Entonces el problema de la consulta esque si hago el cambio que me comentaste no me salen las facturas que tienen entregas

former_member413321
Contributor
0 Kudos

Hola, para estar claros con la pregunta. Si el objetivo es que me muestre las facturas que tienen por obligacion que estar en una orden, luego en una entrada y por ultimo la factura debes utilizar el siguiente query con INNER JOIN

from ODLN T3

INNER JOIN DLN1 D1 ON T3.DocEntry = D1.DocEntry

INNER JOIN ORDR T2 ON T2.ObjType  = D1.BaseType and T2.DocEntry = D1.BaseEntry

INNER JOIN RDR1 t1 on T2.DocEntry = T1.DocEntry

INNER JOIN INV1 T4 ON D1.ObjType  = T4.BaseType and D1.DocEntry = T4.BaseEntry 

INNER JOIN OINV T0 ON T0.DocEntry = T4.DocEntry and T0.DOCSTATUS='O'

Si lo que necesitas es que sea opcional, dime cuales condiciones debe considerar para entenderlo bien.

Yo hice la prueba en mi ambiente de esta manera y tiene el resultado que te comento.

Former Member
0 Kudos

Deben ser facturas abiertas.

Muchas gracias,

former_member413321
Contributor
0 Kudos

Si ahi se agrego la linea de DocStatus = 'O' que seria la que indica que la factura esta abierta.

Te funciona con este query o aun presenta diferencias?

Former Member
0 Kudos

las presenta aun

former_member413321
Contributor
0 Kudos

Podrias colocar un T0.* en la consulta al final para ver el resultado de los campos de la tabla.

Y si puedes indicar cual no deberia aparecer.

Si puede solo sube la imagen del resultado.

Former Member
0 Kudos

en resumen necesito realizar la consulta de lista de partidas abiertas pero por folio.

Gracias por tu apoyo

former_member413321
Contributor
0 Kudos

Hola,

    te entiendo el objetivo, lo que no entiendo es porque aun te aparecen las activas, si con la instruccion de docstatus = 'O', descarta todas las facturas que estan canceladas, si y solo si, utilizas INNER JOIN, si utilizas left puede ser que no las descarte por las otras relaciones.

Former Member
0 Kudos

Muchas gracias por tu apoyo, en verdad gracias!!

La consulta es correcta de la forma en la que la estoy haciendo.

Answers (0)