|
@@ -49,6 +49,18 @@ while($row = $q->fetch_assoc()) {
|
|
|
$contact[$row['element']] = $row['rowid'];
|
|
|
}
|
|
|
|
|
|
+function element_contact($type, $rowid, $userid)
|
|
|
+{
|
|
|
+ global $contact;
|
|
|
+ $sql = 'INSERT INTO `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_contact`
|
|
|
+ (datecreate, statut, element_id, fk_c_type_contact, fk_socpeople)
|
|
|
+ VALUES
|
|
|
+ (NOW(), 4, '.$rowid.', '.$contact[$type].', '.$userid.')';
|
|
|
+ pre_sql($sql);
|
|
|
+ if (isset($_GET['go']))
|
|
|
+ DB::d_update($sql);
|
|
|
+}
|
|
|
+
|
|
|
// Affectation commercial à Propale
|
|
|
if (isset($_GET['propal_assoc'])) {
|
|
|
$sql = 'SELECT 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,
|
|
@@ -109,13 +121,7 @@ if (isset($_GET['propal_assoc'])) {
|
|
|
if (count($u2) == 1) {
|
|
|
foreach($u2 as $userid) {
|
|
|
$ok++;
|
|
|
- $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['p_rowid'].', '.$contact['propal'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('propal', $row['p_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
// Sinon, on regarde les "vrais" commerciaux
|
|
@@ -127,26 +133,14 @@ if (isset($_GET['propal_assoc'])) {
|
|
|
if (count($u2) == 1) {
|
|
|
foreach($u2 as $userid) {
|
|
|
$ok++;
|
|
|
- $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['p_rowid'].', '.$contact['propal'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('propal', $row['p_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
// Pas de commercial spécifique => on prend le premier patron
|
|
|
elseif (count($u2) == 0) {
|
|
|
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['p_rowid'].', '.$contact['propal'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('propal', $row['p_rowid'], $userid);
|
|
|
// On prend le permier
|
|
|
break;
|
|
|
}
|
|
@@ -163,13 +157,7 @@ if (isset($_GET['propal_assoc'])) {
|
|
|
// 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
|
|
|
- (NOW(), 4, '.$row['p_rowid'].', '.$contact['propal'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('propal', $row['p_rowid'], $userid);
|
|
|
}
|
|
|
// Afficher choix pour spécification à la main
|
|
|
else {
|
|
@@ -181,12 +169,8 @@ if (isset($_GET['propal_assoc'])) {
|
|
|
}
|
|
|
// Spécification à la main
|
|
|
elseif(!empty($_GET['map'][$row['p_rowid']])) {
|
|
|
- $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['p_rowid'].', '.$contact['propal'].', '.$_GET['map'][$row['p_rowid']].')';
|
|
|
- pre_sql($sql);
|
|
|
- DB::d_update($sql);
|
|
|
+ $userid = $_GET['map'][$row['p_rowid']];
|
|
|
+ element_contact('propal', $row['p_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -251,6 +235,7 @@ if (isset($_GET['order_assoc'])) {
|
|
|
$list[$row['o_rowid']] = array_merge($list[$row['o_rowid']], $row);
|
|
|
}
|
|
|
|
|
|
+ // Propal associée
|
|
|
$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,
|
|
@@ -286,6 +271,7 @@ if (isset($_GET['order_assoc'])) {
|
|
|
$list[$row['o_rowid']] = array_merge($list[$row['o_rowid']], $row);
|
|
|
}
|
|
|
|
|
|
+ // Propal associée 2
|
|
|
$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,
|
|
@@ -359,24 +345,12 @@ if (isset($_GET['order_assoc'])) {
|
|
|
// 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);
|
|
|
+ element_contact('commande', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
// 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)
|
|
|
- VALUES
|
|
|
- (NOW(), 4, '.$row['o_rowid'].', '.$contact['commande'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('commande', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
// Sinon, si un seul "vrai" commercial sur le devis, on l'assigne
|
|
@@ -387,26 +361,14 @@ if (isset($_GET['order_assoc'])) {
|
|
|
// Un seul commercial spécifique
|
|
|
if (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)
|
|
|
- VALUES
|
|
|
- (NOW(), 4, '.$row['o_rowid'].', '.$contact['commande'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('commande', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
// Pas de commercial spécifique => on prend le premier patron
|
|
|
elseif (count($u2) == 0) {
|
|
|
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);
|
|
|
+ element_contact('commande', $row['o_rowid'], $userid);
|
|
|
// On prend le permier
|
|
|
break;
|
|
|
}
|
|
@@ -423,30 +385,20 @@ if (isset($_GET['order_assoc'])) {
|
|
|
// 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
|
|
|
- (NOW(), 4, '.$row['o_rowid'].', '.$contact['commande'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('commande', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
// Afficher choix pour spécification à la main
|
|
|
else {
|
|
|
foreach($u2_save as $userid) {
|
|
|
- echo '<p>Associer => <a href="?t=customer&propal_assoc&map['.$row['p_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
|
|
|
+ echo '<p>Associer => <a href="?t=customer&propal_assoc&map['.$row['o_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// Spécification à la main
|
|
|
elseif(!empty($_GET['map'][$row['o_rowid']])) {
|
|
|
- $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'].', '.$_GET['map'][$row['o_rowid']].')';
|
|
|
- pre_sql($sql);
|
|
|
- DB::d_update($sql);
|
|
|
+ $iserid = $_GET['map'][$row['o_rowid']];
|
|
|
+ element_contact('commande', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -456,40 +408,128 @@ if (isset($_GET['order_assoc'])) {
|
|
|
|
|
|
// Affectation commercial à Facture
|
|
|
if (isset($_GET['invoice_assoc'])) {
|
|
|
+ // Infos de base
|
|
|
$sql = 'SELECT o.rowid o_rowid, o.ref o_ref, o.fk_user_author o_fk_user_author, o.fk_user_modif o_fk_user_modif, o.fk_user_valid o_fk_user_valid,
|
|
|
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 ao.fk_user_action SEPARATOR ",") o_actioncom_fk_user, COUNT(DISTINCT ao.fk_user_action) o_actioncom_fk_user_nb
|
|
|
|
|
|
FROM `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'facture` o
|
|
|
- INNER JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'societe` s
|
|
|
- ON s.rowid=o.fk_soc
|
|
|
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['facture'])).')
|
|
|
|
|
|
+ LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'societe` s
|
|
|
+ ON s.rowid=o.fk_soc
|
|
|
LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'societe_commerciaux` su
|
|
|
ON su.fk_soc=s.rowid
|
|
|
|
|
|
LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'actioncomm` ao
|
|
|
ON ao.fk_soc=s.rowid AND ao.elementtype="facture" AND ao.fk_element=o.rowid
|
|
|
+
|
|
|
+ WHERE 1
|
|
|
+ AND e.fk_socpeople IS NULL
|
|
|
|
|
|
- LEFT JOIN `'.DB_BASE.'`._objects_d o_d
|
|
|
- ON o_d.oid=o.rowid AND o_d.tid=14
|
|
|
- LEFT JOIN `'.DB_BASE.'`._objects_p o_p
|
|
|
- ON o_p.id=o_d.id
|
|
|
- LEFT JOIN `'.DB_P_BASE.'`.ps_order_history ps_oh
|
|
|
- ON ps_oh.id_order=o_p.oid AND ps_oh.id_employee IN ('.$sql_p_fk_users.')
|
|
|
+ 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()) {
|
|
|
+ $list[$row['o_rowid']] = $row;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Propale associée
|
|
|
+ $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.'facture` 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['facture'])).')
|
|
|
+
|
|
|
+ LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_element` ee
|
|
|
+ ON (ee.sourcetype="propal" AND ee.fk_target=o.rowid AND ee.targettype="facture")
|
|
|
+ LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'propal` p
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Propale associée 2
|
|
|
+ $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.'facture` 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['facture'])).')
|
|
|
+
|
|
|
+ LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_element` ee
|
|
|
+ ON (ee.targettype="propal" AND ee.fk_source=o.rowid AND ee.sourcetype="facture")
|
|
|
+ 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'])).')
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Commande associée
|
|
|
+ $sql = 'SELECT o.rowid o_rowid,
|
|
|
+ p.rowid c_rowid, p.ref c_ref, p.fk_user_author c_fk_user_author, p.fk_user_modif c_fk_user_modif, p.fk_user_valid c_fk_user_valid,
|
|
|
+ GROUP_CONCAT(DISTINCT ap.fk_user_action SEPARATOR ",") c_actioncom_fk_user, COUNT(DISTINCT ap.fk_user_action) c_actioncom_fk_user_nb,
|
|
|
+ GROUP_CONCAT(DISTINCT ep.fk_socpeople) ec_fk_user
|
|
|
|
|
|
+ FROM `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'facture` 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['facture'])).')
|
|
|
+
|
|
|
LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_element` ee
|
|
|
- ON (ee.sourcetype="facture" AND ee.fk_source=o.rowid)
|
|
|
- OR (ee.targettype="facture" AND ee.fk_target=o.rowid)
|
|
|
+ ON (ee.sourcetype="commande" AND ee.fk_target=o.rowid AND ee.targettype="commande")
|
|
|
LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'commande` p
|
|
|
- ON (ee.targettype="commande" AND p.rowid=ee.fk_target)
|
|
|
- OR (ee.sourcetype="commande" 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['commande'])).')
|
|
|
|
|
|
LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'actioncomm` ap
|
|
|
- ON ap.fk_soc=s.rowid AND ap.elementtype="commande" AND ap.fk_element=p.rowid
|
|
|
+ ON ap.fk_soc=o.fk_soc AND ap.elementtype="commande" AND ap.fk_element=p.rowid
|
|
|
|
|
|
WHERE 1
|
|
|
AND e.fk_socpeople IS NULL
|
|
@@ -497,23 +537,61 @@ if (isset($_GET['invoice_assoc'])) {
|
|
|
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['c_rowid']))
|
|
|
+ continue;
|
|
|
+ $list[$row['o_rowid']] = array_merge($list[$row['o_rowid']], $row);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Commande associée 2
|
|
|
+ $sql = 'SELECT o.rowid o_rowid,
|
|
|
+ p.rowid c_rowid, p.ref c_ref, p.fk_user_author c_fk_user_author, p.fk_user_modif c_fk_user_modif, p.fk_user_valid c_fk_user_valid,
|
|
|
+ GROUP_CONCAT(DISTINCT ap.fk_user_action SEPARATOR ",") c_actioncom_fk_user, COUNT(DISTINCT ap.fk_user_action) c_actioncom_fk_user_nb,
|
|
|
+ GROUP_CONCAT(DISTINCT ep.fk_socpeople) ec_fk_user
|
|
|
|
|
|
+ FROM `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'facture` 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['facture'])).')
|
|
|
+
|
|
|
+ LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'element_element` ee
|
|
|
+ ON (ee.targettype="commande" AND ee.fk_source=o.rowid AND ee.sourcetype="commande")
|
|
|
+ LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'commande` 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['commande'])).')
|
|
|
+
|
|
|
+ LEFT JOIN `'.DB_D_BASE.'`.`'.DB_D_PREFIX.'actioncomm` ap
|
|
|
+ ON ap.fk_soc=o.fk_soc AND ap.elementtype="commande" 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['c_rowid']))
|
|
|
+ continue;
|
|
|
+ $list[$row['o_rowid']] = array_merge($list[$row['o_rowid']], $row);
|
|
|
+ }
|
|
|
|
|
|
- echo '<p>TOTAL : '.mysqli_num_rows($q).'</p>';
|
|
|
- $nbmax = 5000;
|
|
|
+ //
|
|
|
+
|
|
|
+ echo '<p>TOTAL : '.count($list).'</p>';
|
|
|
|
|
|
$ok = 0;
|
|
|
$nb = 0;
|
|
|
- while($row=$q->fetch_assoc()) {
|
|
|
- $nb++;
|
|
|
- if ($nb>$nbmax)
|
|
|
- break;
|
|
|
+ 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])) {
|
|
@@ -537,16 +615,26 @@ if (isset($_GET['invoice_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'];
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
+ }
|
|
|
+ // Si un seul commercial affecté proprement sur la commande, on l'assigne
|
|
|
+ elseif (!empty($row['ec_fk_user']) && count($ec_fk_users=explode(',', $row['ec_fk_user']))==1) {
|
|
|
+ $userid = $row['ec_fk_user'];
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
+ }
|
|
|
+ // Si un seul commercial qui a travaillé sur le devis, on l'assigne
|
|
|
+ elseif (count($u2) == 1) {
|
|
|
+ foreach($u2 as $userid) {
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // Si un seul commercial qui a travaillé sur la commane, 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)
|
|
|
- VALUES
|
|
|
- (NOW(), 4, '.$row['o_rowid'].', '.$contact['facture'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
// Sinon, si un seul "vrai" commercial sur le devis, on l'assigne
|
|
@@ -557,44 +645,44 @@ if (isset($_GET['invoice_assoc'])) {
|
|
|
// Un seul commercial spécifique
|
|
|
if (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)
|
|
|
- VALUES
|
|
|
- (NOW(), 4, '.$row['o_rowid'].', '.$contact['facture'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
// Pas de commercial spécifique => on prend le premier patron
|
|
|
elseif (count($u2) == 0) {
|
|
|
- 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['facture'].', '.$userid.')';
|
|
|
- pre_sql($sql);
|
|
|
- if (isset($_GET['go']))
|
|
|
- DB::d_update($sql);
|
|
|
- // On prend le permier
|
|
|
- break;
|
|
|
+ if (isset($_GET['force_boss_assign'])) {
|
|
|
+ foreach($u2_save as $userid) {
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
+ // On prend le permier
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- // Afficher choix pour spécification à la main
|
|
|
else {
|
|
|
- foreach($u2_save as $userid) {
|
|
|
- echo '<p>Associer => <a href="?t=customer&invoice_assoc&map['.$row['o_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
|
|
|
+ // 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];
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
+ }
|
|
|
+ // Afficher choix pour spécification à la main
|
|
|
+ else {
|
|
|
+ foreach($u2_save as $userid) {
|
|
|
+ echo '<p>Associer => <a href="?t=customer&invoice_assoc&map['.$row['o_rowid'].']='.$userid.'">#'.$userid.' - '.$users[$userid]['firstname'].'</a></p>';
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// Spécification à la main
|
|
|
elseif(!empty($_GET['map'][$row['o_rowid']])) {
|
|
|
- $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'].', '.$_GET['map'][$row['o_rowid']].')';
|
|
|
- pre_sql($sql);
|
|
|
- DB::d_update($sql);
|
|
|
+ $userid = $_GET['map'][$row['o_rowid']];
|
|
|
+ element_contact('facture', $row['o_rowid'], $userid);
|
|
|
}
|
|
|
}
|
|
|
|