BEGIN
FOR
SELECT
A.VATIndex_ID, A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID,
A.LocalTAmountWithoutVAT, A.LocalTAmount, A.TAmountWithoutVAT, A.TAmount,
A.RowType, A.Quantity, VI.Income
FROM
IssuedInvoices2 A
join IssuedInvoices B ON A.Parent_ID = B.ID
left join VatIndexes VI on VI.ID = A.VatIndex_ID
WHERE
((B.VATByPayment = 'N') OR (A.VATMode = 1)) AND
B.VATDate$Date >= :AVATDateFrom AND B.VATDate$Date < :AVATDateTo AND
B.VATDocument = 'A' AND B.VATCountry_ID=:AVATCountry_ID AND
(( :AFirmSelID = '' OR
(B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSelID)) OR
(B.Firm_ID in (SELECT ID FROM Firms WHERE Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSelID))) ))
INTO
:VATIndex_ID, :mDivision_ID, :mBusOrder_ID, :mBusTransaction_ID, :mBusProject_ID,
:TAmountWithoutVAT, :TAmount, :ForeignTAmountWithoutVAT, :ForeignTAmount,
:mRowType, :mQuantity, :mIncome
DO BEGIN
EXECUTE PROCEDURE CheckDivisionAndBusX
:mDivision_ID, :ADivisionsSelID, :ADivisionsWithChilds,
:mBusOrder_ID, :ABusOrdersSelID, :ABusOrdersWithChilds,
:mBusTransaction_ID, :ABusTransactionsSelID, :ABusTransactionsWithChilds,
:mBusProject_ID, :ABusProjectsSelID, :ABusProjectsWithChilds
RETURNING_VALUES
:mSuspend;
IF (mSuspend > 0) THEN BEGIN
IF ((mRowType = 3) AND (mQuantity < 0)) THEN BEGIN
IF (mIncome = 'A') THEN BEGIN --ERR-2721/2009
TAmountWithoutVAT = (-1) * TAmountWithoutVAT;
TAmount = (-1) * TAmount;
ForeignTAmountWithoutVAT = (-1) * ForeignTAmountWithoutVAT;
ForeignTAmount = (-1) * ForeignTAmount;
END
END
SUSPEND;
END
END
FOR
SELECT
A.VATIndex_ID, A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID,
A.LocalTAmountWithoutVAT, A.LocalTAmount, A.TAmountWithoutVAT, A.TAmount
FROM
VATIssuedDInvoices2 A
join VATIssuedDInvoices B ON A.Parent_ID = B.ID
WHERE
B.VATDate$Date >= :AVATDateFrom AND B.VATDate$Date < :AVATDateTo AND
B.VATCountry_ID=:AVATCountry_ID AND
(( :AFirmSelID = '' OR
(B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSelID)) OR
(B.Firm_ID in (SELECT ID FROM Firms WHERE Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSelID))) ))
INTO
:VATIndex_ID, :mDivision_ID, :mBusOrder_ID, :mBusTransaction_ID, :mBusProject_ID,
:TAmountWithoutVAT, :TAmount, :ForeignTAmountWithoutVAT, :ForeignTAmount
DO BEGIN
EXECUTE PROCEDURE CheckDivisionAndBusX
:mDivision_ID, :ADivisionsSelID, :ADivisionsWithChilds,
:mBusOrder_ID, :ABusOrdersSelID, :ABusOrdersWithChilds,
:mBusTransaction_ID, :ABusTransactionsSelID, :ABusTransactionsWithChilds,
:mBusProject_ID, :ABusProjectsSelID, :ABusProjectsWithChilds
RETURNING_VALUES
:mSuspend;
IF (mSuspend > 0) THEN
SUSPEND;
END
END;