Orden de Venta y factura

sql
Etiquetas: #<Tag:0x00007f6521d8f828>

#1

Hola chicos, aquí de nuevo dando lata :confused:

Tegngo esta consulta a la que solo tengo que agregarle la Orden de venta, ya intenté con ORDR Doc.Num y fallé miserablemente ¿cómo puedo distinguir qué comando usar? No sé programación y me resulta muy confuso :persevere:
¡Gracias!

-- FACTURAS--
Select  '1', NULL AS 'FECHA Contabilización','FACTURAS' AS 'Código Cliente' , null as 'Nombre Cliente', NULL as 'N° Docto', 
NULL as 'Base', NULL as 'IVA', NULL as 'Total' --FROM OINV

UNION ALL

Select distinct '2', T0.DocDate as 'Fecha', T0.CardCode as 'Código Cliente', 
Case When T0.CANCELED='N'
	Then T0.CardName
	Else 'CANCELADO'
	End as 'Nombre Cliente', 
T0.DocNum as 'N° Doc', 
Case When T0.CANCELED='N' 
	then (T0.DocTotal-T0.VatSum-T0.DiscSum)
	Else NULL
	End as 'Base',
Case When T0.CANCELED='N'
	Then T0.VatSum 
	Else NULL
	End as 'IVA',
Case When T0.CANCELED='N'	
	Then T0.DocTotal
	Else NULL
	End as 'Total Facturado' 
 from OINV T0
  Where T0.DocSubType <>'DN'
 And T0.CANCELED <>'C'
 And T0.DocDate Between '[%0]' and '[%1]'

 UNION ALL
 --SUMA FACTURAS--
 SELECT '3', NULL, NULL,  'TOTAL FACTURAS', NULL, 
 SUM((T0.DocTotal-T0.VatSum-T0.DiscSum)) as 'Base',
 SUM(T0.VatSum) as 'IVA',	
SUM(T0.DocTotal) as 'Total Facturado' 
FROM OINV T0
Where T0.DocSubType <>'DN'
 And T0.CANCELED ='N'
 And T0.DocDate Between '[%0]' and '[%1]'



 Union ALL
 
 Select  '4', NULL AS 'FECHA Contabilización','NOTAS CRÉDITO' AS 'Código Cliente' , null as 'Nombre Cliente', NULL as 'N° Docto', 
NULL as 'Base', NULL as 'IVA', NULL as 'Total' --FROM OINV

UNION ALL
 
 --Notas de Crédito--
Select distinct '5', T0.DocDate as 'Fecha', T0.CardCode as 'Código Cliente', 
Case When T0.CANCELED='N'
	Then T0.CardName
	Else 'CANCELADO'
	End as 'Nombre Cliente', 
T0.DocNum as 'N° Doc', 
Case When T0.CANCELED='N' 
	then (T0.DocTotal-T0.VatSum-T0.DiscSum)
	Else NULL
	End as 'Base',
Case When T0.CANCELED='N'
	Then T0.VatSum 
	Else NULL
	End as 'IVA',
Case When T0.CANCELED='N'	
	Then T0.DocTotal
	Else NULL
	End as 'Total Facturado' 
 from ORIN T0
  Where  T0.CANCELED <>'C'
 And T0.DocDate Between '[%0]' and '[%1]'

 UNION ALL

 --SUMA Notas Crédto--
 SELECT '6', NULL, NULL,  'TOTAL NOTAS DE CRÉDITO', NULL,
 SUM((T0.DocTotal-T0.VatSum-T0.DiscSum)) as 'Base',
 SUM(T0.VatSum) as 'IVA',	
SUM(T0.DocTotal) as 'Total Facturado' 
FROM ORIN T0
Where T0.DocSubType <>'DN'
 And T0.CANCELED ='N'
 And T0.DocDate Between '[%0]' and '[%1]'

UNION ALL

Select  '7', NULL AS 'FECHA Contabilización','NOTAS DE DEBITO' AS 'Código Cliente' , null as 'Nombre Cliente', NULL as 'N° Docto', 
NULL as 'Base', NULL as 'IVA', NULL as 'Total' --FROM OINV

UNION ALL

-- NOTAS DEBITO--
Select distinct '8', T0.DocDate as 'Fecha', T0.CardCode as 'Código Cliente', 
Case When T0.CANCELED='N'
	Then T0.CardName
	Else 'CANCELADO'
	End as 'Nombre Cliente', 
T0.DocNum as 'N° Doc', 
Case When T0.CANCELED='N' 
	then (T0.DocTotal-T0.VatSum-T0.DiscSum)
	Else NULL
	End as 'Base',
Case When T0.CANCELED='N'
	Then T0.VatSum 
	Else NULL
	End as 'IVA',
Case When T0.CANCELED='N'	
	Then T0.DocTotal
	Else NULL
	End as 'Total Facturado' 
 from OINV T0
  Where T0.DocSubType ='DN'
 And T0.CANCELED <>'C'
 And T0.DocDate Between '[%0]' and '[%1]'

 UNION ALL
 --SUMA FACTURAS--
 SELECT '9', NULL, NULL, 'TOTAL NOTAS DE DÉBITO', NULL, 
 SUM((T0.DocTotal-T0.VatSum-T0.DiscSum)) as 'Base',
 SUM(T0.VatSum) as 'IVA',	
SUM(T0.DocTotal) as 'Total Facturado' 
FROM OINV T0
Where T0.DocSubType ='DN'
 And T0.CANCELED ='N'
 And T0.DocDate Between '[%0]' and '[%1]'


 Order By 1,5

#2

Vaya consulta ehh, el proceso normal es desde la Orden se genera la Entrega, y desde la entrega se genera la Factura, y tambien hay el caso que desde la Orden se pueden generar la Factura, por tanto para sacar las Ordenes primero verifica para cual de los procesos soportaría la consulta, o talvez para ambos. Adicional mente la relación de la Factura con el documento previo es a nivel lineas, no de cabecera, por lo que tendrias que hacer los join con la INV1 y RDR1.
Si sus procesos no incluyen facturación de mas de una Orden, talvez te conviene mejor mostrar el campo de comentario de la OINV, que ahi indica desde donde vino, incluso podrias, con funciones de cadena sacar el numero de pedido especificamente.
image

Saludos,


#3

Muchas gracias @Willy_Caldero nuestro proceso es Orden de venta-Entrega-Factura. ¿Pero cómo pido a la tabla mostrar el comentario? :neutral_face:
muchas gracias


#4

Hola amiga! Buenas tardes.

Yo tengo un proceso similar al tuyo y a la hora de hacer esas consultas primero debo de ligar a la tabla del detalle. Te comparto un ejemplo de la tabla pedidos a la tabla entregas:

SELECT
	T1."DocNum" AS "No Pedido",
	T1."CardCode" AS "Cliente",
	T1."CardName" AS "Nombre",
	T1."DocDate" AS "Emision Pedido",
	T1."DocTotalFC" AS "Total",
	T1."DocCur" AS "Moneda",
	T3."DocNum" AS "Entrega",
	T3."DocDate" AS "Emision Entrega"

FROM ORDR T1

LEFT JOIN DLN1 T2 ON T1."DocEntry" = T2."BaseEntry"
INNER JOIN ODLN T3 ON T2."DocEntry" = T3."DocEntry"

GROUP BY
	T1."DocNum",
	T1."CardCode",
	T1."CardName",
	T1."DocDate",
	T1."DocTotalFC",
	T1."DocCur",
	T3."DocNum",
	T3."DocDate"

Ahora debes ligar el modulo de las entregas con el detalle de la factura. Me parece que la tabla es INV1. La cabecera de las facturas es OINV.


#5

Ya me encontre uno:
Orden de venta > Entrega > Factura.

SELECT DISTINCT	
	T0."CardCode" AS "No.Cliente",
	T0."CardName" AS "Cliente",	
	T0."DocNum" AS "Folio Pedido",
	T0."DocTotalFC" AS "Monto_Pedido",
	T0."DocDate" AS "Fecha_Pedido",
	T2."DocNum" AS "Folio Entrega",
	T2."DocTotalFC" AS "Monto_Entrega",
	T2."DocDate" AS "Fecha_Entrega",
	T4."DocNum" AS "Folio Factura",
	T4."DocTotalFC" AS "Monto_Factura",
	T4."DocDate" AS "Fecha_Factura"
		
FROM ORDR T0

LEFT JOIN 
	DLN1 T1 ON T0."DocEntry" = T1."BaseEntry"
	
LEFT JOIN
	ODLN T2 ON T1."DocEntry" = T2."DocEntry"

LEFT JOIN 
	INV1 T3 ON T2."DocEntry" = T3."BaseEntry"
	
LEFT JOIN
	OINV T4 ON T3."DocEntry" = T4."DocEntry"		

WHERE 
	T0."CANCELED" NOT IN ('Y')
	
GROUP BY 
	T0."DocNum",
	T0."CardCode",
	T0."CardName",	
	T2."DocNum",
	T2."TrackNo",
	T2."Address",
	T1."LineStatus",
	T0."DocStatus",
	T0."InvntSttus",
	T2."DocStatus",
	T2."CANCELED",
	T2."InvntSttus",
	T0."DocDate",
	T2."DocDate",
	T2."Address2",
	T2."ShipToCode",
	T4."DocNum",
	T4."DocDate",
	T0."DocTotalFC",
	T2."DocTotalFC",
	T4."DocTotalFC"
	
Order by T0."DocDate"	

#6

Aumentas simplemente “T0.Comments” a tu cada una de tus consultas:que hace referencia a OINV, las que no lo hacen le pones null.
Ejemplo:

-- NOTAS DEBITO--
Select T0.Coments, distinct '8', T0.DocDate as 'Fecha', T0.CardCode as 'Código Cliente', 
Case When T0.CANCELED='N'
..........

Saludos,


#7

Muchas gracias @Willy_Caldero @Diego_Alberto intentaré sus opciones para ver qué logro. Les agradezco infinitamente su apoyo.
Buen día :slight_smile:


#8

@AuFlores podría ayudarte con todo gusto, pero necesitaría entender un poco lo que pretendes, tengo algunos informes en mi compañía donde requiero ver las facturas, NC, ND de los cllientes, pero no sé exactamente lo que necesitas o el objetivo de tu Query.


#9

Muchas gracias @juanfranc520, justo veo que el reporte que tengo en query no es funcional para reportar lo que necesitamos, así que dejaré este tema hasta aquí.
Les agradezco a todos sus comentarios :smiley:
¡Buen día a todos!


#10

Buen día @SidV ¿me puedes ayudar a cerrar comentarios? Si bien me apoyó el foro a resolver la duda, validando la información del reporte no me es funcional por lo que no voy a complementarlo.
Muchas gracias.


#11

Cerrado a solicitud de la autora., si tienes una duda sobre este tema abre un debate nuevo, cita la url de este tema y listo :slight_smile: