Changes between Version 3 and Version 4 of AdvancedReports


Ignore:
Timestamp:
12/23/25 19:04:59 (10 days ago)
Author:
211101
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v3 v4  
    33===== Листа на трансакции кои го надминале балансот на една сметка подредени хронолошки
    44{{{#!sql
    5 WITH CumulativeBalances AS (
    6     SELECT
    7         t.transaction_id,
    8         t.transaction_name,
    9         t.date AS transaction_date,
    10         ta.account_name,
    11         u.user_id,
    12         u.user_name,
    13         tb.spent_amount AS transaction_amount,
    14         SUM(tb.earned_amount - tb.spent_amount) OVER (
    15             PARTITION BY ta.transaction_account_id
    16             ORDER BY t.date
    17         ) AS calculated_balance
    18     FROM
    19         transaction_account ta
    20     JOIN
    21         user u ON ta.user_id = u.user_id
    22     JOIN
    23         transaction_breakdown tb ON ta.transaction_account_id = tb.transaction_account_id
    24     JOIN
    25         transaction t ON tb.transaction_id = t.transaction_id
    26     WHERE
    27         ta.account_name = 'Specific Account Name' -- Може да се замени со специфично име на акаунт
     5CREATE OR REPLACE FUNCTION get_transactions_exceeding_account_balance(
     6    p_account_name TEXT
    287)
    29 SELECT
    30     user_id,
    31     user_name,
    32     account_name,
    33     transaction_id,
    34     transaction_name,
    35     transaction_amount,
    36     transaction_date,
    37     calculated_balance
    38 FROM
    39     CumulativeBalances
    40 WHERE
    41     transaction_amount > calculated_balance -- Трансакцијата го надминува пресметаниот баланс
    42     AND transaction_amount > 0
    43 ORDER BY
    44     user_id, account_name, transaction_date DESC;
     8RETURNS TABLE (
     9    user_id INT,
     10    user_name TEXT,
     11    account_name TEXT,
     12    transaction_id INT,
     13    transaction_name TEXT,
     14    transaction_amount NUMERIC,
     15    transaction_date TIMESTAMP,
     16    calculated_balance NUMERIC
     17)
     18LANGUAGE plpgsql
     19AS $$
     20BEGIN
     21    RETURN QUERY
     22    WITH cumulative_balances AS (
     23        SELECT
     24            u.user_id,
     25            u.user_name,
     26            ta.account_name,
     27            t.transaction_id,
     28            t.transaction_name,
     29            tb.spent_amount AS transaction_amount,
     30            t.date AS transaction_date,
     31            SUM(tb.earned_amount - tb.spent_amount)
     32                OVER (PARTITION BY ta.transaction_account_id ORDER BY t.date)
     33                AS calculated_balance
     34        FROM transaction_account ta
     35        JOIN "user" u ON ta.user_id = u.user_id
     36        JOIN transaction_breakdown tb ON ta.transaction_account_id = tb.transaction_account_id
     37        JOIN transaction t ON tb.transaction_id = t.transaction_id
     38        WHERE ta.account_name = p_account_name
     39    )
     40    SELECT *
     41    FROM cumulative_balances
     42    WHERE transaction_amount > calculated_balance
     43      AND transaction_amount > 0
     44    ORDER BY transaction_date DESC;
     45END;
     46$$;
     47
    4548}}}
    4649