miércoles, 28 de agosto de 2019

Producción - Costo de fabricación Con BOM (Lista de Materiales)

Que tal?, como han estado?, les comparto una consulta que puede ser de utilidad, en la cual podrán ver los costos que esta generando su producción.

Para este ejemplo en particular ya se encuentran la lista de materiales de los productos a producir cargada (La mejor practica), lista que se consume a diario a través de un almacén ficticio destinado para el consumo de la producción, el cual tendrían que colocar en las XxXx que están en negritas.

Por lo que al final esta consulta les dará detalles de los movimientos (Entradas, Transferencias y Salidas) de los materiales consumidos por día en un rango de fechas.

select Case TransType
when 60 then 'Salida'
when 59 then 'Entrada'
when 67 then 'Transferencia' end as [Movimiento], a.Currency
, a.DocDate, BASE_REF as [No. Documento], c.filler as [From Whse], c.ToWhsCode as [To Whse], a.Warehouse
, d.DocNum as [OF], case d.Type when 'S' then 'Estandár'
when 'D' then 'Desmonte'
when 'P' then 'Especial' End as [Tipo OF], d.PlannedQty, d.Uom, d.ItemCode as [Codigo Producto], e.ItemName
, a.ItemCode as [Codigo Material], a.Dscription, a.InQty, a.OutQty * -1 as [OutQty]
, CASE TransType
when 60 then g.unitMsr
when 59 then f.unitMsr
when 67 then h.unitMsr
end as [UM]
, case a.currency when 'USD' then a.Price * a.Rate
  when 'MXN' then a.Price end as Price
,  a.CalcPrice
, Case TransType
when 60 then  (a.OutQty * a.CalcPrice) * -1
when 59 then  (a.InQty * a.CalcPrice)
when 67 then
case c.ToWhsCode
when 'XxXx' then (a.InQty * a.CalcPrice)
else (a.OutQty * a.CalcPrice) * -1  end end as [Total MXN]
, Case TransType
when 60 then (a.OutQty * a.CalcPrice) * -1  / b.Rate
when 59 then (a.InQty * a.CalcPrice) / b.Rate
when 67 then
case c.ToWhsCode
when 'XxXx' then  (a.InQty * a.CalcPrice)  / b.Rate
else (a.OutQty * a.CalcPrice) * -1 / b.Rate end end as [Total USD]
, a.Comments, a.JrnlMemo
from OINM a Inner join ORTT b on a.DocDate = b.RateDate
left join OWTR c on c.DocEntry = a.CreatedBy
left join OWOR d on d.DocEntry = a.AppObjAbs and a.ApplObj = 202
left join OITM e on e.ItemCode = d.ItemCode
left join IGN1 f on f.DocEntry = a.CreatedBy and a.ItemCode = f.ItemCode and a.DocLineNum = f.LineNum
left join IGE1 g on g.DocEntry = a.CreatedBy and a.ItemCode = g.ItemCode and a.DocLineNum = g.LineNum
left join WTR1 h on h.DocEntry = a.CreatedBy and a.ItemCode = h.ItemCode and a.DocLineNum = h.LineNum
where TransType in (67,60,59)
and a.DocDate >= [%0]
and  a.DocDate <= [%1]
and (a.Warehouse = XxXx)
and b.Currency = 'USD'
order by DocDate