Merge pull request #10002 from tarrsalah/fix-sql-performance-on-create-supplier-invoice

FIX slow SQL query on creating a new supplier invoice
This commit is contained in:
Laurent Destailleur 2018-11-12 12:54:05 +01:00 committed by GitHub
commit 7f79bb1ffb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1809,10 +1809,10 @@ class FactureFournisseur extends CommonInvoice
$sql = "SELECT f.rowid as rowid, f.ref, f.fk_statut, f.type, f.paye, pf.fk_paiementfourn";
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf ON f.rowid = pf.fk_facturefourn";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture_fourn as ff ON (f.rowid = ff.fk_facture_source AND ff.type=".self::TYPE_REPLACEMENT.")";
$sql.= " WHERE f.entity = ".$conf->entity;
$sql.= " AND f.fk_statut in (".self::STATUS_VALIDATED.",".self::STATUS_CLOSED.")";
$sql.= " AND ff.type IS NULL"; // Renvoi vrai si pas facture de remplacement
$sql.= " AND NOT EXISTS (SELECT rowid from ".MAIN_DB_PREFIX."facture_fourn as ff WHERE f.rowid = ff.fk_facture_source";
$sql.= " AND ff.type=".self::TYPE_REPLACEMENT.")";
$sql.= " AND f.type != ".self::TYPE_CREDIT_NOTE; // Type non 2 si facture non avoir
if ($socid > 0) $sql.=" AND f.fk_soc = ".$socid;
$sql.= " ORDER BY f.ref";