Single total, with date parameters:
/*select * from opdn x */
DECLARE @FROM DATETIME = /* x.DocDate */ '[%0]'
DECLARE @TO DATETIME = /* x.DocDate */ '[%1]'
SELECT [Type] as DocType, [Code] as CustomerCode, [CustName] as CustName, [Currency] as Currency, [Balance] as 'Total Open Balance'
,S.TotalForeign
from
(SELECT 'GR' as 'Type'
,T1.[CardCode] as Code
,T1.[CardName] as CustName
,(T0.[DocTotal]) as Total
,(T0.[DocTotalFC]) as TotalForeign
,month(T0.[DocDate]) as 'month'
,(T1.[OrderBalFC]) as Balance
,T0.DocCur as Currency
FROM OPDN T0
left outer join OCRD T1 on T0.cardcode = T1.cardcode
WHERE T0.[DocDate] BETWEEN @FROM AND @TO
Union All
SELECT 'RET' as 'Type'
,T1.[CardCode] as Code
,T1.[CardName] as CustName
,(T0.[DocTotal]) as Total
,(T0.[DocTotalFC]) as TotalForeign
,month(T0.[DocDate]) as 'month'
,(T1.[OrderBalFC]) as Balance
,T0.DocCur as Currency
FROM ORPD T0
left outer join OCRD T1 on T0.cardcode = T1.cardcode
WHERE T0.[DocDate] BETWEEN @FROM AND @TO)S
GROUP BY [Type] , [Code], [CustName], [Currency], [Balance],S.TotalForeign
ORDER BY CustomerCode, DocType