Informe de Consolidado Ventas y Costo de ventas

Buenas tardes amigos…

Vengo con una duda que me tiene 2 semanas partiendo la cabeza… y no se si me están dando mal la información mi jefe y los financieros o es algo que yo no veo.

Me pidieron realizar un reporte de ventas consolidado, por cliente, a nivel de artículos (para saber cuantos se le vendió de cada uno), y que fuera por rango de fecha.

Ok. Según mi própio análisis, este reporte debería de tener:

(Facturas de artículos
+
Facturas de Servicios)

(-)

(Notas de crédito de Artículos
+
Notas de crédito de Servicios (incluye descuentos pronto pago, etc)

A eso le resto que si las facturas canceladas y demás. y ya… sin problemas.

La cosa es la siguiente.
Ya tengo el reporte, y el query. (con algunas adaptaciones por ejemplo para que tome en consideración facturas canceladas en mes distinto y demás).

Bien. Cuando saco el reporte, por ejemplo del 01/01/2019 al 31/12/2019 el monto total del consolidado me coincide a la perfección con el reporte de “Análisis de Ventas de SAP”. (diferencia de unos 10 pesos, pero al revisarlo es por tema de Redondeo entre SAP - SQL y Crystal, nada de que preocuparse).

Sin embargo me están pidiendo que uno de los campos que tenga el informe, se refiere al de Costos de ventas - Materia prima.
Cuando saco el reporte primero tenía una diferencia de 2Millones de pesos.
Me dí cuenta que se tenía ventas de productos que no generan un costo de ventas (por ejemplo, venta de Chatarra), y que las facturas y NC de Servicios, no me generaban un costo de inventario. Con unas modificaciones en el reporte, para que las facturas de servicios, y las NC de servicios sumaran o restaran los montos de Valor de Stock, en el 2019 tengo aún una diferencia de 600K pesos (otros años es mucho más grande la diferencia).

Le envié a mi jefe el estudio que hice con estas conclusiones de porqué no coincide:

  1. Ventas que no conllevan un costo de ventas (Ejemplo Venta de Chatarra, nunca afecta la cuenta Costo de Ventas)

  2. Facturas Proveedores que afectan el costo de ventas

  3. Notas de Crédito de Proveedores que Afectan el Costo de Ventas

  4. Entregas de Mercancía a un Precio inferior afectando costo de ventas Vs Factura a un precio superior
    (Ejemplo Entrega 1 monto 25122.83USD Pertenece a Factura 1 por un monto de 26193.82USD Lo que da una diferencia de 1070.99USD, al tipo de cambio del día 19.6565 es 21051.9149MXN más en Factura que en entrega por lo que se infla la venta y el Costo de Venta es menor)

  5. Notas de entregas mes distinto a mes de factura (ejemplo, entrega en 29/12/2019 facturado 02/01/2020)

Aún así aquí viene mi problema. Mi jefe quiere y necesita que SI O SI coincida el monto del costo de ventas, con la cuenta contable correspondiente porque así lo está pidiendo los auditores ahorita en la empresa.

**¿Qué estoy haciendo mal?, ¿En verdad debe coincidir la cuenta de costo de venta?, Yo estoy tomando en consideración el monto de StockValue (en INV1 y en ORIN1) para poder conocer el costo de venta materia prima.

P.D.: Puedo compartir el reporte en Crystal sin problema porque es general y no tiene campos de usuario ni nada así**

Saludos cordiales hermano, por ahí había una pregunta parecida a la tuya, y yo le recomendé la tablas oinm, que es el mayor de ventas e inventario, la unes con ocrd,(clientes) filtrando el transtype que sea igual a 13 ventas y transtype =14 notas de crédito, Ahi vas a ver las cantidades, monto, y costo por cada artículo, cliente, vendedor, o como quieras, relacionas los campos de la oinm a la ocrd, dependiendo de lo que te piden. Oitm, productos. Itemcode - >temcode->oinm. Una vez que tengas el detalle dek reporte lo resumes o totalizas cliente por producto y du fecha desde hasta. Todo esto desde la oinm, en este momento estoy en Casa, si no te enviara dicho reporte desde crystal report, yo ya lo hice y debe cuadrar exactamente con el balance provisional o ganancias y pérdidas tanto las ventas como el costo, si puedes envia el sql que emite el Crystal report. Deja ver si te puedo enviar el reporte crystal lo pegas a tu computadora y lo refrescas deberia funcionar, saludos

Dejame rehacer el query por ahí para ver…

Mientras…

¿Eso también toma en consideración las Facturas y Notas de Crédito de servicios? (la OINM me refiero) porque solo veo artículos.
El que tengo ahorita ya cuadra completo el analisis de ventas y el reporte. pero no me cuadra la balanza en costos Vs Reporte (que la intento de ligar con el campo .StockValue)

El sql de Crystal está hecho por mi jefe… y yo solo he cambiado lo que le veo malo (no estaba restando las NC sino sumandolas y así), igual dejame ver si se pega aquí

--Facturas artìculos
SELECT OINV.DocNum, 
		INV1.ItemCode, 
		INV1.Quantity, 
		OINV.DocType, 
		OINV.DocDate, 
		OINV.CardCode, 
		case when OINV.DiscPrcnt <> 0 then 
				  inv1.INMPrice 
			 when OINV.DiscPrcnt = 0 then 
				  INV1.Price else 
				  INV1.Price end as Price, 
		case when inv1.currency ='MXN' then 
		          0 
			 when INV1.currency <>'MXN' then case when OINV.DiscPrcnt <> 0 then 
			                                          inv1.INMPrice 
											     when OINV.DiscPrcnt = 0 then 
													  INV1.Price end end as PriceUSD,		 
		case when inv1.currency <>'MXN' then case when OINV.DiscPrcnt <> 0 then 
													  inv1.INMPrice 
												 when OINV.DiscPrcnt = 0 then 
													  INV1.Price else INV1.Price end* case when INV1.Rate=0 then 
																								(select rate 
																								 from ORTT 
																								 where RateDate=OINV.DocDate and 
																									   currency=inv1.Currency) else inv1.rate end 
			when INV1.currency ='MXN' then case when OINV.DiscPrcnt <> 0 then 
													 inv1.INMPrice 
												when OINV.DiscPrcnt = 0 then 
												     INV1.Price else INV1.Price end end as PriceMXN,		 
		case when inv1.Currency <>'MXN' then case when OINV.DiscPrcnt <> 0 then inv1.INMPrice when OINV.DiscPrcnt = 0 then INV1.Price else INV1.Price end *INV1.Quantity else 0 end as VentaUsd,
		case when inv1.Currency <>'MXN' then (case when OINV.DiscPrcnt <> 0 then inv1.INMPrice when OINV.DiscPrcnt = 0 then INV1.Price else INV1.Price end *case when INV1.Rate=0 then (select rate from ORTT where RateDate=OINV.DocDate and currency=INV1.Currency) else inv1.rate end)*INV1.Quantity when inv1.Currency ='MXN' then case when OINV.DiscPrcnt <> 0 then inv1.INMPrice when OINV.DiscPrcnt = 0 then INV1.Price else INV1.Price end *INV1.Quantity end as VentaMXN,
		INV1.Currency, 
		INV1.Dscription, 
		OITM.LastPurPrc,
		case when OITM.Lastpurprc=0 or inv1.price=0 then 0 else  OITM.LastPurPrc/ case when INV1.Currency<>'MXN' then INV1.Price*INV1.Rate else INV1.Price end end as AVG_Amt,
		INV1.GrossBuyPr*INV1.Quantity as c_prom_vta,
		OITM.LastPurCur, 
		case when inv1.Currency <>'MXN' then inv1.rate else 0 end as rateusd,
		case when INV1.Rate=0 then (select rate from ORTT where RateDate=OINV.DocDate and currency=INV1.Currency) else inv1.rate  end as rate,
		case when inv1.Currency <>'MXN' then 1 end as Numrate,
		OINV.CardName, 
		OINV.DiscPrcnt, 
		INV1.GrossBuyPr, 
		OCRG.GroupName, 
		OITM.ItemName, 
		OINV.U_cancela,
		inv1.acctcode,
		--(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,'01/01/2019') and Currency='USD' ) promrate,
		(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,{?Desde}) and Currency='USD' ) promrate,
--/*
		Case When INV1.StockValue = 0 then --Productos que no generan costo, ejemplo chatarra
		case when inv1.Currency <>'MXN' then (case when OINV.DiscPrcnt <> 0 then inv1.INMPrice when OINV.DiscPrcnt = 0 then INV1.Price else INV1.Price end *case when INV1.Rate=0 then (select rate from ORTT where RateDate=OINV.DocDate and currency=INV1.Currency) else inv1.rate end)*INV1.Quantity when inv1.Currency ='MXN' then case when OINV.DiscPrcnt <> 0 then inv1.INMPrice when OINV.DiscPrcnt = 0 then INV1.Price else INV1.Price end *INV1.Quantity end
		else
		INV1.StockValue end as StockValue
		
		
		, case when inv1.itemcode = 'CHA01' then
		0
		else
		Case When INV1.StockValue = 0 then
		 --Productos que no generan costo, ejemplo chatarra
		case when inv1.Currency <>'MXN' then (case when OINV.DiscPrcnt <> 0 then inv1.INMPrice when OINV.DiscPrcnt = 0 then INV1.Price else INV1.Price end *case when INV1.Rate=0 then (select rate from ORTT where RateDate=OINV.DocDate and currency=INV1.Currency) else inv1.rate end)*INV1.Quantity when inv1.Currency ='MXN' then case when OINV.DiscPrcnt <> 0 then inv1.INMPrice when OINV.DiscPrcnt = 0 then INV1.Price else INV1.Price end *INV1.Quantity end
		else
		INV1.StockValue end end  as CostoBruto
		
--*/
--		INV1.StockValue 
FROM   ((((OINV OINV INNER JOIN 
		   INV1 INV1 ON OINV.DocEntry=INV1.DocEntry) INNER JOIN 
		   OCRD OCRD ON OINV.CardCode=OCRD.CardCode) INNER JOIN 
		   OITM OITM ON INV1.ItemCode=OITM.ItemCode) INNER JOIN 
		   OCRG OCRG ON OCRD.GroupCode=OCRG.GroupCode)
 WHERE  --   OINV.DocDate>='01/09/2019' AND OINV.DocDate<='01/09/2019'  and oinv.CANCELED ='N' 
			
			OINV.DocDate>={?Desde} AND OINV.DocDate<={?Hasta}  and oinv.CANCELED ='N' 
			and oinv.DocType <> 'S'

Union all

 --Se suman las Fac de Servicio
 SELECT oinv.DocNum, 
		inv1.Dscription as Itemcode, 
		0 as  Quantity, 
		oinv.DocType, 
		oinv.DocDate, 
		oinv.CardCode, 
		case when inv1.currency <>'MXN' then inv1.Price * inv1.Rate when inv1.currency ='MXN' then inv1.Price end as Price, 
		case when inv1.currency ='MXN' then 0 when inv1.currency <>'MXN' then case when oinv.DiscPrcnt <> 0 then inv1.INMPrice when oinv.DiscPrcnt = 0 then inv1.Price else inv1.Price end end  as PriceUSD,		 
		case when inv1.currency <>'MXN' then  case when oinv.DiscPrcnt <> 0 then inv1.Price when oinv.DiscPrcnt = 0 then inv1.Price else inv1.Price end*case when inv1.Rate=0 then (select rate from ORTT where RateDate=oinv.DocDate and currency=INV1.Currency) else inv1.rate end when inv1.currency ='MXN' then case when oinv.DiscPrcnt <> 0 then inv1.Price when oinv.DiscPrcnt = 0 then inv1.Price else inv1.Price end end as PriceMXN,		 
		case when inv1.Currency <>'MXN' then inv1.TotalFrgn else 0 end as VentaUsd,
		case when inv1.Currency ='MXN' then case when oinv.DiscPrcnt <> 0 then (inv1.linetotal-(inv1.linetotal*(oinv.DiscPrcnt/100))) else inv1.LineTotal end 
			 when inv1.currency <>'MXN' then case when oinv.DiscPrcnt <> 0 then (inv1.linetotal-(inv1.linetotal*(oinv.DiscPrcnt/100))) else inv1.LineTotal end end as VentaMXN,
		inv1.Currency, 
		inv1.Dscription, 
		0 as LastPurPrc,
		0 AVG_Amt,
		0 as c_prom_vta,
		'N/A' as LastPurCur, 
		case when inv1.Currency <>'MXN' then inv1.rate else 0 end as rateusd,
		case when INV1.Rate=0 then (select rate from ORTT where RateDate=OINV.DocDate and currency=INV1.Currency) else inv1.rate  end as rate,
		case when inv1.Currency <>'MXN' then 1 end as Numrate,
		oinv.CardName, 
		oinv.DiscPrcnt, 
		inv1.GrossBuyPr, 
		OCRG.GroupName, 
		inv1.Dscription as ItemName, 
		oinv.U_cancela,
		inv1.acctcode,
		--(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,'01/01/2019') and Currency='USD' ) promrate,
		(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,{?Desde}) and Currency='USD' ) promrate,
		case when inv1.Currency ='MXN' then case when oinv.DiscPrcnt <> 0 then (inv1.linetotal-(inv1.linetotal*(oinv.DiscPrcnt/100))) else inv1.LineTotal end 
			 when inv1.currency <>'MXN' then case when oinv.DiscPrcnt <> 0 then (inv1.linetotal-(inv1.linetotal*(oinv.DiscPrcnt/100))) else inv1.LineTotal end end as StockValue
--		0 as StockValue
	 ,case when inv1.itemcode = 'CHA01' then
		0
		else
		case when inv1.Currency ='MXN' then case when oinv.DiscPrcnt <> 0 then (inv1.linetotal-(inv1.linetotal*(oinv.DiscPrcnt/100))) else inv1.LineTotal end 
			 when inv1.currency <>'MXN' then case when oinv.DiscPrcnt <> 0 then (inv1.linetotal-(inv1.linetotal*(oinv.DiscPrcnt/100))) else inv1.LineTotal end end end as CostoBruto
 FROM      USK.dbo.oinv oinv INNER JOIN 
           USK.dbo.inv1 inv1 ON oinv.DocEntry=inv1.DocEntry INNER JOIN 
		   USK.dbo.OCRD OCRD ON oinv.CardCode=OCRD.CardCode INNER JOIN 
		   USK.dbo.OCRG OCRG ON OCRD.GroupCode=OCRG.GroupCode
 WHERE  --  OINV.DocDate>='01/09/2019' AND OINV.DocDate<= '01/09/2019'  and oinv.CANCELED ='N' 
		OINV.DocDate>={?Desde} AND OINV.DocDate<={?Hasta}  and oinv.CANCELED ='N' 
 and inv1.AcctCode in ('505','205','401','402','403','404','410','411','750','740005A','720002') and oinv.doctype ='S'
union all


--Se restan las NC artìculos
SELECT ORIN.DocNum, 
		RIN1.ItemCode, 
		RIN1.Quantity *-1 as Quantity, 
		ORIN.DocType, 
		ORIN.DocDate, 
		ORIN.CardCode, 
		case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end*-1 as Price, 
		case when RIN1.currency ='MXN' then 0 when RIN1.currency <>'MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end end *-1 as PriceUSD,		 
		case when RIN1.currency <>'MXN' then  case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end*case when RIN1.Rate=0 then (select rate from ORTT where RateDate=ORIN.DocDate and currency=RIN1.Currency) else RIN1.rate end when RIN1.currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end end * -1 as PriceMXN,		 
		case when RIN1.Currency <>'MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end *RIN1.Quantity else 0 end*-1 as VentaUsd,
		case when RIN1.Currency <> 'MXN' then (case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end *case when RIN1.Rate=0 then (select rate from ORTT where RateDate=ORIN.DocDate and currency=RIN1.Currency) else RIN1.rate end)*RIN1.Quantity when RIN1.Currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end *RIN1.Quantity end*-1 as VentaMXN,
		RIN1.Currency, 
		RIN1.Dscription, 
		OITM.LastPurPrc*-1 as LastPurPrc,
		case when OITM.Lastpurprc=0 or rin1.price=0 then 0 else  OITM.LastPurPrc/ case when RIN1.Currency <>'MXN' then RIN1.Price*RIN1.Rate else RIN1.Price end end as AVG_Amt,
		(RIN1.GrossBuyPr*RIN1.Quantity)*-1 as c_prom_vta,
		OITM.LastPurCur, 
		case when rin1.Currency <>'MXN' then rin1.rate else 0 end as rateusd,
		case when RIN1.Rate=0 then (select rate from ORTT where RateDate=orin.DocDate and currency=RIN1.Currency) else RIN1.rate end as rate, 
		case when rin1.Currency <>'MXN' then 1 end as Numrate,
		ORIN.CardName, 
		ORIN.DiscPrcnt, 
		RIN1.GrossBuyPr, 
		OCRG.GroupName, 
		OITM.ItemName, 
		ORIN.U_cancela,
		rin1.acctcode,
		--(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,'01/01/2019') and Currency='USD' ) promrate,
		(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,{?Desde}) and Currency='USD' ) promrate,
		case when  rin1.StockValue = 0 then
		  case when RIN1.Currency <> 'MXN' then (case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end *case when RIN1.Rate=0 then (select rate from ORTT where RateDate=ORIN.DocDate and currency=RIN1.Currency) else RIN1.rate end)*RIN1.Quantity when RIN1.Currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end *RIN1.Quantity end *-1
		else
		  rin1.StockValue *-1 
		end
		as StockValue
		, 
		case when  rin1.StockValue = 0 then
		  case when RIN1.Currency <> 'MXN' then (case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end *case when RIN1.Rate=0 then (select rate from ORTT where RateDate=ORIN.DocDate and currency=RIN1.Currency) else RIN1.rate end)*RIN1.Quantity when RIN1.Currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end *RIN1.Quantity end *-1
		else
		  rin1.StockValue *-1 
		end  as CostoBruto
 FROM   ((((USK.dbo.ORIN ORIN INNER JOIN 
           USK.dbo.RIN1 RIN1 ON ORIN.DocEntry=RIN1.DocEntry) INNER JOIN 
		   USK.dbo.OCRD OCRD ON ORIN.CardCode=OCRD.CardCode) INNER JOIN 
		   USK.dbo.OITM OITM ON RIN1.ItemCode=OITM.ItemCode) INNER JOIN 
		   USK.dbo.OCRG OCRG ON OCRD.GroupCode=OCRG.GroupCode)
 WHERE --ORIN.DocDate>='01/09/2019' AND ORIN.DocDate<='01/09/2019' and ORIN.CANCELED ='N'   
		 ORIN.DocDate>={?Desde}AND ORIN.DocDate<={?Hasta} and ORIN.CANCELED ='N'  
		And ORIN.doctype <> 'S'

union all

-- se resta las NC de servicio
SELECT ORIN.DocNum, 
		RIN1.Dscription as Itemcode, 
		0 as  Quantity, 
		ORIN.DocType, 
		ORIN.DocDate, 
		ORIN.CardCode, 
		case when RIN1.currency <>'MXN' then RIN1.Price * RIN1.Rate when RIN1.currency ='MXN' then RIN1.Price end*-1 as Price, 
		case when RIN1.currency ='MXN' then 0 when RIN1.currency <>'MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.INMPrice when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end end *-1 as PriceUSD,		 
		case when RIN1.currency <>'MXN' then  case when ORIN.DiscPrcnt <> 0 then RIN1.Price when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end*case when RIN1.Rate=0 then (select rate from ORTT where RateDate=ORIN.DocDate and currency=rin1.Currency) else RIN1.rate end when RIN1.currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then RIN1.Price when ORIN.DiscPrcnt = 0 then RIN1.Price else RIN1.Price end end * -1 as PriceMXN,		 
		case when RIN1.Currency <>'MXN' then RIN1.TotalFrgn else 0 end*-1 as VentaUsd,
		case when RIN1.Currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then (rin1.linetotal-(rin1.linetotal*(orin.DiscPrcnt/100)))*-1 else RIN1.LineTotal*-1 end 
			 when RIN1.currency <>'MXN' then case when ORIN.DiscPrcnt <> 0 then (rin1.linetotal-(rin1.linetotal*(orin.DiscPrcnt/100)))*-1 else RIN1.LineTotal*-1 end end as VentaMXN,
		RIN1.Currency, 
		RIN1.Dscription, 
		0 as LastPurPrc,
		0 AVG_Amt,
		0 as c_prom_vta,
		'N/A' as LastPurCur, 
		case when rin1.Currency <>'MXN' then rin1.rate else 0 end as rateusd,
		case when RIN1.Rate=0 then (select rate from ORTT where RateDate=orin.DocDate and currency=rin1.Currency) else RIN1.rate end as rate, 
		case when rin1.Currency <>'MXN' then 1 end as Numrate,
		ORIN.CardName, 
		ORIN.DiscPrcnt, 
		RIN1.GrossBuyPr, 
		OCRG.GroupName, 
		RIN1.Dscription as ItemName, 
		ORIN.U_cancela,
		rin1.acctcode,
		--(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,'01/01/2019') and Currency='USD' ) promrate,
		(select avg(rate) [promrate] from ortt where datename(yy,RateDate)=datename(YEAR,{?Desde}) and Currency='USD' ) promrate,
		--0 as StockValue
		case when RIN1.Currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then (rin1.linetotal-(rin1.linetotal*(orin.DiscPrcnt/100))) else RIN1.LineTotal end 
			 when RIN1.currency <>'MXN' then case when ORIN.DiscPrcnt <> 0 then (rin1.linetotal-(rin1.linetotal*(orin.DiscPrcnt/100))) else RIN1.LineTotal end end *-1 as StockValue
			 , 
		case when RIN1.Currency ='MXN' then case when ORIN.DiscPrcnt <> 0 then (rin1.linetotal-(rin1.linetotal*(orin.DiscPrcnt/100))) else RIN1.LineTotal end 
			 when RIN1.currency <>'MXN' then case when ORIN.DiscPrcnt <> 0 then (rin1.linetotal-(rin1.linetotal*(orin.DiscPrcnt/100))) else RIN1.LineTotal end end *-1  as CostoBruto
 FROM      USK.dbo.ORIN ORIN INNER JOIN 
           USK.dbo.RIN1 RIN1 ON ORIN.DocEntry=RIN1.DocEntry INNER JOIN 
		   USK.dbo.OCRD OCRD ON ORIN.CardCode=OCRD.CardCode INNER JOIN 
		   USK.dbo.OCRG OCRG ON OCRD.GroupCode=OCRG.GroupCode
 WHERE  --ORIN.DocDate>='01/09/2019' AND ORIN.DocDate<= '01/09/2019' and ORIN.CANCELED ='N'  
		 ORIN.DocDate>={?Desde}AND ORIN.DocDate<={?Hasta}and ORIN.CANCELED ='N'
 and RIN1.AcctCode in ('505','205','401','402','404','406','410' ,'411','750','720001','720002')  and orin.doctype ='S'

 

Que tal Juan Carlos…

Algo muy básico que seguramente ya analizaron: Entregas abiertas. Si tienes entregas abiertas, el costo de venta se encuentra efectado, sin embargo al estar tu reporte basado en facturas, ese monto no se ve reflejado.

Otro punto… si tu revisión es mensual… si tu entrega fue generada en un mes y la factura en otro, tendrás un desfase en cuanto a resultados.

Espero te sea de utilidad, saludos.

Hola Gera…
Si. ya había tomado en consideración lo de las entregas, solo tengo el pequeño desfase de lo entregado en último día de un mes y facturado al siguiente. No tengo nada en entregas abiertas, pues por regla, todo lo que sale de la empresa para entrega debe llevar ya su factura. por eso a lo mucho, llegan a tener 1 día de desfase, máximo 2 si la orden de entrega la hacen el sábado, y la factura el lunes con la salida del camión.

Considerando aún el desfase de mes con mes. en 2019 tengo una diferencia de 600.000 MXN de ventas vs costo de ventas.

Sin embargo debo decir que el monto total 2019 de Fac - NC Si me cuadra con el reporte de Análisis de Ventas de SAP, (una difderencia de 10 Pesos, que al buscarla corresponde a decimales de algunos clientes mes con mes). Pero no se si es que estoy intentando de validar mal el campo…

Estoy haciendo la suma del Stock Value por documento Vs Costo de Ventas (el Stock Value es distinto a el LineTotal que es el que uso para validar Documentos Vs Análisis de Venta y me coincide al 100%)

Aún sigo trabajando en esto, y estoy buscando darle la vuelta con la OINM que me mencionaron arriba, pero no se que campo debo usar para validar mi costo Vs OINM

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.