118 lines
4.1 KiB
PHP
Executable file
118 lines
4.1 KiB
PHP
Executable file
<?php
|
|
/* Copyright (C) 2023 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
* Copyright (C) 2025 Eduard Wisch <data@data-it-solution.de>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/**
|
|
* \file core/triggers/interface_99_modEpcqr_EpcqrTriggers.class.php
|
|
* \ingroup epcqr
|
|
* \brief Example of trigger file.
|
|
*
|
|
* You can create other triggered files by copying this one.
|
|
* - File name should be either:
|
|
* - interface_99_modEpcqr_MyTrigger.class.php
|
|
* - interface_99_all_MyTrigger.class.php
|
|
* - The file must stay in core/triggers
|
|
* - The class name must be InterfaceMyTrigger
|
|
*/
|
|
|
|
require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php';
|
|
|
|
|
|
/**
|
|
* Class of triggers for Epcqr module
|
|
*/
|
|
class InterfaceEpcqrTriggers extends DolibarrTriggers
|
|
{
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param DoliDB $db Database handler
|
|
*/
|
|
public function __construct($db)
|
|
{
|
|
parent::__construct($db);
|
|
$this->family = "demo";
|
|
$this->description = "Epcqr triggers.";
|
|
$this->version = self::VERSIONS['dev'];
|
|
$this->picto = 'epcqr@epcqr';
|
|
}
|
|
|
|
/**
|
|
* Function called when a Dolibarr business event is done.
|
|
* All functions "runTrigger" are triggered if the file is inside the directory core/triggers
|
|
*
|
|
* @param string $action Event action code
|
|
* @param CommonObject $object Object
|
|
* @param User $user Object user
|
|
* @param Translate $langs Object langs
|
|
* @param Conf $conf Object conf
|
|
* @return int Return integer <0 if KO, 0 if no triggered ran, >0 if OK
|
|
*/
|
|
public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf)
|
|
{
|
|
if (!isModEnabled('epcqr')) {
|
|
return 0; // If module is not enabled, we do nothing
|
|
}
|
|
|
|
// Put here code you want to execute when a Dolibarr business events occurs.
|
|
// Data and type of action are stored into $object and $action
|
|
|
|
// You can isolate code for each action in a separate method: this method should be named like the trigger in camelCase.
|
|
// For example : COMPANY_CREATE => public function companyCreate($action, $object, User $user, Translate $langs, Conf $conf)
|
|
$methodName = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', strtolower($action)))));
|
|
$callback = array($this, $methodName);
|
|
if (is_callable($callback)) {
|
|
dol_syslog(
|
|
"Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id
|
|
);
|
|
|
|
return call_user_func($callback, $action, $object, $user, $langs, $conf);
|
|
}
|
|
|
|
// Or you can execute some code here
|
|
switch ($action) { // @phan-suppress-current-line PhanNoopSwitchCases
|
|
// Bills - QR-Code Generierung bei Rechnungsvalidierung
|
|
case 'BILL_VALIDATE':
|
|
|
|
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
|
|
|
// WICHTIG: Objekt neu laden, um finale Rechnungsnummer zu bekommen
|
|
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
|
$invoice = new Facture($this->db);
|
|
$result = $invoice->fetch($object->id);
|
|
|
|
if ($result > 0) {
|
|
// QR-Code lokal generieren
|
|
require_once __DIR__.'/../../lib/epcqr.lib.php';
|
|
$qrResult = epcqr_generateQRCodeForInvoice($invoice, $this->db);
|
|
|
|
if ($qrResult) {
|
|
dol_syslog("QR-Code erfolgreich generiert für Rechnung ".$invoice->ref, LOG_INFO);
|
|
} else {
|
|
dol_syslog("Fehler beim Generieren des QR-Codes für Rechnung ".$invoice->ref, LOG_ERR);
|
|
// Nicht abbrechen, Rechnung ist trotzdem validiert
|
|
}
|
|
} else {
|
|
dol_syslog("Fehler beim Neuladen der Rechnung", LOG_ERR);
|
|
return -1;
|
|
}
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|