π§Ύ Deleted Checks β Audit Trail (SAFE)
October 11, 2025 Β· View on GitHub
Qlik Sense load script and demo app for building an audit trail of Issued β Deleted β Reissued checks with fiscal context and deposit rollups by JRNO. Ships with synthetic sample data and privacy-safe fieldsβno connections, secrets, or real customer data required.
β¨ What you get
-
Qlik script that transforms raw check activity into an event stream:
Events_Final(Issued / Deleted / Reissued with timestamps)CheckSummary(per-check rollup)DepositByJRNO/DepositSummary(deposit totals excluding deletes)
-
Fiscal calendar join + period/quarter/year fields
-
Reissue intelligence (prev voucher mapping, amount deltas, backdating flags)
-
Masked payer fields option for safe sharing
-
Demo dashboard layout notes + KPI expressions
π Quick start (demo with CSVs)
-
Clone or download this repo.
-
In Qlik (Cloud, Server, or Desktop):
-
Create a Folder connection named
Transferpointing to:.../Deleted-Checks-Audit-Trail/sample/ -
(Optional) Create a Folder connection
__TEMP__for local STORE outputs.
-
-
Open or create an app, go to Data load editor, and paste the script from:
src/DeletedChecks_AuditTrail_SAFE.qvs -
Click Load data.
-
Build or import the dashboard sheet (see βDashboard outlineβ below) and take a screenshot if you want to update the README image.
π¦ Repo layout
/sample/
CALENDAR_MASTER.csv # fiscal calendar (daily rows)
DeletedChecks.csv # check activity (synthetic)
/src/
DeletedChecks_AuditTrail_SAFE.qvs
LICENSE
README.md
SECURITY.md
.gitignore
assets/
qlik-dashboard-preview.png # <-- add your screenshot here
π§ Data model (sample schema)
CALENDAR_MASTER.csv
| Column | Example | Notes |
|---|---|---|
| %InvDate.Key | 1/2/2024 | calendar date (M/D/YYYY) |
| FiscalPeriod | 2024-01 | YYYY-MM |
| PeriodID | 2024-01 | YYYY-MM |
| FiscalYear | 2024 | |
| FiscalQuarter | Q1 | Q1..Q4 |
| Date | 1/2/2024 | duplicate of key for demos |
DeletedChecks.csv
| Column | Example |
|---|---|
| Company, Division, BankID | 300, 100, 001 |
| CheckNumber | CHK01000 |
| Payer | 10017 |
| PaymentAmt | 1234.56 |
| VoucherSeriesNum, VoucherNum | 001, 20000005 |
| YearNum | 2024 |
| AccountingDate | 20240305 |
| Deletion_Date | 1709769600 |
| Original_Check_Creation_Date | 1709251200 |
| Reversal_Voucher_Num | 20000001 |
| JRNO, JSNO | 132, 2 |
| Status | Issued/Deleted/Reissued |
| CUNM | Acme Dental |
Note: Epoch second columns may be blank for some rows. The script safely converts them to timestamps.
π§© How it works (high-level)
-
Calendar: Load calendar CSV β derive
%DateKey,FiscalPeriod/Quarter/Year. -
Source: Load
DeletedChecks.csvand normalize dates/amounts. -
Reissue mapping: Use
Reversal_Voucher_Num+ series to link prior vouchers. -
Events: Emit three event rows per check where applicable:
Issued(creation ts),Deleted(deletion ts),Reissued(new issue ts)
-
Flags:
AmountChanged,BackdatedReissue,OrphanPrev. -
Summaries:
CheckSummaryandDepositByJRNO/DepositSummary.
π Dashboard outline (what to build)
Sheet: Audit Trail β Overview
-
KPIs
- Checks Audited:
Count(DISTINCT %CheckKey) - Net Amount:
Num(Sum(CheckAmount),'$#,##0.00') - Reissued (count):
Count({<AuditStep={'Reissued'}>} DISTINCT %CheckKey) - Deleted (abs #,##0.00')`
- Reissue Rate:
Num( Count(DISTINCT {<AuditStep={'Reissued'}>} %CheckKey) / Count(DISTINCT %CheckKey), '0.0%' )
- Checks Audited:
-
Bar: Event Breakdown
-
Dim:
AuditStep; Meas:Sum(CheckAmount) -
Color by expression:
If(AuditStep='Issued', RGB(33,158,188), If(AuditStep='Reissued', RGB(144,190,109), If(AuditStep='Deleted', RGB(230,57,70), RGB(160,160,160))))
-
-
Area/Line: Amount over Fiscal Period
- Dim:
Accounting_FiscalPeriod - Meas:
Num(Sum(CheckAmount),'$#,##0') - Reference line at 0
- Dim:
-
Top 10 by Net $ (Table)
- Dim:
PayerName(masked in public demos if desired) - Meas:
Num(Sum(CheckAmount),'$#,##0') - Dimension limit β Top 10 (include βOthersβ)
- Dim:
-
Filters:
FiscalYear,FiscalQuarter,FiscalPeriod,AuditStep,BankID,Division,JRNO
Sheet: Reissue Analyzer (optional)
- KPIs:
Sum(AmountChanged),Sum(BackdatedReissue),Sum(OrphanPrev) - Table:
PrevVoucherNumβVoucherNumwithPrev_CheckAmount,CheckAmount,Prev_OriginalCreationTS,EventTS - Chart: Backdated counts by
Accounting_FiscalPeriod
π Privacy & safety
-
Use sample CSVs in
/sample/for public sharing (already synthetic). -
If you adapt for your environment, do not commit:
- Connection strings/DSNs, QVD/QVF outputs, private data
-
See SECURITY.md for guidance;
.gitignoreexcludes common artifacts.
π Troubleshooting
- Field not found on calendar imports β your CSV editor may add a BOM or tweak headers. This repoβs script uses positional loads for maximum compatibility.
- Locale issues with function separators β switch
,to;inNum()if your Qlik locale uses semicolons. - No data shown β confirm your Transfer folder connection points to
/sample/.
π License
MIT β see LICENSE. Attribution appreciated if you find this useful π
π Contributing
Issues and PRs welcome (typos, improvements, or additional demo visuals). Ideas: optional partial reissue chains, per-payer risk scores, or a Qlik story mode.