Ajout numéro SIREN/SIRET pour un client

This commit is contained in:
Jean-Christophe Engel 2024-01-11 20:41:19 +01:00
parent 438e9c6116
commit b6bb4fd80d
12 changed files with 65 additions and 6 deletions

View File

@ -1,3 +1,5 @@
0.8.5
- Ajout numéro SIREN/SIRET pour les clients
0.8.4
- Correction bug si identité définie par plusieurs champs
- Correction bug oubli choix receveur

View File

@ -26,6 +26,7 @@ $form->runIf(f('save') && !$form->hasErrors(),
'adresse' => f('adresse'),
'code_postal' => f('code_postal'),
'ville' => f('ville'),
'siret' => f('siret'),
'telephone' => f('telephone'),
'email' => f('email')
]);

View File

@ -16,6 +16,7 @@ $form->runIf(f('add') && !$form->hasErrors(),
'adresse' => f('adresse'),
'code_postal' => f('code_postal'),
'ville' => f('ville'),
'siret' => f('siret'),
'telephone' => f('telephone'),
'email' => f('email')
]);

View File

@ -92,7 +92,7 @@ if ($f->type_facture != CERFA)
'<b>'.$config->get('org_name')."</b><br>".
$adresse ."<br>".
(($t = $plugin->getConfig('rna_asso'))?"RNA : $t<br>":'').
(($t = $plugin->getConfig('siret_asso'))?"SIRET : $t<br>":'').
(($t = $plugin->getConfig('siret_asso'))?"SIRET : " . implode(' ', str_split($t, 3)) . "<br>":'').
(($t = $config->get('email_asso'))?"Email : $t<br>":'').
(($t = $config->get('site_asso'))?"Site web : $t<br>":'');
@ -101,6 +101,7 @@ if ($f->type_facture != CERFA)
'<b>'.$c->nom.'</b><br>'.
$c->adresse."<br>".
$c->code_postal.' '.$c->ville."<br>".
(($t = $c->siret)?"SIREN/SIRET : " . implode(' ', str_split($t, 3)) . "<br>":'').
(($t = $c->email)?"Email : $t<br>":'').
(($t = $c->telephone)?"Tel : $t<br>":'');

View File

@ -21,7 +21,7 @@ CREATE TABLE IF NOT EXISTS plugin_facturation_clients (
adresse TEXT NOT NULL,
code_postal TEXT NOT NULL,
ville TEXT NOT NULL,
-- date_creation INTEGER NOT NULL,
siret TEXT NOT NULL,
date_creation TEXT NOT NULL DEFAULT CURRENT_DATE CHECK (date(date_creation) IS NOT NULL AND date(date_creation) = date_creation), -- Date d\'inscription
telephone TEXT,
email TEXT

View File

@ -15,6 +15,7 @@ class Client
'adresse',
'code_postal',
'ville',
'siret',
'telephone',
'email'
];
@ -55,6 +56,10 @@ class Client
throw new UserException('Le code postal est erroné.');
}
}
elseif ($key == "siret")
{
$data[$key] = str_replace(' ', '', $data[$key]);
}
elseif ($key == "telephone")
{
$data[$key] = Utils::normalizePhoneNumber($data[$key]);
@ -84,7 +89,7 @@ class Client
if($this->config['unique_client_name'] && isset($data['nom']) && $db->test('plugin_facturation_clients', 'nom = ? COLLATE NOCASE', $data['nom']))
{
throw new UserException('La valeur du champ nom est déjà utilisée, hors ce champ doit être unique à chaque client.');
throw new UserException('La valeur du champ nom est déjà utilisée, or ce champ doit être unique à chaque client.');
}
$db->insert('plugin_facturation_clients', $data);
@ -122,6 +127,9 @@ class Client
'ville' => [
'label' => 'Ville',
],
'siret' => [
'label' => 'Siret',
],
'telephone' => [
'label' => 'Téléphone',
],
@ -150,7 +158,7 @@ class Client
if($this->config['unique_client_name'] && isset($data['nom']) && $db->test('plugin_facturation_clients', 'nom = ? COLLATE NOCASE AND id != ?', $data['nom'], (int)$id))
{
throw new UserException('La valeur du champ nom est déjà utilisée, hors ce champ doit être unique à chaque client.');
throw new UserException('La valeur du champ nom est déjà utilisée, or ce champ doit être unique à chaque client.');
}
return $db->update('plugin_facturation_clients', $data, $db->where('id', (int)$id));

View File

@ -432,7 +432,7 @@ class Facture
if(isset($data['numero']) && $db->test('plugin_facturation_factures', 'numero = ? COLLATE NOCASE AND id != ?', $data['numero'], (int)$id))
{
throw new UserException('Un document avec ce numéro existe déjà, hors le numéro doit être unique.');
throw new UserException('Un document avec ce numéro existe déjà, or le numéro doit être unique.');
}
return $db->update('plugin_facturation_factures', $data, $db->where('id', (int)$id));
}

View File

@ -2,7 +2,7 @@ name="Facturation"
description="Permet d'éditer des factures, devis et reçus à ses membres ainsi qu'à une base de clients supplémentaire."
author="zou ; adapté par jce"
url="https://git.roflcopter.fr/lesanges/paheko-plugin-facturation"
version="0.8.3"
version="0.8.5"
menu=true
restrict_section="accounting"
restrict_level="read"

View File

@ -18,6 +18,12 @@
<dt>Code postal</dt>
<dd>{$client.code_postal|escape|rtrim|nl2br}</dd>
<dt>SIREN/SIRET</dt>
<?php
$siret = implode(' ', str_split($client->siret, 3));
?>
<dd>{$siret|escape|trim}</dd>
<dt>Adresse électronique</dt>
<dd>
{if empty($client.email)}

View File

@ -11,6 +11,7 @@
{input type="text" name="adresse" label="Adresse" required=true source=$client}
{input type="text" name="code_postal" label="Code postal" required=true source=$client}
{input type="text" name="ville" label="Ville" required=true source=$client}
{input type="text" name="siret" label="SIREN/SIRET" required=true source=$client}
{input type="tel" name="telephone" label="Téléphone" source=$client}
{input type="email" name="email" label="Adresse e-mail" source=$client}
</dl>

View File

@ -13,6 +13,9 @@
{if $key == 'id' || $key == 'nom'}
<?php continue; ?>
{/if}
{if $key == 'siret'}
<?php $value = implode(' ', str_split($value, 3)); ?>
{/if}
<td>{$value}</td>
{/foreach}
<td class="actions">
@ -52,6 +55,7 @@
{input type="text" name="adresse" label="Adresse" required=true}
{input type="text" name="code_postal" label="Code postal" required=true}
{input type="text" name="ville" label="Ville" required=true}
{input type="text" name="siret" label="SIREN/SIRET" required=true}
{input type="tel" name="telephone" label="Téléphone"}
{input type="email" name="email" label="Adresse e-mail"}
</dl>

View File

@ -209,3 +209,38 @@ if (version_compare($old_version, '0.8.1', '<'))
{
$plugin->unregisterSignal('menu.item');
}
// 0.8.5 Ajout champs SIREN/SIRET à la table clients
if (version_compare($old_version, '0.8.5', '<'))
{
$db->exec(<<<EOT
CREATE TABLE IF NOT EXISTS plugin_facturation_clients_tmp
(
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
adresse TEXT NOT NULL,
code_postal TEXT NOT NULL,
ville TEXT NOT NULL,
siret TEXT NOT NULL,
date_creation TEXT NOT NULL DEFAULT CURRENT_DATE CHECK (date(date_creation) IS NOT NULL AND date(date_creation) = date_creation),
telephone TEXT,
email TEXT
);
EOT
);
// copier les clients dans la table temporaire en ajoutant un siret fictif
$sql = 'SELECT * FROM plugin_facturation_clients';
foreach ($db->iterate($sql) as $client)
{
$client->siret = "";
$db->insert('plugin_facturation_clients_tmp', $client);
}
// remplacer l'ancienne table par la nouvelle
$db->exec(<<<EOT
DROP TABLE plugin_facturation_clients;
ALTER TABLE plugin_facturation_clients_tmp RENAME TO plugin_facturation_clients;
EOT
);
}