Fix: Corrige quelques problèmes avec factures de remplacement
This commit is contained in:
parent
c533227062
commit
6973127bec
@ -1116,10 +1116,15 @@ if ($_GET['action'] == 'create')
|
|||||||
|
|
||||||
// Type de facture
|
// Type de facture
|
||||||
$facids=$facturestatic->list_replacable_invoices($soc->id);
|
$facids=$facturestatic->list_replacable_invoices($soc->id);
|
||||||
$options="";
|
if ($facids < 0)
|
||||||
foreach ($facids as $key => $value)
|
|
||||||
{
|
{
|
||||||
$options.='<option value="'.$key.'">'.$value.'</option>';
|
dolibarr_print_error($db,$facturestatic);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
$options="";
|
||||||
|
foreach ($facids as $facparam)
|
||||||
|
{
|
||||||
|
$options.='<option value="'.$facparam['id'].'">'.$facparam['ref'].'</option>';
|
||||||
}
|
}
|
||||||
$facids=$facturestatic->list_qualified_avoir_invoices($soc->id);
|
$facids=$facturestatic->list_qualified_avoir_invoices($soc->id);
|
||||||
$optionsav="";
|
$optionsav="";
|
||||||
@ -1676,15 +1681,14 @@ else
|
|||||||
*/
|
*/
|
||||||
if ($_GET['action'] == 'canceled')
|
if ($_GET['action'] == 'canceled')
|
||||||
{
|
{
|
||||||
// Si il y a une facture de remplacement pas encore validée (etat brouillon),
|
// S'il y a une facture de remplacement pas encore validée (etat brouillon),
|
||||||
// on ne permet pas de classer abandonner la facture
|
// on ne permet pas de classer abandonner la facture.
|
||||||
if ($facidnext)
|
if ($facidnext)
|
||||||
{
|
{
|
||||||
$facturereplacement=new Facture($db);
|
$facturereplacement=new Facture($db);
|
||||||
$facturereplacement->fetch($facidnext);
|
$facturereplacement->fetch($facidnext);
|
||||||
$statusreplacement=$facturereplacement->statut;
|
$statusreplacement=$facturereplacement->statut;
|
||||||
}
|
}
|
||||||
print "x".$statusreplacement;
|
|
||||||
if ($facidnext && $statusreplacement == 0)
|
if ($facidnext && $statusreplacement == 0)
|
||||||
{
|
{
|
||||||
print '<div class="error">'.$langs->trans("ErrorCantCancelIfReplacementInvoiceNotValidated").'</div>';
|
print '<div class="error">'.$langs->trans("ErrorCantCancelIfReplacementInvoiceNotValidated").'</div>';
|
||||||
|
|||||||
@ -1801,9 +1801,12 @@ class Facture extends CommonObject
|
|||||||
$sql.= ' WHERE fk_facture_source = '.$this->id;
|
$sql.= ' WHERE fk_facture_source = '.$this->id;
|
||||||
$sql.= ' AND type < 2';
|
$sql.= ' AND type < 2';
|
||||||
if ($option == 'validated') $sql.= ' AND fk_statut = 1';
|
if ($option == 'validated') $sql.= ' AND fk_statut = 1';
|
||||||
$sql.= ' ORDER BY fk_statut DESC'; // Au cas ou base corrompu et qu'il y a une
|
// PROTECTION BAD DATA
|
||||||
// facture de remplacement validee et une autre non
|
// Au cas ou base corrompue et qu'il y a une facture de remplacement validée
|
||||||
// on donne priorité à la validée. Ne devrait pas arriver
|
// et une autre non, on donne priorité à la validée.
|
||||||
|
// Ne devrait pas arriver (sauf si accès concurrentiel et que 2 personnes
|
||||||
|
// ont créé en meme temps une facture de remplacement pour la meme facture)
|
||||||
|
$sql.= ' ORDER BY fk_statut DESC';
|
||||||
|
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
@ -2240,7 +2243,7 @@ class Facture extends CommonObject
|
|||||||
* \brief Renvoi liste des factures remplacables
|
* \brief Renvoi liste des factures remplacables
|
||||||
* Statut validee + aucun paiement + non paye + pas deja remplacées
|
* Statut validee + aucun paiement + non paye + pas deja remplacées
|
||||||
* \param socid Id societe
|
* \param socid Id societe
|
||||||
* \return array Tableau des factures ($id => $ref)
|
* \return array Tableau des factures ('id'=>id, 'ref'=>ref, 'statut'=>status)
|
||||||
*/
|
*/
|
||||||
function list_replacable_invoices($socid=0)
|
function list_replacable_invoices($socid=0)
|
||||||
{
|
{
|
||||||
@ -2248,13 +2251,14 @@ class Facture extends CommonObject
|
|||||||
|
|
||||||
$return = array();
|
$return = array();
|
||||||
|
|
||||||
$sql = "SELECT f.rowid as rowid, f.facnumber,";
|
$sql = "SELECT f.rowid as rowid, f.facnumber, f.fk_statut,";
|
||||||
$sql.= " ff.rowid as rowidnext";
|
$sql.= " ff.rowid as rowidnext";
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
|
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture";
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf ON f.rowid = pf.fk_facture";
|
||||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as ff ON f.rowid = ff.fk_facture_source";
|
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as ff ON f.rowid = ff.fk_facture_source";
|
||||||
$sql.= " WHERE f.fk_statut = 1 AND f.paye = 0 AND pf.fk_paiement IS NULL";
|
$sql.= " WHERE f.fk_statut = 1 AND f.paye = 0 AND pf.fk_paiement IS NULL";
|
||||||
$sql.= " AND IFNULL(ff.fk_statut,0) = 0"; // Doit renvoyé vrai si pas de jointure trouvé ou si jointure vers statut à 0
|
$sql.= " AND ff.fk_statut IS NULL"; // Renvoie vrai si pas de jointure
|
||||||
|
//$sql.= " AND IFNULL(ff.fk_statut,0) = 0"; // Renvoie vrai si pas de jointure ou si jointure vers statut à 0
|
||||||
if ($socid > 0) $sql.=" AND f.fk_soc = ".$socid;
|
if ($socid > 0) $sql.=" AND f.fk_soc = ".$socid;
|
||||||
$sql.= " ORDER BY f.facnumber";
|
$sql.= " ORDER BY f.facnumber";
|
||||||
|
|
||||||
@ -2264,9 +2268,11 @@ class Facture extends CommonObject
|
|||||||
{
|
{
|
||||||
while ($obj=$this->db->fetch_object($resql))
|
while ($obj=$this->db->fetch_object($resql))
|
||||||
{
|
{
|
||||||
$return[$obj->rowid]=$obj->facnumber;
|
$return[$obj->rowid]=array( 'id' => $obj->rowid,
|
||||||
|
'ref' => $obj->facnumber,
|
||||||
|
'status' => $obj->fk_status);
|
||||||
}
|
}
|
||||||
|
//print_r($return);
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user