Browse Source

Fix order assign

Mathieu Moulin 6 months ago
parent
commit
050bed09d0
1 changed files with 57 additions and 17 deletions
  1. 57 17
      src/manual/customer.inc.php

+ 57 - 17
src/manual/customer.inc.php

@@ -21,6 +21,8 @@ while($row = $q->fetch_assoc()) {
 $comm_map_pd = array_flip($comm_map_dp);
 $map_pd = array_flip($map_dp);
 
+$nbmax = isset($_GET['nbmax']) && is_numeric($_GET['nbmax']) && $_GET['nbmax']==(int)$_GET['nbmax'] && $_GET['nbmax']>=0 ?$_GET['nbmax'] :5000;
+
 $sql_d_fk_commerciaux = implode(',', $comm_map_pd);
 $sql_p_fk_commerciaux = implode(',', $comm_map_dp);
 $sql_d_fk_users = implode(',', $map_pd);
@@ -75,7 +77,6 @@ if (isset($_GET['propal_assoc'])) {
     var_dump($q);
 
     echo '<p>TOTAL : '.mysqli_num_rows($q).'</p>';
-    $nbmax = isset($_GET['nbmax']) && is_numeric($_GET['nbmax']) && $_GET['nbmax']==(int)$_GET['nbmax'] && $_GET['nbmax']>=1000 ?$_GET['nbmax'] :5000;
 
     $ok = 0;
     $nb = 0;
@@ -149,7 +150,6 @@ if (isset($_GET['propal_assoc'])) {
                     }
                 }
             }
-            // Afficher choix pour spécification à la main
             else {
                 // On regarde les commerciaux associés au client
                 if (!empty($row['fk_users'])) {
@@ -169,8 +169,11 @@ if (isset($_GET['propal_assoc'])) {
                     if (isset($_GET['go']))
                         DB::d_update($sql);
                 }
-                foreach($u2_save as $userid) {
-                    echo '<p>Associer =&gt; <a href="?t=customer&propal_assoc&map['.$row['p_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
+                // Afficher choix pour spécification à la main
+                else {
+                    foreach($u2_save as $userid) {
+                        echo '<p>Associer =&gt; <a href="?t=customer&propal_assoc&map['.$row['p_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
+                    }
                 }
             }
         }
@@ -195,7 +198,8 @@ if (isset($_GET['order_assoc'])) {
         s.rowid, s.nom, s.email, GROUP_CONCAT(DISTINCT su.fk_user SEPARATOR ",") fk_users, s.fk_user_creat, s.fk_user_modif,
         p.rowid p_rowid, p.ref p_ref, p.fk_user_author p_fk_user_author, p.fk_user_modif p_fk_user_modif, p.fk_user_valid p_fk_user_valid,
         GROUP_CONCAT(DISTINCT ao.fk_user_action SEPARATOR ",") o_actioncom_fk_user, COUNT(DISTINCT ao.fk_user_action) o_actioncom_fk_user_nb, GROUP_CONCAT(DISTINCT ps_oh.id_employee SEPARATOR ",") o_history_ids_employee,
-        GROUP_CONCAT(DISTINCT ap.fk_user_action SEPARATOR ",") p_actioncom_fk_user, COUNT(DISTINCT ap.fk_user_action) p_actioncom_fk_user_nb
+        GROUP_CONCAT(DISTINCT ap.fk_user_action SEPARATOR ",") p_actioncom_fk_user, COUNT(DISTINCT ap.fk_user_action) p_actioncom_fk_user_nb,
+        GROUP_CONCAT(DISTINCT ep.fk_socpeople) ep_fk_user
 
     FROM `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'commande` o
     INNER JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'societe` s
@@ -222,6 +226,9 @@ if (isset($_GET['order_assoc'])) {
     LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'propal` p
         ON (ee.targettype="propal" AND p.rowid=ee.fk_target)
             OR (ee.sourcetype="propal" AND p.rowid=ee.fk_source)
+    
+    LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_contact` ep
+        ON ep.element_id=p.rowid AND ep.fk_c_type_contact IN ('.implode(',', array_keys($contacts['propal'])).')
 
     LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'actioncomm` ap
         ON ap.fk_soc=s.rowid AND ap.elementtype="propal" AND ap.fk_element=p.rowid
@@ -229,14 +236,14 @@ if (isset($_GET['order_assoc'])) {
     WHERE 1
         AND e.fk_socpeople IS NULL
 
-    GROUP BY o.rowid';
+    GROUP BY o.rowid
+    ORDER BY o.rowid DESC';
     $q = DB::o_select($sql);
 
     pre_sql($sql);
     var_dump($q);
 
     echo '<p>TOTAL : '.mysqli_num_rows($q).'</p>';
-    $nbmax = 5000;
 
     $ok = 0;
     $nb = 0;
@@ -270,8 +277,19 @@ if (isset($_GET['order_assoc'])) {
         }
         $u2_save = $u2;
         pre_dump($u2);
-        // Si un seul commercial sur le devis, on l'assigne
-        if (count($u2) == 1) {
+        // Si un seul commercial affecté proprement sur le devis, on l'assigne
+        if (!empty($row['ep_fk_user']) && count($ep_fk_users=explode(',', $row['ep_fk_user']))==1) {
+            $userid = $row['ep_fk_user'];
+            $sql = 'INSERT INTO `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_contact`
+            (datecreate, statut, element_id, fk_c_type_contact, fk_socpeople)
+            VALUES
+            (NOW(), 4, '.$row['o_rowid'].', '.$contact['commande'].', '.$userid.')';
+            pre_sql($sql);
+            if (isset($_GET['go']))
+                DB::d_update($sql);
+        }
+        // Si un seul commercial qui a travaillé sur le devis, on l'assigne
+        elseif (count($u2) == 1) {
             foreach($u2 as $userid) {
                 $sql = 'INSERT INTO `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_contact`
                 (datecreate, statut, element_id, fk_c_type_contact, fk_socpeople)
@@ -301,7 +319,31 @@ if (isset($_GET['order_assoc'])) {
             }
             // Pas de commercial spécifique => on prend le premier patron
             elseif (count($u2) == 0) {
-                foreach($u2_save as $userid) {
+                if (isset($_GET['force_boss_assign'])) {
+                    foreach($u2_save as $userid) {
+                        $sql = 'INSERT INTO `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_contact`
+                        (datecreate, statut, element_id, fk_c_type_contact, fk_socpeople)
+                        VALUES
+                        (NOW(), 4, '.$row['o_rowid'].', '.$contact['commande'].', '.$userid.')';
+                        pre_sql($sql);
+                        if (isset($_GET['go']))
+                            DB::d_update($sql);
+                        // On prend le permier
+                        break;
+                    }
+                }
+            }
+            else {
+                // On regarde les commerciaux associés au client
+                if (!empty($row['fk_users'])) {
+                    $fk_users = explode(',', $row['fk_users']);
+                }
+                else {
+                    $fk_users = [];
+                }
+                // Si on a un seul commercial associé au tiers et qu'il est dans la liste des potentiels, on l'assigne
+                if (count($fk_users)==1 && in_array($fk_users[0], $u2_save)) {
+                    $userid = $fk_users[0];
                     $sql = 'INSERT INTO `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_contact`
                     (datecreate, statut, element_id, fk_c_type_contact, fk_socpeople)
                     VALUES
@@ -309,14 +351,12 @@ if (isset($_GET['order_assoc'])) {
                     pre_sql($sql);
                     if (isset($_GET['go']))
                         DB::d_update($sql);
-                    // On prend le permier
-                    break;
                 }
-            }
-            // Afficher choix pour spécification à la main
-            else {
-                foreach($u2_save as $userid) {
-                    echo '<p>Associer =&gt; <a href="?t=customer&order_assoc&map['.$row['o_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
+                // Afficher choix pour spécification à la main
+                else {
+                    foreach($u2_save as $userid) {
+                        echo '<p>Associer =&gt; <a href="?t=customer&propal_assoc&map['.$row['p_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
+                    }
                 }
             }
         }