Пока напишу запрос для получения вход. сальдо, приходы/расходы обязательств (не товаров!), исходящее получается как входящее + приходы - расходы.
Запрос взят из отчета Расчеты с контрагентами.
Нюанс - здесь также учитываются недостоверные обязательства. В оригинальном они отбрасываются. Нет фильтра по МХ (у нас оно одно).
SQL код:
SELECT d.AcceptInSum,d.AcceptOutSum,d.Saldo
FROM (select -1 FinAgent,to_date(null) BeginDate,'' DocType,' ' DocID, sum(d.AcceptInSum) AcceptInSum, sum(d.AcceptOutSum) AcceptOutSum, sum(nvl(d.AcceptInSum,0)-nvl(d.AcceptOutSum,0)) Saldo
from supermag.SVFinObligationAll d where d.IsAccepted = decode(d.doctype, 'WO', d.IsAccepted, 'WI', d.IsAccepted, '1')
and d.BeginDate between TO_DATE('20161001','YYYYMMDD') and TO_DATE('20161023','YYYYMMDD')
and d.FinAgent=100795
UNION ALL select -1 FinAgent,to_date('31.12.2099','DD.MM.YYYY') BeginDate,'' DocType,'' DocID, 0 AcceptInSum,0 AcceptOutSum,sum(nvl(d.AcceptInSum,0)-nvl(d.AcceptOutSum,0)) Saldo from supermag.SVFinObligationAll d where d.IsAccepted = decode(d.doctype, 'WO', d.IsAccepted, 'WI', d.IsAccepted, '1')
and d.BeginDate < TO_DATE('20161001','YYYYMMDD')
and d.FinAgent=100795 having sum(nvl(d.AcceptInSum,0)-nvl(d.AcceptOutSum,0))<>0) d ORDER BY d.BeginDate,d.DocType,d.DocID;
А вот оригинальный (недостоверные обязательства отсутствуют, и заодно убран фильтр по контрагенту, т.е. отчет по всем)
SQL код:
SELECT d.AcceptInSum,d.AcceptOutSum,d.Saldo
FROM (select -1 FinAgent,to_date(null) BeginDate,'' DocType,' ' DocID,sum(d.AcceptInSum) AcceptInSum,sum(d.AcceptOutSum) AcceptOutSum,sum(nvl(d.AcceptInSum,0)-nvl(d.AcceptOutSum,0)) Saldo
from supermag.SVFinObligationAll d where d.IsAccepted='1'
and d.BeginDate between TO_DATE('20161001','YYYYMMDD') and TO_DATE('20161023','YYYYMMDD')
UNION ALL select -1 FinAgent,to_date('31.12.2099','DD.MM.YYYY') BeginDate,'' DocType,'' DocID,0 AcceptInSum,0 AcceptOutSum,sum(nvl(d.AcceptInSum,0)-nvl(d.AcceptOutSum,0)) Saldo from supermag.SVFinObligationAll d where d.IsAccepted='1'
and d.BeginDate < TO_DATE('20161001','YYYYMMDD')
having sum(nvl(d.AcceptInSum,0)-nvl(d.AcceptOutSum,0))<>0) d ORDER BY d.BeginDate,d.DocType,d.DocID;