SET ARITHABORT ON
DECLARE @RevalueDate datetime
SELECT @RevalueDate = '2023-06-19'
--select * from TrCodes where Code = 'PEX'
--select * from [Gender Links (Online DB)].dbo.TrCodes where code = 'PEX'
--insert into TrCodes (iModule,code,linkid, Description,DebitTrans,tax,rep,Account1Link,Account2Link,TaxAccountLink,GLPrompt,TaxTypeID,SplitTr,bSalesFilter,bAllowSubAccTrans,bSettlementDisc,iDtTaxGroupID,iCtTaxGroupID,iTaxGroupID,iMBServiceID,TrCodes_iBranchID)
-- (select iModule,'PEX',linkid, 'PEX-LEX on CCE',DebitTrans,tax,rep,Account1Link,Account2Link,TaxAccountLink,GLPrompt,TaxTypeID,SplitTr,bSalesFilter,bAllowSubAccTrans,bSettlementDisc,iDtTaxGroupID,iCtTaxGroupID,iTaxGroupID,iMBServiceID,TrCodes_iBranchID from TrCodes where idTrCodes = 2)
DECLARE @PeriodID bigint
SELECT @PeriodID = (SELECT max(idPeriod) FROM _etblPeriod WHERE dPeriodDate <= @RevalueDate )
SELECT
Accounts.AccountLink
,Master_Sub_Account as Account
,Accounts.Description as Name
--,ROUND(COALESCE((SELECT (Actual_Deb00-Actual_Cred00) FROM _etblAccBlnc where MasterSubLink = PostGL.AccountLink),0)+SUM(PostGL.Debit - PostGL.Credit),2) as HomeBalance
--,ROUND(COALESCE((SELECT (Actual_ForeignDeb00-Actual_ForeignCred00) FROM _etblAccBlnc where MasterSubLink = PostGL.AccountLink),0)+SUM(PostGL.fForeignDebit - PostGL.fForeignCredit),2) as ForeignBalance
,HomeBalance = ROUND(
COALESCE((SELECT SUM([fBFDebit]-[fBFCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualDebit - BLC.fActualCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(Debit-Credit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0),2)
,ForeignBalance = ROUND(
COALESCE((SELECT SUM([fBFForeignDebit]-[fBFForeignCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualForeignDebit - BLC.fActualForeignCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID < @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period >= @PeriodID AND P2.TxDate <= @RevalueDate),0),2)
,Currency.CurrencyCode as Currency
,COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0) as RevalueRate
,NewLocalBalance = ROUND((COALESCE((SELECT SUM([fBFForeignDebit]-[fBFForeignCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualForeignDebit - BLC.fActualForeignCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0))
* COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0),2)
,Profit =
CASE
WHEN
(
--New Local Balance
ROUND((COALESCE((SELECT SUM([fBFForeignDebit]-[fBFForeignCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualForeignDebit - BLC.fActualForeignCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0))
* COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0),2)
--MINUS Current Home Balance
-
ROUND(COALESCE((SELECT SUM([fBFDebit]-[fBFCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualDebit - BLC.fActualCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(Debit-Credit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0),2)
) > 0
AND COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0) > 0
THEN
ROUND((COALESCE((SELECT SUM([fBFForeignDebit]-[fBFForeignCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualForeignDebit - BLC.fActualForeignCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0))
* COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0),2)
--MINUS Current Home Balance
-
ROUND(COALESCE((SELECT SUM([fBFDebit]-[fBFCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualDebit - BLC.fActualCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(Debit-Credit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0),2)
ELSE
0
END
,Loss = CASE
WHEN
(
--New Local Balance
ROUND((COALESCE((SELECT SUM([fBFForeignDebit]-[fBFForeignCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualForeignDebit - BLC.fActualForeignCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0))
* COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0),2)
--MINUS Current Home Balance
-
ROUND(COALESCE((SELECT SUM([fBFDebit]-[fBFCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualDebit - BLC.fActualCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(Debit-Credit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0),2)
) < 0
AND COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0) > 0
THEN
-(
ROUND((COALESCE((SELECT SUM([fBFForeignDebit]-[fBFForeignCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualForeignDebit - BLC.fActualForeignCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(fForeignDebit-fForeignCredit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0))
* COALESCE((SELECT fBuyRate FROM CurrencyHist WHERE CurrencyHist.iCurrencyID = COALESCE(Accounts.iForeignBankCurrencyID,0) AND dRateDate = @RevalueDate),0),2)
--MINUS Current Home Balance
-
ROUND(COALESCE((SELECT SUM([fBFDebit]-[fBFCredit]) FROM [_etblAccPrev] WHERE iAccPrevAccountID = Accounts.AccountLink),0)
+ COALESCE((SELECT SUM(BLC.fActualDebit - BLC.fActualCredit) FROM _etblAccBlnc BLC WHERE BLC.iAccBlncAccountID = Accounts.AccountLink AND BLC.iAccBlncPeriodID <= @PeriodID AND BLC.iAccBlncPeriodID > 0),0)
+ COALESCE((SELECT SUM(Debit-Credit) FROM PostGL P2 WHERE Accounts.AccountLink = P2.AccountLink AND P2.Period > @PeriodID AND P2.TxDate <= @RevalueDate),0),2)
)
ELSE
0
END
,CAST(1 as bit) as Post
FROM Accounts
LEFT JOIN Currency ON COALESCE(Accounts.iForeignBankCurrencyID,0) = CurrencyLink
left join _etblGLAccountTypes on iAccountType = idGLAccountType
WHERE
cAccountTypeDescription = 'Cash and Cash Equivalents'
AND AccountLevel IN (0,2)
AND COALESCE(Accounts.iForeignBankCurrencyID,0) > 0
GROUP BY
Accounts.Master_Sub_Account, Accounts.Description, COALESCE(Accounts.iForeignBankCurrencyID,0), Currency.CurrencyCode, Accounts.AccountLink
ORDER BY Accounts.Master_Sub_Account
OPTION (RECOMPILE)
|