initial commit, code generated by AI
This commit is contained in:
commit
872ca92934
3 changed files with 85 additions and 0 deletions
28
class/actions_czqrpay.class.php
Normal file
28
class/actions_czqrpay.class.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
require_once DOL_DOCUMENT_ROOT.'/custom/czqrpay/lib/czqrpay.lib.php';
|
||||
|
||||
class ActionsCzQrPay
|
||||
{
|
||||
function addMoreActionsButtons($parameters, &$object, &$action, $hookmanager)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
function beforePDFCreation($parameters, &$object, &$action, $hookmanager)
|
||||
{
|
||||
global $db, $pdf;
|
||||
|
||||
if ($object->element != 'facture') return 0;
|
||||
|
||||
$account = czqrpay_get_bank_account($db);
|
||||
if (!$account) return 0;
|
||||
|
||||
$vs = preg_replace('/\D/', '', $object->ref);
|
||||
$msg = "Faktura ".$object->ref;
|
||||
$spd = czqrpay_build_spd($account, $object->total_ttc, $vs, $msg);
|
||||
|
||||
$pdf->write2DBarcode($spd, 'QRCODE,M', 160, 230, 35, 35);
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
23
core/modules/modCzQrPay.class.php
Normal file
23
core/modules/modCzQrPay.class.php
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
|
||||
|
||||
class modCzQrPay extends DolibarrModules
|
||||
{
|
||||
public function __construct($db)
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->numero = 104000;
|
||||
$this->rights_class = 'czqrpay';
|
||||
|
||||
$this->family = "financial";
|
||||
$this->name = 'czqrpay';
|
||||
$this->description = "CZ QR Platba (SPD) for invoices and POS";
|
||||
$this->version = '0.1';
|
||||
$this->const_name = 'MAIN_MODULE_CZQRPAY';
|
||||
$this->picto = 'payment';
|
||||
|
||||
$this->module_parts = array(
|
||||
'hooks' => array('invoicecard','pdfgeneration','posreceipt')
|
||||
);
|
||||
}
|
||||
}
|
||||
34
lib/czqrpay.lib.php
Normal file
34
lib/czqrpay.lib.php
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<?php
|
||||
|
||||
function czqrpay_get_bank_account($db)
|
||||
{
|
||||
$sql = "SELECT rowid, iban, account_number FROM ".MAIN_DB_PREFIX."bank_account";
|
||||
$resql = $db->query($sql);
|
||||
|
||||
if ($resql) {
|
||||
while ($obj = $db->fetch_object($resql)) {
|
||||
if (!empty($obj->account_number)) return $obj->account_number;
|
||||
if (!empty($obj->iban)) return czqrpay_iban_to_cz($obj->iban);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function czqrpay_iban_to_cz($iban)
|
||||
{
|
||||
$iban = str_replace(' ', '', $iban);
|
||||
if (substr($iban, 0, 2) !== 'CZ') return null;
|
||||
|
||||
$bank = substr($iban, 4, 4);
|
||||
$prefix = ltrim(substr($iban, 8, 6), '0');
|
||||
$account = ltrim(substr($iban, 14, 10), '0');
|
||||
|
||||
if ($prefix) return "$prefix-$account/$bank";
|
||||
return "$account/$bank";
|
||||
}
|
||||
|
||||
function czqrpay_build_spd($account, $amount, $vs, $msg)
|
||||
{
|
||||
$amount = number_format($amount, 2, '.', '');
|
||||
return "SPD*1.0*ACC:$account*AM:$amount*CC:CZK*X-VS:$vs*MSG:$msg";
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue