Andrés @andresramirez no he probado aún tú consulta. Muchas gracias antes de nada.
Al final como siempre, tras un descanso y aclarar la mente ocupándome en otras cuestiones…salió.
Voy a puntualizar que se añaden los abonos del periodo restando de manera concreta solo los de su propio año según las numeraciones de las series y para usar en otras empresas requeriría su estudio y reformulación.
En este aspecto no he logrado automatizar en la consulta que me quite los abonos del año en curso mediante una condición automatizada… pretendo que en el 2018 solo me quite abonos cuya numeración de documento base sea la del año 2018, es decir, valores de basedocnum que empiecen por 2018%, algo así como where rin1.BaseDocNum like year(getdate()) teniendo que fijarlo como ‘2018%’
SELECT TT.SlpName, Max(TT.Actual+TT.Abonos_Actual) as '2018', Max(TT.Anterior+TT.Abonos_Anterior) as '2017', max(TT.Actual) as 'Ventas Año 2018',
max(TT.Abonos_Actual) as 'Abonos Año 2018', max(TT.Anterior) as 'Ventas Año 2017', max(TT.Abonos_Anterior) as 'Abonos Año 2017'
FROM
(SELECT T0.SlpCode, T1.SlpName,
ISNULL((SELECT sum(LineTotal) from INV1 inner join OINV on INV1.DocEntry=OINV.Docentry where OINV.SlpCode=T0.SlpCode and INV1.AcctCode in ('705000', '705008', '705028', '705031') and year(OINV.DocDate)=year(getdate()) group by OINV.SlpCode),0) as 'Actual',
ISNULL((SELECT sum(LineTotal) from INV1 inner join OINV on INV1.DocEntry=OINV.Docentry where OINV.SlpCode=T0.SlpCode and INV1.AcctCode in ('705000', '705008', '705028', '705031') and year(OINV.DocDate)=year(getdate())-1 group by OINV.SlpCode),0) as 'Anterior',
ISNULL((SELECT sum(LineTotal)*-1 from RIN1 inner join ORIN on RIN1.DocEntry=ORIN.Docentry where ORIN.SlpCode=T0.SlpCode and RIN1.AcctCode in ('705000', '705008', '705028', '705031') and RIN1.BaseDocNum like '2018%' and year(ORIN.DocDate)=year(getdate()) group by ORIN.SlpCode),0) as 'Abonos_Actual',
ISNULL((SELECT sum(LineTotal)*-1 from RIN1 inner join ORIN on RIN1.DocEntry=ORIN.Docentry where ORIN.SlpCode=T0.SlpCode and RIN1.AcctCode in ('705000', '705008', '705028', '705031') and RIN1.BaseDocNum like '2017%%'and year(ORIN.DocDate)=year(getdate())-1 group by ORIN.SlpCode),0) as 'Abonos_Anterior'
FROM OINV T0 INNER JOIN OSLP T1 ON T0.SlpCode=T1.SlpCode) TT
GROUP BY TT.SlpName
ORDER BY TT.SlpName
Por aquí lo dejo como consulta usable.