Procedura-VATSummaryPos

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)
APOSDetailedChar(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
VATModeRežim DPHInteger
Document_IDChar(10)
SourceDoc_IDChar(10)
SourceDocTypeChar(2)
SimplifiedVATDocumentChar(1)
POSSumDoc_IDChar(10)
VATAdmitDate$DATEFloat(0, 0)
UsedRatioChar(1)

Tělo:

BEGIN
  /* VATSummaryPos VATByPayment */
  SELECT Country_ID FROM GlobData INTO :mLocalCountry_ID;
  IF (NOT (VATCountry_ID=mLocalCountry_ID)) then
    EXIT;
  /* prodej */
  VATMode = 0;
  UsedRatio = 'N';
  if (APOSDetailed = 'N') then
  BEGIN
    SourceDoc_ID = NULL;
    SourceDocType = '';
    SimplifiedVATDocument = 'A';
    POSSumDoc_ID = Null;
    FOR
      SELECT
        A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID, B.VATDate$Date,
        A.TAmountWithoutVAT, A.LocalTAmountWithoutVAT, A.TAmount, A.LocalTAmount,
        B.Description, B.Description, B.Firm_ID, A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, '' as BusProject_ID,  
        A.PosIndex, B.ID as Document_ID
      FROM
        POSSummaredDocuments2 A
        join POSSummaredDocuments B ON A.Parent_ID = B.ID
      WHERE
        B.VATDocument = 'A' and A.VATIndex_ID IS NOT NULL and
        B.VATDate$Date >= :AVATDateFrom and B.VATDate$Date < :AVATDateTo 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, :VATDate$Date,
        :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
        :Text, :Description, :Firm_ID, :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID,
        :PosIndex, :Document_ID
    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
        VATAdmitDate$DATE = VATDate$DATE;
        SUSPEND;
      END
    END
    /* vracení */
    VATMode = 0;
    FOR
      SELECT
        A.VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID, B.VATDate$Date,
        A.TAmountWithoutVAT, A.LocalTAmountWithoutVAT, A.TAmount, A.LocalTAmount,
        B.Description, B.Description, B.Firm_ID, A.Division_ID, A.BusOrder_ID, A.BusTransaction_ID, '' as BusProject_ID, 
        A.PosIndex, B.ID as Document_ID
      FROM
        POSSummaredDocuments3 A
        join POSSummaredDocuments B ON A.Parent_ID = B.ID
      WHERE
        B.VATDocument = 'A' and A.VATIndex_ID IS NOT NULL and
        B.VATDate$Date >= :AVATDateFrom and B.VATDate$Date < :AVATDateTo 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, :VATDate$Date,
        :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
        :Text, :Description, :Firm_ID, :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID,
        :PosIndex, :Document_ID
    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
        VATAdmitDate$DATE = VATDate$DATE;
        SUSPEND;
      END
    END
  END
  ELSE
  BEGIN
    /* vyber jednotlivych uctenek - pro KH DPH CZ */
    FOR
      SELECT
        VI.ID AS VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID, PS.VATDate$Date,
        A.TAmountWithoutVAT, A.LocalTAmountWithoutVAT, A.TAmount, A.LocalTAmount,
        SUBSTRING(B.Description FROM 1 FOR 160) as Text, SUBSTRING(B.Description FROM 1 FOR 50) as Description, B.Firm_ID, VP.Division_ID, B.BusOrder_ID, B.BusTransaction_ID, B.BusProject_ID,
        A.PosIndex, B.ID as Document_ID, B.RefundedDoc_ID, F.VATIdentNumber, B.POSSummaredDocument_ID
      FROM
        POSDocuments2 A 
        join POSDocuments B ON A.Parent_ID = B.ID
        join POSSummaredDocuments ps on ps.id = b.POSSummaredDocument_ID
        join VATIndexes vi ON vi.ID = (SELECT MAX(VATIndex_ID) FROM POSVATIndexes WHERE VATRate_ID = a.VATRate_ID)
        join VirtualPOSs vp on vp.ID = b.VirtualPOS_ID
        join Firms F on F.ID = B.Firm_ID
      WHERE
        PS.VATDocument = 'A' and VI.ID IS NOT NULL and
        PS.VATDate$Date >= :AVATDateFrom and PS.VATDate$Date < :AVATDateTo 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, :VATDate$Date,
        :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
        :Text, :Description, :Firm_ID, :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID,
        :PosIndex, :Document_ID, :SourceDoc_ID, :mVATIdentNumber, :POSSumDoc_ID
    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
        SourceDocType = '';
        IF (SourceDoc_ID IS NOT NULL) THEN SourceDocType = 'PD';
        SimplifiedVATDocument = 'A';
        IF (mVATIdentNumber <> '') THEN SimplifiedVATDocument = 'N';
        VATAdmitDate$DATE = VATDate$DATE;
        
        SUSPEND;
      END
    END
    /* vyber zaokrouhleni z hlavicek jednotlivych uctenek - pro KH DPH CZ */
    FOR
      SELECT
        VI.ID AS VATIndex_ID, B.DocQueue_ID, B.OrdNumber, B.Period_ID, PS.VATDate$Date,
        B.RoundingWithoutVAT, B.LocalRoundingWithoutVAT, B.RoundingAmount, B.LocalRoundingAmount,
        SUBSTRING(B.Description FROM 1 FOR 160) as Text, SUBSTRING(B.Description FROM 1 FOR 50) as Description, B.Firm_ID, VP.Division_ID, B.BusOrder_ID, B.BusTransaction_ID, B.BusProject_ID,
        999999 as POSIndex, B.ID as Document_ID, B.RefundedDoc_ID, F.VATIdentNumber, B.POSSummaredDocument_ID
      FROM
        POSDocuments B
        join POSSummaredDocuments ps on ps.id = b.POSSummaredDocument_ID
        join VATIndexes vi ON vi.ID = (SELECT MAX(VATIndex_ID) FROM POSVATIndexes WHERE VATRate_ID = B.RoundingVATRate_ID)
        join VirtualPOSS vp on vp.ID = b.VirtualPOS_ID
        join Firms F on F.ID = B.Firm_ID
      WHERE
        B.RoundingVATRate_ID IS NOT NULL and
        PS.VATDocument = 'A' and VI.ID IS NOT NULL and
        PS.VATDate$Date >= :AVATDateFrom and PS.VATDate$Date < :AVATDateTo 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, :VATDate$Date,
        :TAmountWithoutVAT, :LocalTAmountWithoutVAT, :TAmount, :LocalTAmount,
        :Text, :Description, :Firm_ID, :Division_ID, :BusOrder_ID, :BusTransaction_ID, :BusProject_ID,
        :PosIndex, :Document_ID, :SourceDoc_ID, :mVATIdentNumber, :POSSumDoc_ID
    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 (LocalTAmountWithoutVAT = 0) THEN LocalTAmountWithoutVAT = TAmountWithoutVAT;
        IF (LocalTAmount = 0) THEN LocalTAmount = TAmount;
        SourceDocType = '';
        IF (SourceDoc_ID IS NOT NULL) THEN SourceDocType = 'PD';
        SimplifiedVATDocument = 'A';
        IF (mVATIdentNumber <> '') THEN SimplifiedVATDocument = 'N';
        VATAdmitDate$DATE = VATDate$DATE;
        SUSPEND;
      END
    END
    
  END
END

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