Procedura-SimpleCashBookPOS

Parametry:

NázevPopisDatový typ
ADateFrom$DATEFloat(0, 0)
ADateTo$DATEFloat(0, 0)
APOS_IT_IDChar(10)

Návratové hodnoty:

NázevPopisDatový typ
CategoryInteger
DocDate$DATEFloat(0, 0)
CashCreditNumeric(15, 2)
CashDebitNumeric(15, 2)
ThroughItemCreditNumeric(15, 2)
ThroughItemDebitNumeric(15, 2)
VATCreditNumeric(15, 2)
VATDebitNumeric(15, 2)
IncomeType_IDChar(10)
ExpenseType_IDChar(10)
TextVarChar(100)
DocumentTypeChar(2)
Document_IDChar(10)
AmountNumeric(15, 2)
DocumentDisplayNameVarChar(24)
ErrorInteger
SORT_DocumentDisplayNameVarChar(28)

Tělo:

begin
  DocumentType = 'PS';
  Category = 0;
  CashDebit = 0;
  VATDebit = 0;
  ThroughItemCredit = 0;
  ThroughItemDebit = 0;
  IncomeType_ID = APOS_IT_ID;
  ExpenseType_ID = Null;
  Error = 0;
  IF ((IncomeType_ID is Null) or (IncomeType_ID='A000000000')) THEN
    Error = 1;
  IF (ADateFrom$DATE < 42736) THEN
  BEGIN 
    FOR
      SELECT B.DocDate$DATE, A.LocalPayment, A.LocalVATAmount,
        B.Description, B.ID, A.LocalPayment - A.LocalVATAmount,
        D.Code || '-' || B.OrdNumber || '/' || P.Code, D.Name,
        D.Code || '-' || IB_LPad(B.OrdNumber, 8, '0') || '/' || P.Code
      FROM POSSummaredDocuments4 A
      JOIN PaymentTypes PT ON PT.ID = A.PaymentType_ID
      JOIN POSSummaredDocuments B ON B.ID = A.Parent_ID
      JOIN DocQueues D ON D.ID = B.DocQueue_ID
      JOIN Periods P ON P.ID = B.Period_ID
      WHERE
        (PT.PaymentKind = 1) and (B.DocDate$DATE < :ADateTo$DATE) and (B.DocDate$DATE >= :ADateFrom$DATE)
    INTO
      :DocDate$DATE, :CashCredit, :VATCredit, :Text, :Document_ID, :Amount, :DocumentDisplayName, :mText, :Sort_DocumentDisplayName
    DO BEGIN
      IF (Text = '') THEN
        Text = mText;  
      SUSPEND;
    END
  END
  ELSE
  BEGIN
    /* od 1.1.2017 se doklady z POSu vykazuji v deniku novym zpusobem */
    FOR
      SELECT A.DocDate$DATE, A.LocalAmount, A.LocalAmount - A.LocalAmountWithoutVAT,
        A.Description, A.ID, A.LocalAmountWithoutVAT,
        D.Code || '-' || A.OrdNumber || '/' || P.Code, D.Name,
        D.Code || '-' || IB_LPad(A.OrdNumber, 8, '0') || '/' || P.Code
      FROM POSSummaredDocuments A
      JOIN DocQueues D ON D.ID = A.DocQueue_ID
      JOIN Periods P ON P.ID = A.Period_ID
      WHERE
        (A.DocDate$DATE<:ADateTo$DATE) and (A.DocDate$DATE>=:ADateFrom$DATE)
    INTO
      :DocDate$DATE, :CashCredit, :VATCredit, :Text, :Document_ID, :Amount, :DocumentDisplayName, :mText, :Sort_DocumentDisplayName
    DO BEGIN
      IF (Text = '') THEN
        Text = mText;  
      SUSPEND;
    END
  END
  /* A jeste hotovostni Vydeje z pokladniho prodeje */
  /* bez plateb dokladu */
  DocumentType = 'CP';
  Category = 1;
  CashCredit = 0;
  VATCredit = 0;
  VATDebit = 0;
  ThroughItemDebit = 0;
  Amount = 0;
  IncomeType_ID = Null;
  ExpenseType_ID = 'A000000000';
  Error = 0;
  IF (ADateFrom$DATE < 42736) THEN
  BEGIN
    FOR 
      SELECT B.DocDate$DATE, B.LocalAmount, B.LocalAmount,
        B.Description, B.ID, D.Code || '-' || B.OrdNumber || '/' || P.Code, D.Name,
        D.Code || '-' || IB_LPad(B.OrdNumber, 8, '0') || '/' || P.Code
      FROM POSCashPaid B
      JOIN PaymentTypes PT ON PT.ID = B.PaymentType_ID
      JOIN DocQueues D ON D.ID = B.DocQueue_ID
      JOIN Periods P ON P.ID = B.Period_ID
      WHERE
        (PT.PaymentKind = 1) and (B.DocDate$DATE < :ADateTo$DATE) and (B.DocDate$DATE >= :ADateFrom$DATE)
        AND (B.PDocument_ID IS NULL)
    INTO
      :DocDate$DATE, :CashDebit, :ThroughItemCredit, :Text, :Document_ID, :DocumentDisplayName, :mText, :Sort_DocumentDisplayName
    DO BEGIN
      IF (Text = '') THEN
        Text = mText;  
      SUSPEND;
    END
  END
  ELSE
  BEGIN
  /* od 1.1.2017 se doklady z POSu vykazuji v deniku novym zpusobem */
    FOR
      SELECT B.DocDate$DATE, B.LocalAmount, B.LocalAmount,
        B.Description, B.ID, D.Code || '-' || B.OrdNumber || '/' || P.Code, D.Name,
        D.Code || '-' || IB_LPad(B.OrdNumber, 8, '0') || '/' || P.Code
      FROM POSCashPaid B
      JOIN PaymentTypes PT ON PT.ID = B.PaymentType_ID
      JOIN DocQueues D ON D.ID = B.DocQueue_ID
      JOIN Periods P ON P.ID = B.Period_ID
      WHERE
        (B.DocDate$DATE<:ADateTo$DATE) and (B.DocDate$DATE>=:ADateFrom$DATE)
        AND (B.PDocument_ID IS NULL)
    INTO
      :DocDate$DATE, :CashDebit, :ThroughItemCredit, :Text, :Document_ID, :DocumentDisplayName, :mText, :Sort_DocumentDisplayName
    DO BEGIN
      IF (Text = '') THEN
        Text = mText;  
      SUSPEND;
    END
  END
  /* A jeste hotovostni Prijmy do pokladniho prodeje */
  /* bez plateb dokladu */
  DocumentType = 'CR';
  Category = 0;
  CashDebit = 0;
  VATCredit = 0;
  VATDebit = 0;
  ThroughItemCredit = 0;
  Amount = 0;
  IncomeType_ID = 'A000000000';
  ExpenseType_ID = Null;
  Error = 0;
  FOR
    SELECT B.DocDate$DATE, B.LocalAmount, B.LocalAmount,
      B.Description, B.ID, D.Code || '-' || B.OrdNumber || '/' || P.Code, D.Name,
      D.Code || '-' || IB_LPad(B.OrdNumber, 8, '0') || '/' || P.Code
    FROM POSCashReceived B
    JOIN DocQueues D ON D.ID = B.DocQueue_ID
    JOIN Periods P ON P.ID = B.Period_ID
    WHERE
      (B.DocDate$DATE<:ADateTo$DATE) and (B.DocDate$DATE>=:ADateFrom$DATE)
      AND (B.PDocument_ID IS NULL)
  INTO
    :DocDate$DATE, :CashCredit, :ThroughItemDebit, :Text, :Document_ID, :DocumentDisplayName, :mText, :Sort_DocumentDisplayName
  DO BEGIN
    IF (Text = '') THEN
      Text = mText;  
    SUSPEND;
  END
end

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