PHPackages                             vitexsoftware/abraflexi-reminder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. vitexsoftware/abraflexi-reminder

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

vitexsoftware/abraflexi-reminder
================================

Reminder sender for AbraFlexi written in PHP

v1.7.3(1mo ago)642[9 issues](https://github.com/VitexSoftware/abraflexi-reminder/issues)[5 PRs](https://github.com/VitexSoftware/abraflexi-reminder/pulls)MITPHPCI passing

Since Nov 27Pushed 4w ago3 watchersCompare

[ Source](https://github.com/VitexSoftware/abraflexi-reminder)[ Packagist](https://packagist.org/packages/vitexsoftware/abraflexi-reminder)[ Patreon](https://www.patreon.com/VitexSoftware)[ RSS](/packages/vitexsoftware-abraflexi-reminder/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (5)Dependencies (17)Versions (18)Used By (0)

AbraFlexi Reminder / Odesílač upomínek pro AbraFlexi
====================================================

[](#abraflexi-reminder--odesílač-upomínek-pro-abraflexi)

[![Package Logo](abraflexi-reminder.svg?raw=true "Project Logo")](abraflexi-reminder.svg?raw=true)

[![License](https://camo.githubusercontent.com/7013272bd27ece47364536a221edb554cd69683b68a46fc0ee96881174c4214c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667)](LICENSE)[![PHP Version](https://camo.githubusercontent.com/744f8821cc27dec8b0013ade48179731a44eadf4f943e0b1d9ffcb93f80177de/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e322532422d626c75652e737667)](https://php.net)[![MultiFlexi Ready](https://camo.githubusercontent.com/4de5aaa38435a813de51f3c3d8d85a61f402830311040745c3870e74049b8807/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d756c7469466c6578692d72656164792d677265656e2e737667)](https://www.multiflexi.eu/)

A comprehensive reminder system for AbraFlexi that automatically sends payment reminders to customers with overdue invoices. Supports multiple notification methods including email, SMS, and Czech data boxes (ISDS).

Key Features
------------

[](#key-features)

- **PDF and ISDOC attachments** - Complete invoice documents
- **QR Payment codes** - Automatic QR code generation for easy payments (optional)
- **Extensible notification system** - Add custom modules for SMS sending or service disconnection
- **Configurable email size limits** - Prevent large emails from being rejected
- **Document type blacklisting** - Skip specific document types (e.g., credit notes)
- **Label-based control** - Use labels like "NEUPOMINKOVAT" (DON'T REMIND) for fine-grained control
- **Multi-currency support** - Handle invoices in foreign currencies
- **Company logo integration** - Include your company logo in reminders
- **Internationalization** - Czech and English localization using gettext
- **Multiple deployment options** - Debian/Ubuntu packages, Docker, or manual installation
- **PHP 8.2+ compatibility** - Modern PHP support with strict typing

Příkaz **abraflexi-show-debts** pouze vypíše pohledávky dle jednotlivých dlužníků (export do json).

Příkaz **abraflexi-reminder** Po spuštění (vytvoří potřebné štítky a) zkontroluje v přednastavené firmě pohledávky. Při odeslání upomínky Pokud nemá zákazník nastaven štítek NEUPOMINKOVAT, je mu odeslána upomínka. příkaz je určen k automatickému spouštění každý den.

[![Upomínka](reminder-screenshot.png?raw=true "ukázka upomínky")](reminder-screenshot.png?raw=true)

Příkaz **abraflexi-inventarize** zašle klientům přehled jejich závazků. Předpokládá se jeho automatické spouštění jednou za měsíc.

Prohledávají se evidence "vydané faktury" a "pohledávky"

Funkce štítků
-------------

[](#funkce-štítků)

Štítky mají jak informativní tak řídící funkci. Po spuštění upomínkovače se nejprve se projdou všichni klienti a těm kteří nemají žádní neuhrazené pohledávky jsou odstraněny štítky UPOMINKA1,UPOMINKA2,UPOMINKA3 a NEPLATIC. Datum odeslání upomínky je zapisováno do jednotlivé faktury do sloupců `datUp1`,`datUp2` a `datSmir` - [více sloupců ve faktuře abraflexi na to není](https://demo.flexibee.eu/c/demo/faktura-vydana/properties). Avšak upomínaný je klient ne faktura a tuto skutečnost je třeba nějakým způsobem poznamenat. To se děje právě prostřednictvím štítku. Tzn. pokud má klient nastavený štítek `UPOMINKA1` a `UPOMINKA2` znamená to, že klientovi byly již odeslány dvě upomínky. Pro program to znamená že další odeslaná upomínka již bude pokus o smír. Současně je také informace o tom že upomínka byla opravdu odeslána. tzn. nenastaví se v případě že na zákazníka není znám email, nebo že poštovní server zrovna někdo rebootoval. Další týden po odeslání třetí upomínky se klientovi nastaví informativní štítek `NEPLATIC`

Upomínka Mailem
---------------

[](#upomínka-mailem)

Texty upomínek se mění ve abraflexi evidenci **sablona-upominky**A je poznamenán datum jejího odeslání a současně je zákazníkovi přiřazen štítek `UPOMINKA1-3`Odeslaná upomínka obsahuje přehled všech položek po splatnosti a k nim patřičné přílohy ve formátech pdf a isdocx

Upomínka SMS
------------

[](#upomínka-sms)

Upomínky je v současné době možné zasílat jako SMS prostřednictvím těchto metod:

- **místní gnokii** - na stejném stroji kde běží upomínkovač je nainstalována aplikace gnokii.
- **vzdálené gnokii** - gnokii je nainstalována na jiném stroji. Příkaz na něm je spouštěn prostřednictvím SSH s klíčem
- **Axfone SMS brána** - Vaše přihlašovací údaje zadejte do konfiguráku pod klíči **AXFONE\_USERNAME** a **AXFONE\_PASSWORD**
- **Huawei E5180 API** - Nastavte **MODEM\_PASSWORD** (případně **MODEM\_IP** pokud se liší od 192.168.8.1)

[![SMS Upomínka](reminder-sms-screenshot.png?raw=true "ukázka SMS upomínky")](reminder-sms-screenshot.png?raw=true)

jiná akce při upomínání
-----------------------

[](#jiná-akce-při-upomínání)

Do složky **src/AbraFlexi/Reminder/Notifier** ( /usr/lib/abraflexi-reminder/Reminder/Notifier/ v případě instalace z debianího balíčku ) je možné přidat další moduly vykonávající akci. Například odpojení neplatiče od služby atd. Jak takové doplňky psát by mělo být zřejmé z [ByEmail.php](src/AbraFlexi/Reminder/Notifier/ByEmail.php)

Installation / Instalace
------------------------

[](#installation--instalace)

### Debian/Ubuntu Packages

[](#debianubuntu-packages)

Pre-built .deb packages are available from the VitexSoftware repository:

```
sudo apt install lsb-release wget
echo "deb http://repo.vitexsoftware.com $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vitexsoftware.list
sudo wget -O /etc/apt/trusted.gpg.d/vitexsoftware.gpg http://repo.vitexsoftware.cz/keyring.gpg
sudo apt update
sudo apt install abraflexi-reminder
```

### Docker Installation

[](#docker-installation)

```
# Pull the image
docker pull vitexsoftware/abraflexi-reminder

# Run with environment configuration
docker run -d \
  --name abraflexi-reminder \
  --env-file .env \
  vitexsoftware/abraflexi-reminder
```

### Composer Installation

[](#composer-installation)

```
composer create-project vitexsoftware/abraflexi-reminder
cd abraflexi-reminder
cp example.env .env
# Edit .env with your configuration
./bin/abraflexi-reminder-init
```

### MultiFlexi Installation

[](#multiflexi-installation)

1. Access your MultiFlexi dashboard
2. Go to Applications → Add Application
3. Search for "AbraFlexi Reminder"
4. Click Install and configure environment variables
5. Set up scheduling for automatic execution

After installation, the following commands are available:

CommandPurposeDescription`abraflexi-show-debts`**Debt Overview**List all found receivables in JSON format`abraflexi-reminder`**Send Reminders**Main command to send payment reminders to debtors`abraflexi-notify-customers`**Customer Notifications**Send customers a list of their obligations (inventarization)`abraflexi-reminder-init`**Initialize Setup**Prepare the default company for use with the reminder system### Command Examples

[](#command-examples)

```
# Initialize the system (create required labels)
abraflexi-reminder-init

# Show current debts without sending reminders
abraflexi-show-debts

# Send reminders (production mode)
abraflexi-reminder

# Test mode - send all notifications to admin email
MUTE=true abraflexi-reminder

# Send monthly inventarization to customers
abraflexi-notify-customers
```

Configuration / Konfigurace
---------------------------

[](#configuration--konfigurace)

The application can be configured using:

1. Configuration file: `/etc/abraflexi/reminder.json`
2. Environment variables (recommended for containers and MultiFlexi)
3. Command line parameters

### Environment Variables

[](#environment-variables)

Copy and modify the `example.env` file to set up your configuration:

```
# Application Settings
APP_DEBUG=false
EASE_LOGGER=syslog
LANG=cs_CZ

# AbraFlexi Connection
ABRAFLEXI_URL=https://demo.flexibee.eu:5434
ABRAFLEXI_LOGIN=winstrom
ABRAFLEXI_PASSWORD=winstrom
ABRAFLEXI_COMPANY=demo_de

# Email Configuration
REMIND_FROM=noreply@yourdomain.net
EASE_MAILTO=info@yourdomain.net
MAIL_CC=accounting@yourdomain.net
MAX_MAIL_SIZE=1250000

# Reminder Settings
QR_PAYMENTS=true
ADD_LOGO=true
SURRENDER_DAYS=365
NO_REMIND_LABEL=NEUPOMINAT
REMINDER_SKIPDOCTYPE=DOBROPIS,ZDD
MUTE=false

# SMS Configuration
SMS_SENDER=+420739778202
SMS_ENGINE=gnokii
SMS_SIGNATURE=Your Company
GNOKII_HOST=sms@your-server.com

# Data Box (ISDS) Configuration
DATOVKA_LOGIN=your_databox_login
DATOVKA_PASSWORD=your_databox_password

# Huawei Modem Settings
MODEM_IP=192.168.8.1
MODEM_PASSWORD=admin

# Output Settings
RESULT_FILE=reminder_{ABRAFLEXI_COMPANY}.json
```

### Configuration Parameters

[](#configuration-parameters)

#### Core Settings

[](#core-settings)

- **APP\_DEBUG** - Enable debug mode (bool, default: false)
- **LANG** - Application locale (cs\_CZ or en\_US, default: cs\_CZ)
- **EASE\_LOGGER** - Logging method (memory|console|file|syslog|email|std|eventlog)

#### AbraFlexi Connection

[](#abraflexi-connection)

- **ABRAFLEXI\_URL** - AbraFlexi server URL (required)
- **ABRAFLEXI\_LOGIN** - AbraFlexi username (required)
- **ABRAFLEXI\_PASSWORD** - AbraFlexi password (required)
- **ABRAFLEXI\_COMPANY** - Company database name (required)

#### Email Configuration

[](#email-configuration)

- **REMIND\_FROM** - Sender email address for reminders (required)
- **EASE\_MAILTO** - Email for logs and reports when MUTE is enabled
- **MAIL\_CC** - Send copy of each reminder to this email
- **MAX\_MAIL\_SIZE** - Maximum email size in bytes (default: 1250000 = ~10MB)

#### Reminder Behavior

[](#reminder-behavior)

- **QR\_PAYMENTS** - Include QR payment codes in reminders (bool, default: true)
- **ADD\_LOGO** - Include company logo in reminders (bool, default: true)
- **SURRENDER\_DAYS** - Skip processing cases older than this many days (integer, default: 365)
- **REMINDER\_SKIPDOCTYPE** - Comma-separated list of document types to ignore (e.g., "DOBROPIS,ZDD")
- **NO\_REMIND\_LABEL** - Label to skip reminders (default: "NEUPOMINAT")
- **MUTE** - Test mode - send notifications to EASE\_MAILTO instead of customers (bool, default: false)

#### SMS Configuration

[](#sms-configuration)

- **SMS\_ENGINE** - SMS sending method: none|gnokii|sshgnokii|axfone|huaweiapi
- **SMS\_SENDER** - Sender phone number (e.g., +420739778202)
- **SMS\_SIGNATURE** - Signature appended to SMS messages
- **GNOKII\_HOST** - Remote gnokii server (format: user@host)
- **AXFONE\_USERNAME** - Axfone API username
- **AXFONE\_PASSWORD** - Axfone API password
- **MODEM\_IP** - Huawei modem IP address (default: 192.168.8.1)
- **MODEM\_PASSWORD** - Huawei modem web interface password

#### Data Box (ISDS) Configuration

[](#data-box-isds-configuration)

- **DATOVKA\_LOGIN** - Czech Data Box login
- **DATOVKA\_PASSWORD** - Czech Data Box password

#### Output Settings

[](#output-settings)

- **RESULT\_FILE** - JSON report output file (default: reminder\_{ABRAFLEXI\_COMPANY}.json)

V případě že nepoužíváte debianí balíček ale pouze klonujete repozitář, je potřeba před prvním použitím spustit [skript Init.php](src/Init.php) který vytvoří štítky 'UPOMINKA1', 'UPOMINKA2', 'UPOMINKA3', 'NEPLATIC', 'NEUPOMINKOVAT'

ISDS Datové schránky
--------------------

[](#isds-datové-schránky)

- **DATOVKA\_LOGIN** - Přihlašovací jméno do datovky
- **DATOVKA\_PASSWORD** - Login do datovky

Upomínky a inventarizace jsou odesílány i do datovky pokud je tato nastavena v konfiguraci a dlužík má v adresáři nastavený štítek `DATA_BOX`

Dependencies / Závislosti
-------------------------

[](#dependencies--závislosti)

This application requires the following PHP libraries:

LibraryVersionPurpose[**PHP AbraFlexi**](https://github.com/Spoje-NET/php-abraflexi)^3.6Communication with AbraFlexi ERP system[**AbraFlexi Bricks**](https://github.com/VitexSoftware/php-abraflexi-bricks)^1.4Customer and document handling classes[**HTML2PDF**](https://github.com/spipu/html2pdf)^5.3PDF generation from HTML templates[**TCPDF**](https://github.com/tecnickcom/TCPDF)^6.10Advanced PDF processing[**Huawei API**](https://github.com/hsp-dev/huawei-api)dev-masterCommunication with Huawei modems[**Czech DataBox**](https://github.com/dfridrich/CzechDataBox)^1.3Czech ISDS data box integration### System Requirements

[](#system-requirements)

- **PHP**: 8.2 or higher
- **Extensions**: curl, json, mbstring, xml, zip
- **Optional**: gnokii (for SMS via mobile phones)
- **AbraFlexi**: Compatible version with REST API access

Troubleshooting
---------------

[](#troubleshooting)

### Common Issues

[](#common-issues)

#### MultiFlexi JSON Validation Errors

[](#multiflexi-json-validation-errors)

If you encounter validation errors during MultiFlexi deployment:

```
JSON does not validate Violation: [environment.*.type] Does not have a value in the enumeration

```

**Solution**: The JSON schema has been updated. Ensure you're using the latest version (1.7.3+) which includes the schema compliance fixes.

#### SMS Not Sending

[](#sms-not-sending)

- Check SMS\_ENGINE configuration
- Verify modem connectivity (for gnokii/huaweiapi)
- Test API credentials (for axfone)
- Check logs for detailed error messages

#### Email Delivery Issues

[](#email-delivery-issues)

- Verify SMTP configuration in AbraFlexi
- Check MAX\_MAIL\_SIZE if attachments are large
- Ensure REMIND\_FROM has proper sender reputation
- Test with MUTE=true first

#### AbraFlexi Connection Problems

[](#abraflexi-connection-problems)

- Verify ABRAFLEXI\_URL is accessible
- Check credentials and company database name
- Ensure AbraFlexi user has sufficient permissions
- Test connection with `abraflexi-show-debts` first

### Debug Mode

[](#debug-mode)

Enable debug mode for detailed logging:

```
export APP_DEBUG=true
export EASE_LOGGER=console
./bin/abraflexi-reminder
```

Mohlo by vás zajímat
--------------------

[](#mohlo-by-vás-zajímat)

-  - Párovač faktur
-  - Pravidelný souhrn vašeho AbraFlexi

Documentation
-------------

[](#documentation)

- **[API Documentation](docs/API.md)** - Developer guide and extension points
- **[Environment Variables](docs/environment-variables.md)** - Complete configuration reference
- **[Changelog](CHANGELOG.md)** - Version history and changes
- **[Update Script](docs/update-docs.sh)** - Documentation maintenance tool

Contributing
------------

[](#contributing)

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

Please ensure:

- All tests pass (`composer test`)
- Code follows PSR-12 standards (`composer fix-cs`)
- Documentation is updated
- MultiFlexi JSON files validate against schema

Acknowledgments / Poděkování
----------------------------

[](#acknowledgments--poděkování)

This project would not exist without the support of [Spoje.Net s.r.o.](http://spoje.net/)

[![Spoje.Net](https://raw.githubusercontent.com/VitexSoftware/php-abraflexi-reminder/master/logo-spojenet.png "Spoje.Net s.r.o.")](https://raw.githubusercontent.com/VitexSoftware/php-abraflexi-reminder/master/logo-spojenet.png)

HTML version of reminders and inclusion of other receivables was funded by [Medinet s.r.o.](http://medinetsro.cz/)

[![Medinet](https://raw.githubusercontent.com/VitexSoftware/php-abraflexi-reminder/master/mendinet-logo.png "Medinet s.r.o.")](https://raw.githubusercontent.com/VitexSoftware/php-abraflexi-reminder/master/mendinet-logo.png)

MultiFlexi Integration
----------------------

[](#multiflexi-integration)

AbraFlexi Reminder is fully compatible with [MultiFlexi](https://multiflexi.eu) platform and includes four ready-to-run applications:

ApplicationDescriptionUUID**Reminder**Main reminder sender for overdue invoices`0fd52fdd-1c83-4346-b9f9-13e82bd5d6d0`**Inventarize**Send customers overview of their obligationsAvailable in MultiFlexi**Clean Labels**Remove reminder labels from paid customersAvailable in MultiFlexi**Show Debts**Generate debts overview reportAvailable in MultiFlexi[![](abraflexi-inventarize.svg?raw=true)](abraflexi-inventarize.svg?raw=true)[![](abraflexi-reminder-clean-labels.svg?raw=true)](abraflexi-reminder-clean-labels.svg?raw=true)[![](abraflexi-reminder.svg?raw=true)](abraflexi-reminder.svg?raw=true)[![](abraflexi-show-debts.svg?raw=true)](abraflexi-show-debts.svg?raw=true)

### MultiFlexi Deployment

[](#multiflexi-deployment)

1. Install MultiFlexi platform
2. Add AbraFlexi Reminder from the application catalog
3. Configure environment variables through MultiFlexi interface
4. Schedule automatic execution

All applications are validated against MultiFlexi schema version 2.1.1 and support:

- Environment-based configuration
- Docker container deployment
- Automatic dependency management
- Integrated logging and monitoring

See the full list of ready-to-run applications within the MultiFlexi platform on the [application list page](https://www.multiflexi.eu/apps.php).

[![MultiFlexi App](https://github.com/VitexSoftware/MultiFlexi/raw/main/doc/multiflexi-app.svg)](https://www.multiflexi.eu/apps.php)

Recent Updates (v1.7.3)
-----------------------

[](#recent-updates-v173)

- **JSON Schema Compliance**: Fixed MultiFlexi application JSON validation issues
- **Type Safety**: Updated environment variable types to match schema requirements:
    - `boolean` → `bool` for APP\_DEBUG
    - `number` → `integer` for SURRENDER\_DAYS and OVERDUE\_PATIENCE
- **DataBox Improvements**: Enhanced Czech Data Box (ISDS) message sending
- **PHP 8.2+ Support**: Full compatibility with modern PHP versions
- **Strict Type Declarations**: Improved code reliability and performance

###  Health Score

44

—

FairBetter than 91% of packages

Maintenance74

Regular maintenance activity

Popularity10

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 89.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~455 days

Recently: every ~540 days

Total

7

Last Release

35d ago

Major Versions

0.9 → 1.22020-04-02

### Community

Maintainers

![](https://www.gravatar.com/avatar/f24039b55245f141b108d0245b5821fe6cc4bb0585e36283f97301cd3aa792bc?d=identicon)[vitex](/maintainers/vitex)

---

Top Contributors

[![Vitexus](https://avatars.githubusercontent.com/u/2621130?v=4)](https://github.com/Vitexus "Vitexus (203 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (24 commits)")

---

Tags

abraflexidebiandebtorsdebtwireflexibeephpubuntu

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/vitexsoftware-abraflexi-reminder/health.svg)

```
[![Health](https://phpackages.com/badges/vitexsoftware-abraflexi-reminder/health.svg)](https://phpackages.com/packages/vitexsoftware-abraflexi-reminder)
```

###  Alternatives

[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.6k38.2k](/packages/matomo-matomo)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.1k16.8k](/packages/prestashop-prestashop)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

749284.3k35](/packages/civicrm-civicrm-core)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

53675.5k15](/packages/solspace-craft-freeform)[sarfraznawaz2005/noty

Laravel package to incorporate noty flash notifications into laravel.

324.5k](/packages/sarfraznawaz2005-noty)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
