New: Fin de la gestion des remises fixes.

This commit is contained in:
Laurent Destailleur 2006-08-20 03:27:11 +00:00
parent 27e27e9e6a
commit a9521fdf89
4 changed files with 30 additions and 46 deletions

View File

@ -173,13 +173,13 @@ if ($_socid > 0)
/*
* Liste avoir restant dus
* Liste remises fixes restant en cours
*/
$sql = "SELECT rc.rowid, rc.amount_ht,".$db->pdate("rc.datec")." as dc, rc.description,";
$sql.= " u.code, u.rowid as user_id";
$sql.= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc, ".MAIN_DB_PREFIX."user as u";
$sql.= " WHERE rc.fk_soc =". $objsoc->id;
$sql.= " AND u.rowid = rc.fk_user AND fk_facture IS NULL";
$sql.= " AND u.rowid = rc.fk_user AND rc.fk_facture IS NULL";
$sql.= " ORDER BY rc.datec DESC";
$resql=$db->query($sql);
@ -226,13 +226,15 @@ if ($_socid > 0)
*/
$sql = "SELECT rc.rowid, rc.amount_ht,".$db->pdate("rc.datec")." as dc, rc.description, rc.fk_facture,";
$sql.= " u.code, u.rowid as user_id,";
$sql.= " f.facnumber";
$sql.= " f.rowid, f.facnumber";
$sql.= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc";
$sql.= " , ".MAIN_DB_PREFIX."user as u";
$sql.= " , ".MAIN_DB_PREFIX."facturedet as fc";
$sql.= " , ".MAIN_DB_PREFIX."facture as f";
$sql.= " WHERE rc.fk_soc =". $objsoc->id;
$sql.= " AND fk_facture = f.rowid";
$sql.= " AND u.rowid = rc.fk_user AND fk_facture IS NOT NULL";
$sql.= " AND rc.fk_facture = fc.rowid";
$sql.= " AND fc.fk_facture = f.rowid";
$sql.= " AND rc.fk_user = u.rowid";
$sql.= " ORDER BY rc.datec DESC";
$resql=$db->query($sql);
@ -257,7 +259,7 @@ if ($_socid > 0)
$var = !$var;
print "<tr $bc[$var]>";
print '<td>'.dolibarr_print_date($obj->dc).'</td>';
print '<td align="left"><a href="'.DOL_URL_ROOT.'/compta/facture.php?facid='.$obj->fk_facture.'">'.img_object($langs->trans("ShowBill"),'bill').' '.$obj->facnumber.'</a></td>';
print '<td align="left"><a href="'.DOL_URL_ROOT.'/compta/facture.php?facid='.$obj->rowid.'">'.img_object($langs->trans("ShowBill"),'bill').' '.$obj->facnumber.'</a></td>';
print '<td>'.$obj->description.'</td>';
print '<td align="right">'.price($obj->amount_ht).'</td>';
print '<td align="center">'.$obj->code.'</td>';

View File

@ -392,7 +392,9 @@ class Facture extends CommonObject
/*
* Lignes
*/
$sql = 'SELECT l.rowid, l.fk_product, l.description, l.price, l.qty, l.tva_taux, l.remise, l.remise_percent, l.subprice,';
// \todo Mettre ce code dans fonction fetch_lines qui charge tableau $this->lignes
$sql = 'SELECT l.rowid, l.fk_product, l.description, l.price, l.qty, l.tva_taux, ';
$sql.= ' l.remise, l.remise_percent, l.fk_remise_except, l.subprice,';
$sql.= ' '.$this->db->pdate('l.date_start').' as date_start,'.$this->db->pdate('l.date_end').' as date_end,';
$sql.= ' l.info_bits, l.total_ht, l.total_tva, l.total_ttc, l.fk_code_ventilation, l.fk_export_compta,';
$sql.= ' p.label as label, p.description as product_desc';
@ -409,7 +411,7 @@ class Facture extends CommonObject
{
$objp = $this->db->fetch_object($result2);
$faclig = new FactureLigne($this->db);
$faclig->rowid = $objp->rowid;
$faclig->rowid = $objp->rowid;
$faclig->desc = $objp->description; // Description ligne
$faclig->libelle = $objp->label; // Label produit
$faclig->product_desc = $objp->product_desc; // Description produit
@ -419,6 +421,7 @@ class Facture extends CommonObject
$faclig->tva_taux = $objp->tva_taux;
$faclig->remise = $objp->remise;
$faclig->remise_percent = $objp->remise_percent;
$faclig->fk_remise_except = $objp->fk_remise_except;
$faclig->produit_id = $objp->fk_product;
$faclig->date_start = $objp->date_start;
$faclig->date_end = $objp->date_end;
@ -897,47 +900,26 @@ class Facture extends CommonObject
/*
* Tope les lignes de remises fixes avec id des lignes de facture au montant négatif
*/
/* TODO Toper les lignes de remises fixes avec id des lignes de facture au montant négatif.
while ($i < $nurmx && $remise_a_decrementee && ! $error)
{
$obj = $this->db->fetch_object($resql);
$avoir=$obj->amount;
// On met à jour avoir comme affecté à facture
foreach($this->lignes as $i => $line)
{
if (($this->lignes[$i]->info_bits & 2) == 2)
{
// Ligne de remis
dolibarr_syslog("Facture.class::set_valid top remises de ligne ".$this->lignes[$i]->fk_remise_except." comme utilisee");
// On met à jour ligne de remise comme utilisée
$sql = 'UPDATE '.MAIN_DB_PREFIX.'societe_remise_except';
$sql.= ' SET fk_facture = '.$this->id.',';
$sql.= " amount_ht = '".price2num(min($remise_a_decrementee,$avoir))."'";
$sql.= ' WHERE rowid ='.$obj->rowid;
dolibarr_syslog("Societe::set_valid Mise a jour avoir sql=$sql");
if (! $this->db->query($sql))
$sql.= ' SET fk_facture = '.$this->lignes[$i]->rowid;
$sql.= ' WHERE rowid ='.$this->lignes[$i]->fk_remise_except;
$resql=$this->db->query($sql);
if (! $resql)
{
$this->error=$this->db->error().' sql='.$sql;
dolibarr_syslog("Facture.class::set_valid Error ".$this->error);
$error++;
}
if ($remise_a_decrementee < $avoir)
{
// L'avoir n'a pas été complètement consommée, on insère ligne du reste
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'societe_remise_except';
$sql.= ' (fk_soc, datec, amount_ht, fk_user, fk_facture, description) ';
$sql.= ' VALUES ';
$sql.= ' ('.$this->socidp;
$sql.= ' ,'.$obj->datec;
$sql.= " ,'".price2num($avoir - $remise_a_decrementee)."'";
$sql.= ' ,'.$user->id;
$sql.= ' ,null';
$sql.= " ,'".addslashes($obj->description)."'";
$sql.= ')';
if (! $this->db->query( $sql))
{
$error++;
}
}
$remise_a_decrementee-=min($remise_a_decrementee,$avoir);
$i++;
}
*/
}
// On vérifie si la facture était une provisoire
if ($facref == 'PROV')

View File

@ -323,7 +323,7 @@ ALTER TABLE llx_facture ADD INDEX idx_facture_fk_facture (fk_facture);
ALTER TABLE llx_facture ADD CONSTRAINT fk_facture_fk_facture FOREIGN KEY (fk_facture) REFERENCES llx_facture (rowid);
ALTER TABLE llx_societe_remise_except DROP FOREIGN KEY fk_societe_remise_fk_facture;
ALTER TABLE llx_societe_remise_except ADD CONSTRAINT fk_societe_remise_fk_facture FOREIGN KEY (fk_facture) REFERENCES llx_facture_det (rowid);
ALTER TABLE llx_societe_remise_except ADD CONSTRAINT fk_societe_remise_fk_facture FOREIGN KEY (fk_facture) REFERENCES llx_facturedet (rowid);
-- drop table llx_societe_remise_except;
-- create table llx_societe_remise_except

View File

@ -32,7 +32,7 @@ ALTER TABLE llx_societe_remise_except ADD INDEX idx_societe_remise_except_fk_fac
ALTER TABLE llx_societe_remise_except ADD CONSTRAINT fk_societe_remise_fk_user FOREIGN KEY (fk_user) REFERENCES llx_user (rowid);
ALTER TABLE llx_societe_remise_except ADD CONSTRAINT fk_societe_remise_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (idp);
ALTER TABLE llx_societe_remise_except ADD CONSTRAINT fk_societe_remise_fk_facture FOREIGN KEY (fk_facture) REFERENCES llx_facture (rowid);
ALTER TABLE llx_societe_remise_except ADD CONSTRAINT fk_societe_remise_fk_facture FOREIGN KEY (fk_facture) REFERENCES llx_facturedet (rowid);