feat(v2.0.4): Corrections diverses et tri des tableaux devis
- Correction affichage email contact dans SAP (models/msap.php) - Ajout fonctionnalité tri des tableaux devis (jsap.js, jdevis.js) - Améliorations diverses vues devis et SAP - Mise à jour contrôleurs et modèles export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -49,6 +49,64 @@ function formate_date($sdate)
|
||||
return $ladate;
|
||||
}
|
||||
|
||||
function syncContactClient($code, $contactNom, $contactPrenom, $contactFonction, $telephone, $mobile, $email, $fkUser)
|
||||
{
|
||||
try {
|
||||
$db = Database::getInstance();
|
||||
|
||||
// 1. Compter les contacts actifs pour ce client
|
||||
$sql = 'SELECT COUNT(*) as nb FROM clients_contacts WHERE fk_client = :code AND active = 1';
|
||||
$countResult = $db->fetchAll($sql, [':code' => $code]);
|
||||
$nbContacts = $countResult[0]['nb'];
|
||||
|
||||
if ($nbContacts == 0) {
|
||||
// Aucun contact : créer directement avec principal=1
|
||||
$principal = 1;
|
||||
} else {
|
||||
// Des contacts existent : vérifier si ce nom+prénom existe (en MAJUSCULES)
|
||||
$sql = 'SELECT rowid FROM clients_contacts
|
||||
WHERE fk_client = :code
|
||||
AND UPPER(nom) = UPPER(:nom)
|
||||
AND UPPER(prenom) = UPPER(:prenom)
|
||||
AND active = 1';
|
||||
$existingContact = $db->fetchAll($sql, [
|
||||
':code' => $code,
|
||||
':nom' => $contactNom,
|
||||
':prenom' => $contactPrenom
|
||||
]);
|
||||
|
||||
if (count($existingContact) > 0) {
|
||||
// Contact déjà présent : ne rien faire
|
||||
eLog("syncContactClient : Contact existe déjà pour client " . $code);
|
||||
return;
|
||||
}
|
||||
|
||||
// Contact pas trouvé : créer avec principal=0
|
||||
$principal = 0;
|
||||
}
|
||||
|
||||
// Créer le contact
|
||||
$sql = 'INSERT INTO clients_contacts SET fk_client = :code, nom = :nom, prenom = :prenom, fonction = :fonction, telephone = :telephone, mobile = :mobile, email = :email, principal = :principal, active = 1, date_creat = NOW(), fk_user_creat = :fk_user';
|
||||
$db->query($sql, [
|
||||
':code' => $code,
|
||||
':nom' => $contactNom,
|
||||
':prenom' => $contactPrenom,
|
||||
':fonction' => $contactFonction,
|
||||
':telephone' => $telephone,
|
||||
':mobile' => $mobile,
|
||||
':email' => $email,
|
||||
':principal' => $principal,
|
||||
':fk_user' => $fkUser
|
||||
]);
|
||||
|
||||
eLog("syncContactClient : Contact créé pour client " . $code . " (principal=" . $principal . ")");
|
||||
|
||||
} catch (Exception $e) {
|
||||
error_log("Erreur syncContactClient : " . $e->getMessage());
|
||||
eLog("Erreur syncContactClient pour client " . $code . " : " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
switch ($Route->_action) {
|
||||
case "upload_clients":
|
||||
@@ -171,6 +229,10 @@ switch ($Route->_action) {
|
||||
]);
|
||||
$fkClient = $db->lastInsertId();
|
||||
fwrite($fhlog, $row . "--- Ajout client avec requête préparée\r\n");
|
||||
|
||||
// Synchroniser le contact dans clients_contacts
|
||||
syncContactClient($code, $contactNom, $contactPrenom, $contactFonction, $telephone, $mobile, $email, $fkUser);
|
||||
|
||||
} catch (Exception $e) {
|
||||
error_log("Erreur insertion client : " . $e->getMessage());
|
||||
fwrite($fhlog, "Erreur insertion : " . $e->getMessage() . "\r\n");
|
||||
@@ -212,6 +274,10 @@ switch ($Route->_action) {
|
||||
':code' => $code
|
||||
]);
|
||||
fwrite($fhlog, $row . "--- MàJ client avec requête préparée\r\n");
|
||||
|
||||
// Synchroniser le contact dans clients_contacts
|
||||
syncContactClient($code, $contactNom, $contactPrenom, $contactFonction, $telephone, $mobile, $email, $fkUser);
|
||||
|
||||
} catch (Exception $e) {
|
||||
error_log("Erreur mise à jour client : " . $e->getMessage());
|
||||
fwrite($fhlog, "Erreur MàJ : " . $e->getMessage() . "\r\n");
|
||||
|
||||
Reference in New Issue
Block a user