Fix: Suite et fin correction bug gestion avoirs

This commit is contained in:
Laurent Destailleur 2007-12-02 21:25:18 +00:00
parent b03b4685cf
commit 701e5a5285
2 changed files with 45 additions and 11 deletions

View File

@ -31,7 +31,7 @@
*/
require('./pre.inc.php');
require_once(DOL_DOCUMENT_ROOT ."/includes/modules/facture/modules_facture.php");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/facture/modules_facture.php');
require_once(DOL_DOCUMENT_ROOT.'/facture.class.php');
require_once(DOL_DOCUMENT_ROOT.'/discount.class.php');
require_once(DOL_DOCUMENT_ROOT.'/paiement.class.php');
@ -41,8 +41,7 @@ if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT.'/propal.class.php'
if ($conf->contrat->enabled) require_once(DOL_DOCUMENT_ROOT.'/contrat/contrat.class.php');
if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT.'/commande/commande.class.php');
$user->getrights('facture');
$user->getrights('banque');
$user->getrights();
if (! $user->rights->facture->lire)
accessforbidden();
@ -129,6 +128,17 @@ if (($_POST['action'] == 'confirm_deleteproductline' && $_POST['confirm'] == 'ye
}
}
// Supprime affectation d'un avoir a la facture
if ($_GET['action'] == 'unlinkdiscount')
{
if ($user->rights->facture->creer)
{
$discount=new DiscountAbsolute($db);
$result=$discount->fetch($_GET["discountid"]);
$discount->unlink_invoice();
}
}
// Validation
if ($_GET['action'] == 'valid')
{
@ -214,13 +224,11 @@ if ($_POST['action'] == "setabsolutediscount" && $user->rights->facture->creer)
$discount = new DiscountAbsolute($db);
$discount->fetch($_POST["remise_id_for_payment"]);
$result=$discount->link_to_invoice(0,$fac->rowid);
$result=$discount->link_to_invoice(0,$_GET['facid']);
if ($result < 0)
{
$mesg='<div class="error">'.$discount->error.'</div>';
}
exit;
}
}

View File

@ -223,15 +223,13 @@ class DiscountAbsolute
/**
* \brief Link the discount to a particular invoice line
* \brief Link the discount to a particular invoice line or a particular invoice
* \param rowidline Invoice line id
* \param rowidinvoice Invoice id
* \return int <0 ko, >0 ok
*/
function link_to_invoice($rowidline,$rowidinvoice)
{
dolibarr_syslog("DiscountAbsolute::link_to_invoice Link discount ".$this->id." to invoice line rowid=".$rowidline." or invoice rowid=".$rowidinvoice);
// Check parameters
if (! $rowidline && ! $rowidinvoice)
{
@ -249,7 +247,7 @@ class DiscountAbsolute
if ($rowidinvoice) $sql.=" SET fk_facture = ".$rowidinvoice;
$sql.=" WHERE rowid = ".$this->id;
dolibarr_syslog("DiscountAbsolute::link_to_invoice sql=".$sql);
dolibarr_syslog("DiscountAbsolute::link_to_invoice sql=".$sql,LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql)
{
@ -258,12 +256,40 @@ class DiscountAbsolute
else
{
$this->error=$this->db->error();
dolibarr_syslog("DiscountAbsolute::link_to_invoice ".$this->error);
dolibarr_syslog("DiscountAbsolute::link_to_invoice ".$this->error,LOG_ERR);
return -3;
}
}
/**
* \brief Link the discount to a particular invoice line or a particular invoice
* \remarks Do not call this if discount is linked to a reconcialiated invoice
* \param rowidline Invoice line id
* \param rowidinvoice Invoice id
* \return int <0 if KO, >0 if OK
*/
function unlink_invoice()
{
$sql ="UPDATE ".MAIN_DB_PREFIX."societe_remise_except";
$sql.=" SET fk_facture_line = NULL, fk_facture = NULL";
$sql.=" WHERE rowid = ".$this->id;
dolibarr_syslog("DiscountAbsolute::unlink_invoice sql=".$sql,LOG_DEBUG);
$resql = $this->db->query($sql);
if ($resql)
{
return 1;
}
else
{
$this->error=$this->db->error();
dolibarr_syslog("DiscountAbsolute::link_to_invoice ".$this->error,LOG_ERR);
return -3;
}
}
/**
* \brief Renvoie montant TTC des avoirs en cours disponibles
* \param fk_soc Filtre sur une societe