Browse Source

user assign to order : fix sql

Mathieu Moulin 6 months ago
parent
commit
6b519b5ce6
1 changed files with 44 additions and 5 deletions
  1. 44 5
      src/manual/customer.inc.php

+ 44 - 5
src/manual/customer.inc.php

@@ -261,11 +261,44 @@ if (isset($_GET['order_assoc'])) {
         ON e.element_id=o.rowid AND e.fk_c_type_contact IN ('.implode(',', array_keys($contacts['commande'])).')
     
     LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_element` ee
-        ON (ee.sourcetype="commande" AND ee.fk_source=o.rowid)
-            OR (ee.targettype="commande" AND ee.fk_target=o.rowid)
+        ON (ee.sourcetype="propal" AND ee.fk_target=o.rowid AND ee.targettype="commande")
     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)
+        ON 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=o.fk_soc AND ap.elementtype="propal" AND ap.fk_element=p.rowid
+    
+    WHERE 1
+        AND e.fk_socpeople IS NULL
+
+    GROUP BY o.rowid
+    ORDER BY o.rowid DESC'
+    .($limit ?' LIMIT '.$limit :'');
+    pre_sql($sql);
+    $q = DB::o_select($sql);
+    var_dump($q);
+    while($row=$q->fetch_assoc()) {
+        if (empty($row['p_rowid']))
+            continue;
+        $list[$row['o_rowid']] = array_merge($list[$row['o_rowid']], $row);
+    }
+
+    $sql = 'SELECT o.rowid o_rowid,
+        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 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
+    LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_contact` e
+        ON e.element_id=o.rowid AND e.fk_c_type_contact IN ('.implode(',', array_keys($contacts['commande'])).')
+    
+    LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_element` ee
+        ON (ee.sourcetype="commande" AND ee.fk_source=o.rowid AND ee.targettype="propal")
+    LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'propal` p
+        ON p.rowid=ee.fk_target
     
     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'])).')
@@ -283,6 +316,12 @@ if (isset($_GET['order_assoc'])) {
     $q = DB::o_select($sql);
     var_dump($q);
     while($row=$q->fetch_assoc()) { 
+        if (empty($row['p_rowid']))
+            continue;
+        foreach(['p_actioncom_fk_user', 'p_actioncom_fk_user_nb', 'ep_fk_user'] as $i) {
+            if (empty($row[$i]))
+                unset($row[$i]);
+        }
         $list[$row['o_rowid']] = array_merge($list[$row['o_rowid']], $row);
     }
 
@@ -293,7 +332,7 @@ if (isset($_GET['order_assoc'])) {
     foreach($list as $row) {
         pre_dump($row);
         $u = [];
-        foreach(['p_fk_user_author', 'p_fk_user_modif', 'p_fk_user_valid', 'o_fk_user_author', 'o_fk_user_modif', 'o_fk_user_valid'] as $k) if ($row[$k]>0)
+        foreach(['p_fk_user_author', 'p_fk_user_modif', 'p_fk_user_valid', 'o_fk_user_author', 'o_fk_user_modif', 'o_fk_user_valid'] as $k) if (isset($row[$k]) && $row[$k]>0)
             $u[] = $row[$k];
         foreach(['p_actioncom_fk_user', 'o_actioncom_fk_user'] as $k) {
             if (!empty($row[$k])) {