Procedura-VATSummaryPayments

Popis:
Procedura vybere DPH údaje z plateb. Placené doklady, které mají spočtenu DPH z platby, jsou 01,02,03,60,04,61,63,65. Placené doklady, které nemají spočtenu DPH z plateb, DZV 62, DZP 63, JSD 12, DRC RC. Pokladní doklady 05,06,07,08 nemohou mít platbu, stejně tak doklady POSu.

Parametry:

NázevPopisDatový typ
AFirmSel_IDChar(10)
ADivisionSel_IDChar(10)
ABusOrderSel_IDChar(10)
ABusTransactionSel_IDChar(10)
ABusProjectSel_IDChar(10)
AVATDateFromFloat(0, 0)
AVATDateToFloat(0, 0)
ADivisionsWithChildrenChar(1)
ABusOrdersWithChildrenChar(1)
ABusTransactionsWithChildrenChar(1)
ABusProjectsWithChildrenChar(1)
VATCountry_IDChar(10)
AWithMOSSZahrnout režim OSS/IOSS (TradeType=7,8)Char(1)

Návratové hodnoty:

NázevPopisDatový typ
VATIndex_IDChar(10)
DocQueue_IDChar(10)
OrdNumberNumeric(8, 0)
Period_IDChar(10)
TAmountWithoutVATNumeric(13, 2)
LocalTAmountWithoutVATNumeric(13, 2)
TAmountNumeric(13, 2)
LocalTAmountNumeric(13, 2)
TextChar(160)
DescriptionChar(50)
Division_IDChar(10)
BusOrder_IDChar(10)
BusTransaction_IDChar(10)
BusProject_IDChar(10)
Firm_IDChar(10)
VATDate$DateFloat(0, 0)
PosIndexInteger
RelatedDocNameVarChar(24)
VATModeRežim DPHInteger
Document_IDChar(10)
DRCArticle_IDChar(10)
ExternalNumberVarChar(30)
VarSymbolVarChar(30)
SimplifiedVATDocumentChar(1)
SourceDoc_IDChar(10)
SourceDocTypeChar(2)
VATReportReferenceVarChar(30)
VATReportPreferenceVarChar(2)
POSSumDoc_IDChar(10)
VATAdmitDate$DATEFloat(0, 0)
UsedRatioChar(1)

Závislosti:

NázevPopisTřída
CheckDivisionAndBusXProcedures

Tělo:

begin
  /* procedura vybere DPH udaje z plateb */
  /* placene doklady ktere maji spoctenu DPH z platby jsou 01,02,03,60,04,61,63,65 */
  /* placene doklady, ktere nemaji spoctenu DPH z plateb DZV 62, DZP 63, JSD 12, DRC RC */
  /* pokladni doklady 05,06,07,08 nemohou mit platbu, stejne tak doklady POSu */
  /* */
  /* V poli VATAdmitDate$DATE je u výtupních dokladů hodnota VATDate$DATE */
  select Country_ID from GlobData into :mLocalCountry_ID;
  POSSumDoc_ID = null;
  
  /* OtherIncomes */
  IF (VATCountry_ID = mLocalCountry_ID) THEN
  BEGIN
    UsedRatio = 'N';
    for
      select
        A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
        substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
        A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
        P.VATDate$DATE, P.TAmountWithoutVAT, P.LocalTAmountWithoutVAT, P.TAmount, P.LocalTAmount,
        A.PosIndex, '' RelatedDocName, 0 VATMode, B.ID Document_ID,
        NULL DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, B.SDocument_ID, B.SDocumentType,
        B.VATReportReference, B.VATReportPreference,
        B.VATAdmitDate$DATE
      from
        Payments P
        join OtherIncomes2 A on A.ID = P.Row_ID
        join OtherIncomes  B on B.ID = A.Parent_ID
        join VATIndexes VI on VI.ID = A.VATIndex_ID
      where
        (P.PDocumentType = '01') and
        ((B.VATByPayment = 'A') and (P.TAmountWithoutVAT <> 0) or (P.LocalTAmountWithoutVAT <> 0) or  (P.TAmount <> 0) or (P.LocalTAmount <> 0)) and
        B.VATDocument = 'A' and
        A.VATIndex_ID is not null and
        (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
        ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
        ((:AFirmSel_ID = '') or
          (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
          (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
      into
        :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
        :Text, :Description,
        :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
        :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
        :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
        :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
        :VATReportReference, :VATReportPreference, :VATAdmitDate$DATE
    do begin
      execute procedure CheckDivisionAndBusX
        :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
        :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
        :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
        :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
      returning_values
        :mSuspend;
      if (mSuspend > 0) then
      begin
        suspend;
      end
    end
    /* OtherExpenses */
    for
      select
        A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
        substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
        A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
        P.VATDate$DATE, P.TAmountWithoutVAT, P.LocalTAmountWithoutVAT, P.TAmount, P.LocalTAmount,
        A.PosIndex, '' RelatedDocName, 0 VATMode, B.ID Document_ID,
        NULL DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, B.SDocument_ID, B.SDocumentType,
        B.VATReportReference, B.VATReportPreference, B.VATAdmitDate$DATE, A.UsedRatio
      from
        Payments P
        join OtherExpenses2 A on A.ID = P.Row_ID
        join OtherExpenses  B on B.ID = A.Parent_ID
        join VATIndexes VI on VI.ID = A.VATIndex_ID
      where
        (P.PDocumentType = '02') and
        ((B.VATByPayment = 'A') and (P.TAmountWithoutVAT <> 0) or (P.LocalTAmountWithoutVAT <> 0) or  (P.TAmount <> 0) or (P.LocalTAmount <> 0)) and
        B.VATDocument = 'A' and
        A.VATIndex_ID is not null and
        (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
        ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
        ((:AFirmSel_ID = '') or
          (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
          (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
      into
        :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
        :Text, :Description,
        :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
        :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
        :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
        :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
        :VATReportReference, :VATReportPreference, :VATAdmitDate$DATE, :UsedRatio
    do begin
      execute procedure CheckDivisionAndBusX
        :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
        :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
        :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
        :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
      returning_values
        :mSuspend;
      if (mSuspend > 0) then
      begin
        suspend;
      end
    end
  END /* mLocalCountry */
  
  /* IssuedInvoices */
  UsedRatio = 'N';
  for
    select
      A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
      substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
      A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
      P.VATDate$DATE, P.TAmountWithoutVAT, P.LocalTAmountWithoutVAT, P.TAmount, P.LocalTAmount,
      A.PosIndex, '' RelatedDocName, A.VATMode, B.ID Document_ID,
      A.DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, null SDocument_ID, '' SDocumentType,
      B.VATReportReference, B.VATReportPreference, A.RowType, A.Quantity, B.VATAdmitDate$DATE
    from
      Payments P
      join IssuedInvoices2 A on A.ID = P.Row_ID
      join IssuedInvoices  B on B.ID = A.Parent_ID
      join VATIndexes VI on VI.ID = A.VATIndex_ID
    where
      (P.PDocumentType = '03') and
      ((B.VATByPayment = 'A') AND (A.VATMode = 0) AND (P.TAmountWithoutVAT <> 0) OR (P.LocalTAmountWithoutVAT <> 0) OR (P.TAmount <> 0) OR (P.LocalTAmount <> 0)) AND
      B.VATDocument = 'A' and B.VATCountry_ID = :VATCountry_ID and
      A.VATIndex_ID is not null and
      (:AWithMOSS = 'A' or (B.TradeType <> 7 and B.TradeType <> 8)) and
      (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
      ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
      ((:AFirmSel_ID = '') or
        (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
        (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
    into
      :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
      :Text, :Description,
      :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
      :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
      :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
      :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
      :VATReportReference, :VATReportPreference, :mRowType, :mQuantity, :VATAdmitDate$DATE
  do begin
    execute procedure CheckDivisionAndBusX
      :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
      :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
      :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
      :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
    returning_values
      :mSuspend;
    if (mSuspend > 0) then begin
      if (mRowType = 4) then 
        Text = '';      
      if ((mRowType = 3) and (mQuantity < 0)) then begin
        if (mIncome = 'A') then begin --ERR-2721/2009 
          TAmountWithoutVAT = (-1) * TAmountWithoutVAT;
          LocalTAmountWithoutVAT = (-1) * LocalTAmountWithoutVAT;
          TAmount = (-1) * TAmount; 
          LocalTAmount = (-1) * LocalTAmount;
        end 
      end     
      suspend;
    end
  end
  /* IssuedCreditNotes */
  VATReportReference = '';
  UsedRatio = 'N';
  for
    select
      A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
      substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
      A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
      CASE B.Acknowledge
        WHEN 2 THEN CNA.DocDate$Date
        ELSE P.VATDate$Date
      END,
      (-1*P.TAmountWithoutVAT), (-1*P.LocalTAmountWithoutVAT), (-1*P.TAmount), (-1*P.LocalTAmount),
      A.PosIndex, '' RelatedDocName, A.VATMode, B.ID Document_ID,
      A.DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, B.Source_ID SDocument_ID, '03' SDocumentType,
      B.VATReportPreference, B.VATAdmitDate$DATE
    from
      Payments P
      join IssuedCreditNotes2 A on A.ID = P.Row_ID
      join IssuedCreditNotes  B on B.ID = A.Parent_ID
      join VATIndexes VI on VI.ID = A.VATIndex_ID
      LEFT join CreditNotesAcknowledges CNA ON CNA.CreditNote_ID = B.ID
    where
      (P.PDocumentType = '60') and
      ((B.VATByPayment = 'A') AND (A.VATMode = 0) AND (P.TAmountWithoutVAT <> 0) OR (P.LocalTAmountWithoutVAT <> 0) OR (P.TAmount <> 0) OR (P.LocalTAmount <> 0)) AND
      B.VATDocument = 'A' and B.VATCountry_ID = :VATCountry_ID and
      A.VATIndex_ID is not null and
      (:AWithMOSS = 'A' or (B.TradeType <> 7 and B.TradeType <> 8)) and
      (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
      ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
      ((:AFirmSel_ID = '') or
        (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
        (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
    into
      :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
      :Text, :Description,
      :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
      :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
      :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
      :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
      :VATReportPreference, :VATAdmitDate$DATE
  do begin
    execute procedure CheckDivisionAndBusX
      :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
      :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
      :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
      :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
    returning_values
      :mSuspend;
    if (mSuspend > 0) then 
    begin
      if (mRowType = 4) then 
        Text = '';      
      suspend;
    end
  end
  /* ReceivedInvoices */
  for
    select
      A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
      substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
      A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
      P.VATDate$DATE, P.TAmountWithoutVAT, P.LocalTAmountWithoutVAT, P.TAmount, P.LocalTAmount,
      A.PosIndex, '' RelatedDocName, A.VATMode, B.ID Document_ID,
      A.DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, null SDocument_ID, '' SDocumentType,
      B.VATReportReference, B.VATReportPreference, B.VATAdmitDate$DATE, A.UsedRatio
    from
      Payments P
      join ReceivedInvoices2 A on A.ID = P.Row_ID
      join ReceivedInvoices  B on B.ID = A.Parent_ID
      join VATIndexes VI on VI.ID = A.VATIndex_ID
    where
      (P.PDocumentType = '04') and
      ((B.VATByPayment = 'A') AND (A.VATMode = 0) AND (P.TAmountWithoutVAT <> 0) OR (P.LocalTAmountWithoutVAT <> 0) OR (P.TAmount <> 0) OR (P.LocalTAmount <> 0)) AND
      B.VATDocument = 'A' and B.VATCountry_ID = :VATCountry_ID and
      A.VATIndex_ID is not null and
      B.TradeType <> 4 and
      (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
      ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
      ((:AFirmSel_ID = '') or
        (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
        (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
    into
      :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
      :Text, :Description,
      :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
      :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
      :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
      :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
      :VATReportReference, :VATReportPreference, :VATAdmitDate$DATE, :UsedRatio
  do begin
    execute procedure CheckDivisionAndBusX
      :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
      :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
      :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
      :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
    returning_values
      :mSuspend;
    if (mSuspend > 0) then
    begin
      suspend;
    end
  end
  
  /* ReceivedCreditNotes */
  VATReportReference = '';
  
  for
    select
      A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
      substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
      A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
      P.VATDate$DATE, (-1*P.TAmountWithoutVAT), (-1*P.LocalTAmountWithoutVAT), (-1*P.TAmount), (-1*P.LocalTAmount),
      A.PosIndex, '' RelatedDocName, A.VATMode, B.ID Document_ID,
      A.DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, B.Source_ID SDocument_ID, '04' SDocumentType,
      B.VATReportPreference, B.VATAdmitDate$DATE, A.UsedRatio
    from
      Payments P
      join ReceivedCreditNotes2 A on A.ID = P.Row_ID
      join ReceivedCreditNotes  B on B.ID = A.Parent_ID
      join VATIndexes VI on VI.ID = A.VATIndex_ID
    where
      (P.PDocumentType = '61') and
      ((B.VATByPayment = 'A') AND (A.VATMode = 0) AND (P.TAmountWithoutVAT <> 0) OR (P.LocalTAmountWithoutVAT <> 0) OR (P.TAmount <> 0) OR (P.LocalTAmount <> 0)) AND
      B.VATDocument = 'A' and B.VATCountry_ID = :VATCountry_ID and
      A.VATIndex_ID is not null and
      B.TradeType <> 4 and
      (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
      ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
      ((:AFirmSel_ID = '') or
        (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
        (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
    into
      :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
      :Text, :Description,
      :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
      :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
      :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
      :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
      :VATReportPreference, :VATAdmitDate$DATE, :UsedRatio
  do begin
    execute procedure CheckDivisionAndBusX
      :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
      :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
      :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
      :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
    returning_values
      :mSuspend;
    if (mSuspend > 0) then
    begin
      suspend;
    end
  end
  
  /* VATIssuedDInvoices */
  /* Nepocita se DPH z plateb - jsou vzdy nejdrive zaplacene */
  /* VATReceivedDInvoices */
  /* Nepocita se DPH z plateb - jsou vzdy nejdrive zaplacene */
  
  /* VATIssuedDCreditNotes */
  VATReportReference = '';
  UsedRatio = 'N';
  
  for
    select
      A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
      substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
      A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
      P.VATDate$DATE, (-1*P.TAmountWithoutVAT), (-1*P.LocalTAmountWithoutVAT), (-1*P.TAmount), (-1*P.LocalTAmount),
      A.PosIndex, '' RelatedDocName, A.VATMode, B.ID Document_ID,
      A.DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, B.Source_ID SDocument_ID, '62' SDocumentType,
      B.VATReportPreference, B.VATAdmitDate$DATE
    from
      Payments P
      join VATIssuedDCreditNotes2 A on A.ID = P.Row_ID
      join VATIssuedDCreditNotes  B on B.ID = A.Parent_ID
      join VATIndexes VI on VI.ID = A.VATIndex_ID
    where
      (P.PDocumentType = '63') and
      ((B.VATByPayment = 'A') AND (A.VATMode = 0) AND (P.TAmountWithoutVAT <> 0) OR (P.LocalTAmountWithoutVAT <> 0) OR (P.TAmount <> 0) OR (P.LocalTAmount <> 0)) AND
      B.VATCountry_ID = :VATCountry_ID and
      A.VATIndex_ID is not null and
      (:AWithMOSS = 'A' or (B.TradeType <> 7 and B.TradeType <> 8)) and
      (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
      ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
      ((:AFirmSel_ID = '') or
        (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
        (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
    into
      :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
      :Text, :Description,
      :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
      :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
      :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
      :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
      :VATReportPreference, :VATAdmitDate$DATE
  do begin
    execute procedure CheckDivisionAndBusX
      :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
      :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
      :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
      :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
    returning_values
      :mSuspend;
    if (mSuspend > 0) then begin
      suspend;
    end
  end
  /* VATReceivedDCreditNotes */
  VATReportReference = '';
  for
    select
      A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID,
      substring(A.Text from 1 for 160) Text, substring(B.Description from 1 for 50) Description,
      A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, A.BusProject_ID, B.Firm_ID, VI.Income,
      P.VATDate$DATE, (-1*P.TAmountWithoutVAT), (-1*P.LocalTAmountWithoutVAT), (-1*P.TAmount), (-1*P.LocalTAmount),
      A.PosIndex, '' RelatedDocName, A.VATMode, B.ID Document_ID,
      A.DRCArticle_ID, B.ExternalNumber, B.VarSymbol, B.SimplifiedVATDocument, B.Source_ID SDocument_ID, '64' SDocumentType,
      B.VATReportPreference, B.VATAdmitDate$DATE, A.UsedRatio
    from
      Payments P
      join VATReceivedDCreditNotes2 A on A.ID = P.Row_ID
      join VATReceivedDCreditNotes  B on B.ID = A.Parent_ID
      join VATIndexes VI on VI.ID = A.VATIndex_ID
    where
      (P.PDocumentType = '65') and
      ((B.VATByPayment = 'A') AND (A.VATMode = 0) AND (P.TAmountWithoutVAT <> 0) OR (P.LocalTAmountWithoutVAT <> 0) OR (P.TAmount <> 0) OR (P.LocalTAmount <> 0)) AND
      B.VATCountry_ID = :VATCountry_ID and
      A.VATIndex_ID is not null and
      B.TradeType <> 4 and
      (P.VATDate$Date >= :AVATDateFrom and P.VATDate$Date < :AVATDateTo) and
      ((P.VATDate$Date <= B.VATByPaymentEndDate$Date) or (B.VATByPaymentEndDate$Date = 0)) and
      ((:AFirmSel_ID = '') or
        (B.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID)) or
        (B.Firm_ID in (select ID from Firms where Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :AFirmSel_ID))))
    into
      :VATIndex_ID, :DocQueue_ID, :OrdNumber, :Period_ID,
      :Text, :Description,
      :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID, :Firm_ID, :mIncome,
      :VATDate$DATE, :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
      :PosIndex, :RelatedDocName, :VATMode, :Document_ID,
      :DRCArticle_ID, :ExternalNumber, :VarSymbol, :SimplifiedVATDocument, :SourceDoc_ID, :SourceDocType,
      :VATReportPreference, :VATAdmitDate$DATE, :UsedRatio
  do begin
    execute procedure CheckDivisionAndBusX
      :Division_ID, :ADivisionSel_ID, :ADivisionsWithChildren,
      :BusOrder_ID, :ABusOrderSel_ID, :ABusOrdersWithChildren,
      :BusTransaction_ID, :ABusTransactionSel_ID, :ABusTransactionsWithChildren,
      :BusProject_ID, :ABusProjectSel_ID, :ABusProjectsWithChildren
    returning_values
      :mSuspend;
    if (mSuspend > 0) then
    begin
      suspend;
    end
  end
  /* END */
end

Generated by ABRA Software a.s. 27.10.2021 16:34:20