create or replace view svarealcostpriceopenedperiod as
select M.SaleDate,
decode(M.SaleLocationFrom,-2,M.SaleLocationTo,null,M.SaleLocationTo,M.SaleLocationFrom
) StoreLoc,
M.Article,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'0',M.Quantity,0), 0) ) SaleDocDefQty,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) SaleDocDefSum,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleDocDefCP,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) SaleDocDefSumNoVAT,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) SaleDocDefSumNoTax,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleDocDefCPNoVAT,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'0',M.Quantity,0), 0) ) SaleCashDefQty,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) SaleCashDefSum,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleCashDefCP,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) SaleCashDefSumNoVAT,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) SaleCashDefSumNoTax,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleCashDefCPNoVAT,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'0',M.Quantity,0), 0) ) SaleDefQty,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) SaleDefSum,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleDefCP,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) SaleDefSumNoVAT,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) SaleDefSumNoTax,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleDefCPNoVAT,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'0',M.Quantity,0), 0) ) RetDocDefQty,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) RetDocDefSum,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetDocDefCP,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) RetDocDefSumNoVAT,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) RetDocDefSumNoTax,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetDocDefCPNoVAT,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'0',M.Quantity,0), 0) ) RetCashDefQty,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) RetCashDefSum,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetCashDefCP,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) RetCashDefSumNoVAT,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) RetCashDefSumNoTax,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetCashDefCPNoVAT,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'0',M.Quantity,0), 0) ) RetDefQty,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) RetDefSum,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetDefCP,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) RetDefSumNoVAT,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) RetDefSumNoTax,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'0',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetDefCPNoVAT,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'1',M.Quantity,0), 0) ) SaleDocUndefQty,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) SaleDocUndefSum,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleDocUndefCP,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) SaleDocUndefSumNoVAT,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) SaleDocUndefSumNoTax,
sum( decode(M.SaleType, 'WO', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleDocUndefCPNoVAT,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'1',M.Quantity,0), 0) ) SaleCashUndefQty,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) SaleCashUndefSum,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleCashUndefCP,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) SaleCashUndefSumNoVAT,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) SaleCashUndefSumNoTax,
sum( decode(M.SaleType, 'CS', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleCashUndefCPNoVAT,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'1',M.Quantity,0), 0) ) SaleUndefQty,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) SaleUndefSum,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleUndefCP,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) SaleUndefSumNoVAT,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) SaleUndefSumNoTax,
sum( decode(M.SaleOp, 1, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) SaleUndefCPNoVAT,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'1',M.Quantity,0), 0) ) RetDocUndefQty,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) RetDocUndefSum,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetDocUndefCP,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) RetDocUndefSumNoVAT,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) RetDocUndefSumNoTax,
sum( decode(M.SaleType, 'WI', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetDocUndefCPNoVAT,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'1',M.Quantity,0), 0) ) RetCashUndefQty,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) RetCashUndefSum,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetCashUndefCP,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) RetCashUndefSumNoVAT,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) RetCashUndefSumNoTax,
sum( decode(M.SaleType, 'CR', decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetCashUndefCPNoVAT,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'1',M.Quantity,0), 0) ) RetUndefQty,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4),0), 0) ) RetUndefSum,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetUndefCP,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4),0), 0) ) RetUndefSumNoVAT,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4),0), 0) ) RetUndefSumNoTax,
sum( decode(M.SaleOp, 3, decode(nvl(M.ForcedMapping,'0'),'1',round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4),0), 0) ) RetUndefCPNoVAT,
sum( decode(M.SaleType, 'WO', M.Quantity, 0) ) SaleDocQty,
sum( decode(M.SaleType, 'WO', round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4), 0) ) SaleDocSum,
sum( decode(M.SaleType, 'WO', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) SaleDocCP,
sum( decode(M.SaleType, 'WO', round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4), 0) ) SaleDocSumNoVAT,
sum( decode(M.SaleType, 'WO', round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4), 0) ) SaleDocSumNoTax,
sum( decode(M.SaleType, 'WO', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) SaleDocCPNoVAT,
sum( decode(M.SaleType, 'CS', M.Quantity, 0) ) SaleCashQty,
sum( decode(M.SaleType, 'CS', round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4), 0) ) SaleCashSum,
sum( decode(M.SaleType, 'CS', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) SaleCashCP,
sum( decode(M.SaleType, 'CS', round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4), 0) ) SaleCashSumNoVAT,
sum( decode(M.SaleType, 'CS', round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4), 0) ) SaleCashSumNoTax,
sum( decode(M.SaleType, 'CS', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) SaleCashCPNoVAT,
sum( decode(M.SaleOp, 1, M.Quantity, 0) ) SaleQty,
sum( decode(M.SaleOp, 1, round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4), 0) ) SaleSum,
sum( decode(M.SaleOp, 1, round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) SaleCP,
sum( decode(M.SaleOp, 1, round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4), 0) ) SaleSumNoVAT,
sum( decode(M.SaleOp, 1, round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4), 0) ) SaleSumNoTax,
sum( decode(M.SaleOp, 1, round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) SaleCPNoVAT,
sum( decode(M.SaleType, 'WI', M.Quantity, 0) ) RetDocQty,
sum( decode(M.SaleType, 'WI', round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4), 0) ) RetDocSum,
sum( decode(M.SaleType, 'WI', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) RetDocCP,
sum( decode(M.SaleType, 'WI', round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4), 0) ) RetDocSumNoVAT,
sum( decode(M.SaleType, 'WI', round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4), 0) ) RetDocSumNoTax,
sum( decode(M.SaleType, 'WI', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) RetDocCPNoVAT,
sum( decode(M.SaleType, 'CR', M.Quantity, 0) ) RetCashQty,
sum( decode(M.SaleType, 'CR', round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4), 0) ) RetCashSum,
sum( decode(M.SaleType, 'CR', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) RetCashCP,
sum( decode(M.SaleType, 'CR', round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4), 0) ) RetCashSumNoVAT,
sum( decode(M.SaleType, 'CR', round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4), 0) ) RetCashSumNoTax,
sum( decode(M.SaleType, 'CR', round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) RetCashCPNoVAT,
sum( decode(M.SaleOp, 3, M.Quantity, 0) ) RetQty,
sum( decode(M.SaleOp, 3, round(decode(M.SaleQ,0,0,M.SaleSum*M.Quantity/M.SaleQ),4), 0) ) RetSum,
sum( decode(M.SaleOp, 3, round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeSum,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) RetCP,
sum( decode(M.SaleOp, 3, round(decode(M.SaleQ,0,0,M.SaleNoVAT*M.Quantity/M.SaleQ),4), 0) ) RetSumNoVAT,
sum( decode(M.SaleOp, 3, round(decode(M.SaleQ,0,0,M.SaleNoTax*M.Quantity/M.SaleQ),4), 0) ) RetSumNoTax,
sum( decode(M.SaleOp, 3, round(decode(nvl(M.IncomeQ,0),0,0,nvl(M.IncomeNoVAT,0)*M.Quantity/nvl(M.IncomeQ,0)),4), 0) ) RetCPNoVAT
from FFMapRep M
where M.SaleType in ('CR', 'WI', 'CS', 'WO')
and M.SaleOp in (1, 3)
group by M.SaleDate,
decode(M.SaleLocationFrom,-2,M.SaleLocationTo,null,M.SaleLocationTo,M.SaleLocationFrom),
M.Article;