vitexsoftware/digest-modules

Data collection modules for accounting system digest reports

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/vitexsoftware/digest-modules

dev-main 2025-11-09 15:01 UTC

This package is auto-updated.

Last update: 2025-11-09 15:01:47 UTC


README

Modular Analytics Library for Accounting Systems

A standalone PHP library that provides data collection and analytics modules for accounting systems, returning structured JSON data for further processing or visualization.

🎯 Overview

DigestModules is the data collection engine that:

  • πŸ”Œ Connects to accounting systems (AbraFlexi, Pohoda, Money S3, etc.)
  • πŸ“ˆ Analyzes business data (invoices, customers, payments, etc.)
  • πŸ“‹ Returns structured JSON (no HTML - pure data layer)
  • 🧩 Modular architecture (easy to extend with new analytics)
  • πŸ”„ System-agnostic design (works across different accounting platforms)

✨ Key Features

  • 🎯 Pure Data Layer: Returns JSON arrays - no HTML generation
  • πŸ”Œ Multiple Providers: AbraFlexi, Pohoda, and custom system support
  • πŸ“Š Built-in Analytics: Invoice analysis, debt monitoring, financial insights
  • 🧩 Modular Design: Easy to add new modules and data sources
  • ⚑ Performance: Optimized queries with caching support
  • πŸ›‘οΈ Type Safe: Full PHP 8.1+ type declarations with strict types
  • πŸ“ PSR-4 Compliant: Follows PHP-FIG standards
  • πŸ” Comprehensive Testing: PHPUnit test coverage

πŸš€ Quick Start

Installation

# Via Composer
composer require vitexsoftware/digest-modules

# Via Debian Package  
sudo apt install php-vitexsoftware-digest-modules

Basic Usage

<?php
use VitexSoftware\DigestModules\Core\ModuleRunner;
use VitexSoftware\DigestModules\Providers\AbraFlexiDataProvider;

// Connect to your accounting system
$dataProvider = new AbraFlexiDataProvider(
    'https://your-abraflexi.com',
    'username', 
    'password'
);

// Run analytics modules
$runner = new ModuleRunner($dataProvider);

// Get invoice analysis as JSON
$invoiceData = $runner->runModule('outcoming_invoices');
echo json_encode($invoiceData, JSON_PRETTY_PRINT);

// Get debtor analysis  
$debtorData = $runner->runModule('debtors');
echo json_encode($debtorData, JSON_PRETTY_PRINT);

Expected JSON Output

{
    "module": "outcoming_invoices",
    "heading": "Outcoming Invoices Analysis",
    "summary": {
        "total_amount": 125000.50,
        "currency": "CZK", 
        "count": 45,
        "processing_time": 0.234
    },
    "details": [
        {
            "customer": "ACME Corp",
            "amount": 25000.00,
            "date": "2024-12-15",
            "status": "paid"
        }
    ],
    "metadata": {
        "generated_at": "2024-12-23T10:30:45+01:00",
        "provider": "AbraFlexiDataProvider", 
        "system_version": "2023.1"
    }
}

// Create module runner $runner = new ModuleRunner($dataProvider);

// Add modules $runner->addModule('outcoming_invoices', \VitexSoftware\DigestModules\Modules\OutcomingInvoices::class); $runner->addModule('debtors', \VitexSoftware\DigestModules\Modules\Debtors::class);

// Process data for a time period $period = new \DatePeriod( new \DateTime('2024-01-01'), new \DateInterval('P1M'), new \DateTime('2024-02-01') );

$results = $runner->run($period);

// Get JSON output echo json_encode($results, JSON_PRETTY_PRINT);


## Module Structure

Each module returns structured data in this format:

```php
[
    'module_name' => 'outcoming_invoices',
    'heading' => 'Outcoming Invoices',
    'period' => [
        'start' => '2024-01-01',
        'end' => '2024-02-01'
    ],
    'success' => true,
    'data' => [
        'summary' => [
            'total_count' => 150,
            'total_amount' => 250000.50,
            'currency' => 'CZK'
        ],
        'by_type' => [...],
        'details' => [...]
    ],
    'metadata' => [
        'processing_time' => 0.123,
        'timestamp' => '2024-01-15T10:30:00Z'
    ]
]

Available Modules

  • OutcomingInvoices: Analyzes issued invoices
  • IncomingInvoices: Analyzes received invoices
  • Debtors: Tracks unpaid invoices and overdue amounts
  • NewCustomers: Identifies new customers in period
  • BestSellers: Top-selling products/services
  • WaitingPayments: Outstanding payments

Data Providers

  • AbraFlexiDataProvider: For AbraFlexi accounting system
  • PohodaDataProvider: For Pohoda accounting system (planned)
  • MoneyS3DataProvider: For Money S3 accounting system (planned)

Extending

Create custom modules by implementing ModuleInterface:

class CustomModule implements ModuleInterface
{
    public function process(DataProviderInterface $provider, \DatePeriod $period): array
    {
        // Your data collection logic
        return [
            'module_name' => 'custom_module',
            'heading' => 'Custom Analysis',
            'success' => true,
            'data' => $analyzedData
        ];
    }
}

License

GPL-2.0-or-later