Ajout champ contact à la fiche client

This commit is contained in:
Jean-Christophe Engel 2025-03-25 20:49:24 +01:00
parent aff20099aa
commit 4aafa3f44f
12 changed files with 47 additions and 7 deletions

View File

@ -344,6 +344,7 @@ $tpl->assign('date', $date->format('d/m/Y'));
$tpl->assign(compact('liste', 'radio', 'step', 'designations', 'prix', 'from_user', 'identite', 'csrf_key', 'doc')); $tpl->assign(compact('liste', 'radio', 'step', 'designations', 'prix', 'from_user', 'identite', 'csrf_key', 'doc'));
$tpl->assign('users', toArray($db->get('SELECT id, '.$identite.' FROM users WHERE id_category != -2 NOT IN (SELECT id FROM users_categories WHERE hidden = 1) ORDER BY ' .$identite. ';'), 'id', " ")); $tpl->assign('users', toArray($db->get('SELECT id, '.$identite.' FROM users WHERE id_category != -2 NOT IN (SELECT id FROM users_categories WHERE hidden = 1) ORDER BY ' .$identite. ';'), 'id', " "));
$tpl->assign('clients', $db->getAssoc('SELECT id, nom FROM plugin_facturation_clients;')); $tpl->assign('clients', $db->getAssoc('SELECT id, nom FROM plugin_facturation_clients;'));
$tpl->assign('contacts', $db->getAssoc('SELECT id, nom_contact FROM plugin_facturation_clients;'));
$tpl->assign('require_number', $require_number); $tpl->assign('require_number', $require_number);
$tpl->assign('number_pattern', PATTERNS_LIST[$plugin->getConfig('pattern')]); $tpl->assign('number_pattern', PATTERNS_LIST[$plugin->getConfig('pattern')]);

View File

@ -29,6 +29,7 @@ $form->runIf(f('save') && !$form->hasErrors(),
'siret' => f('siret'), 'siret' => f('siret'),
'telephone' => f('telephone'), 'telephone' => f('telephone'),
'email' => f('email'), 'email' => f('email'),
'nom_contact' => f('nom_contact'),
'note' => f('note') 'note' => f('note')
]); ]);

View File

@ -19,6 +19,7 @@ $form->runIf(f('add') && !$form->hasErrors(),
'siret' => f('siret'), 'siret' => f('siret'),
'telephone' => f('telephone'), 'telephone' => f('telephone'),
'email' => f('email'), 'email' => f('email'),
'nom_contact' => f('nom_contact'),
'note' => f('note') 'note' => f('note')
]); ]);

View File

@ -28,6 +28,7 @@ CREATE TABLE IF NOT EXISTS plugin_facturation_clients (
date_creation TEXT NOT NULL DEFAULT CURRENT_DATE CHECK (date(date_creation) IS NOT NULL AND date(date_creation) = date_creation), -- Date d\'inscription 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, telephone TEXT,
email TEXT, email TEXT,
nom_contact TEXT,
note TEXT note TEXT
); );

View File

@ -18,6 +18,7 @@ class Client
'siret', 'siret',
'telephone', 'telephone',
'email', 'email',
'nom_contact',
'note' 'note'
]; ];
@ -41,7 +42,7 @@ class Client
{ {
$data[$key] = trim($data[$key]); $data[$key] = trim($data[$key]);
if($data[$key] == '' && ($key != 'siret' && $key != 'telephone' && $key != 'email')) if($data[$key] == '' && ! in_array($key, ['siret', 'telephone', 'email', 'nom_contact', 'note']))
{ {
throw new UserException('Le champs '.$key.' doit être renseigné.'); throw new UserException('Le champs '.$key.' doit être renseigné.');
} }
@ -137,6 +138,9 @@ class Client
'email' => [ 'email' => [
'label' => 'E-Mail', 'label' => 'E-Mail',
], ],
'nom_contact' => [
'label' => 'Contact',
],
'note' => [ 'note' => [
'label' => 'Note', 'label' => 'Note',
], ],

View File

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

View File

@ -70,12 +70,12 @@
</dl> </dl>
<dl class="type_membre"> <dl class="type_membre">
{input type="select" name="membre" label="Membre" options=$users required=1 source=$doc} {input type="select" name="membre" label="Membre" options=$users required=1 source=$doc default_empty="— Choisir un membre —"}
</dl> </dl>
{if !empty($clients)} {if !empty($clients)}
<dl class="type_client"> <dl class="type_client">
{input type="select" name="client" label="Client" options=$clients required=1 class="type_client" source=$doc} {input type="select" name="client" label="Client" options=$clients required=1 class="type_client" source=$doc default_empty="— Choisir un client —"}
</dl> </dl>
{else} {else}
<input type="hidden" name="base_receveur" value="membre" /> <input type="hidden" name="base_receveur" value="membre" />
@ -85,6 +85,9 @@
<fieldset data-types="t0 t1"> <fieldset data-types="t0 t1">
<legend>Autres informations</legend> <legend>Autres informations</legend>
{input type="text" name="nom_contact" label="Nom du contact" source=$doc} {input type="text" name="nom_contact" label="Nom du contact" source=$doc}
<div class="hidden">
{input type="select" name="contact_list" options=$contacts}
</div>
<div data-types="t1"> <div data-types="t1">
{input type="text" name="numero_commande" label="Numéro de commande" source=$doc} {input type="text" name="numero_commande" label="Numéro de commande" source=$doc}
{input type="text" name="reference_acheteur" label="Référence acheteur" source=$doc} {input type="text" name="reference_acheteur" label="Référence acheteur" source=$doc}

View File

@ -51,6 +51,18 @@
} }
} }
function modifierContact(client, idlist, idcontact)
{
let contactlist = document.querySelector(idlist);
let options = contactlist.querySelectorAll('option');
for (i=0; i < options.length; ++i) {
if (options[i].value == client.value) {
break;
}
}
document.querySelector(idcontact).value = options[i].textContent;
}
const form = document.querySelector('#f_numero_facture').form; const form = document.querySelector('#f_numero_facture').form;
changeTypeSaisie(form.base_receveur.value); changeTypeSaisie(form.base_receveur.value);
@ -63,6 +75,11 @@
}; };
} }
const selclient = document.querySelector('#f_client');
selclient.addEventListener("change", () => {
modifierContact(selclient, '#f_contact_list', '#f_nom_contact');
});
} ()); } ());

View File

@ -48,6 +48,15 @@
{/if} {/if}
</dd> </dd>
<dt>Nom du contact</dt>
<dd>
{if empty($client.nom_contact)}
<em>(Non renseigné)</em>
{else}
{$client.nom_contact}
{/if}
</dd>
<dt>Note</dt> <dt>Note</dt>
<dd> <dd>
{if empty($client.note)} {if empty($client.note)}

View File

@ -14,6 +14,7 @@
{input type="text" name="siret" label="SIREN/SIRET" source=$client} {input type="text" name="siret" label="SIREN/SIRET" source=$client}
{input type="tel" name="telephone" label="Téléphone" source=$client} {input type="tel" name="telephone" label="Téléphone" source=$client}
{input type="email" name="email" label="Adresse e-mail" source=$client} {input type="email" name="email" label="Adresse e-mail" source=$client}
{input type="text" name="nom_contact" label="Nom du contact" source=$client}
{input type="textarea" cols="60" rows="3" name="note" label="Note" source=$client} {input type="textarea" cols="60" rows="3" name="note" label="Note" source=$client}
</dl> </dl>
</fieldset> </fieldset>

View File

@ -61,6 +61,7 @@
{input type="text" name="siret" label="SIREN/SIRET"} {input type="text" name="siret" label="SIREN/SIRET"}
{input type="tel" name="telephone" label="Téléphone"} {input type="tel" name="telephone" label="Téléphone"}
{input type="email" name="email" label="Adresse e-mail"} {input type="email" name="email" label="Adresse e-mail"}
{input type="text" name="nom_contact" label="Nom contact"}
{input type="textarea" cols="60" rows="3" name="note" label="Note"} {input type="textarea" cols="60" rows="3" name="note" label="Note"}
</dl> </dl>
</fieldset> </fieldset>

View File

@ -252,10 +252,10 @@ EOT
); );
} }
// version 0.14 // version 0.15
// Ajout champ note à la table clients // Ajout champs note et contact à la table clients
// Ajout divers champs à la table factures // Ajout divers champs à la table factures
if (version_compare($old_version, '0.14', '<')) if (version_compare($old_version, '0.15', '<'))
{ {
$db->exec(<<<EOT $db->exec(<<<EOT
CREATE TABLE IF NOT EXISTS plugin_facturation_clients_tmp CREATE TABLE IF NOT EXISTS plugin_facturation_clients_tmp
@ -269,6 +269,7 @@ if (version_compare($old_version, '0.14', '<'))
date_creation TEXT NOT NULL DEFAULT CURRENT_DATE CHECK (date(date_creation) IS NOT NULL AND date(date_creation) = date_creation), date_creation TEXT NOT NULL DEFAULT CURRENT_DATE CHECK (date(date_creation) IS NOT NULL AND date(date_creation) = date_creation),
telephone TEXT, telephone TEXT,
email TEXT, email TEXT,
nom_contact TEXT,
note TEXT note TEXT
); );
EOT EOT