105 lines
3.2 KiB
PHP
105 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace Paheko\Plugin\Facturation;
|
|
|
|
use Paheko\Config;
|
|
use Paheko\Utils;
|
|
|
|
define('DEVIS', 0);
|
|
define('FACT', 1);
|
|
define('CERFA', 2);
|
|
define('COTIS', 3);
|
|
|
|
const PATTERNS_LIST = [
|
|
'' => 'Aucun, le numéro sera à spécifier manuellement pour chaque document',
|
|
'%{type}-%{year}-%{ynumber}' => 'Type-Année-Numéro du document par année ("FACT-2021-42")',
|
|
'%{year}-%{type}-%04{ynumber}' => 'Année-Type-Numéro du document par année ("2021-DEVIS-0042")',
|
|
'%{t}-%{year}-%{ynumber}' => 'Type court-Année-Numéro du document par année ("F-2021-42")',
|
|
'%{y}%{t}%{ynumber}' => 'Année courte-Type court-Numéro du document par année ("21D42")',
|
|
'%{type}-%{id}' => 'Type - Numéro unique du document ("FACT-42")',
|
|
'%{t}%{id}' => 'Type court et numéro unique du document ("F42")',
|
|
'%{id}' => 'Numéro unique du document ("42"))',
|
|
'%06{id}' => 'Numéro unique du document sur 6 chiffres ("000042")',
|
|
];
|
|
|
|
function ensureSchemaColumns(): void
|
|
{
|
|
$db = \Paheko\DB::getInstance();
|
|
|
|
$tables = [
|
|
'plugin_facturation_clients' => [
|
|
'siret' => 'siret TEXT',
|
|
'telephone' => 'telephone TEXT',
|
|
'email' => 'email TEXT',
|
|
'nom_contact' => 'nom_contact TEXT',
|
|
'note' => 'note TEXT',
|
|
],
|
|
'plugin_facturation_factures' => [
|
|
'nom_contact' => 'nom_contact TEXT',
|
|
'numero_commande' => 'numero_commande TEXT',
|
|
'reference_acheteur' => 'reference_acheteur TEXT',
|
|
],
|
|
];
|
|
|
|
foreach ($tables as $table => $columns) {
|
|
$schema = $db->getTableSchema($table);
|
|
|
|
if (!$schema) {
|
|
continue;
|
|
}
|
|
|
|
foreach ($columns as $column => $definition) {
|
|
if (!isset($schema['columns'][$column])) {
|
|
$db->exec(sprintf('ALTER TABLE %s ADD COLUMN %s;', $db->quoteIdentifier($table), $definition));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ensureSchemaColumns();
|
|
|
|
$client = new Client;
|
|
$facture = new Facture;
|
|
|
|
$tpl->assign('www_url', \Paheko\WWW_URL);
|
|
$tpl->assign('f_obj', $facture);
|
|
|
|
|
|
$identite = implode(',', \Paheko\Users\DynamicFields::getNameFields());
|
|
|
|
$tpl->register_function('money_fac', function (array $params)
|
|
{
|
|
static $params_list = ['value', 'name', 'user'];
|
|
|
|
// Extract params and keep attributes separated
|
|
$attributes = array_diff_key($params, array_flip($params_list));
|
|
$params = array_intersect_key($params, array_flip($params_list));
|
|
extract($params, \EXTR_SKIP);
|
|
|
|
$current_value = null;
|
|
|
|
if (isset($value)) {
|
|
$current_value = $value;
|
|
}
|
|
|
|
if (!isset($user)) {
|
|
$user = false;
|
|
}
|
|
|
|
if (!isset($name))
|
|
{
|
|
$name = 'prix[]';
|
|
}
|
|
|
|
if (null !== $current_value && !$user) {
|
|
$current_value = Utils::money_format($current_value, ',', '');
|
|
}
|
|
|
|
if (null !== $current_value) {
|
|
$current_value = htmlspecialchars($current_value, ENT_QUOTES, 'UTF-8');
|
|
}
|
|
|
|
$currency = Config::getInstance()->get('currency');
|
|
return sprintf('<td><nobr><input type="text" pattern="[0-9]*([.,][0-9]{1,2})?" inputmode="decimal" size="8" class="money" style="width: 60%%" onchange="updateSum();" name="%s" value="%s" /><b>%s</b></nobr></td>', $name, $current_value, $currency);
|
|
}
|
|
);
|