Fixed: bug #14767 overview: sanitize_string en trop sur les numéros de facture fournisseur

This commit is contained in:
Laurent Destailleur 2005-10-19 05:30:49 +00:00
parent 847186d9a1
commit af8661ce07
6 changed files with 123 additions and 104 deletions

View File

@ -247,6 +247,7 @@ if ($_GET['action'] == 'create' or $_GET['action'] == 'copy')
print '<form action="fiche.php" method="post">'; print '<form action="fiche.php" method="post">';
print '<input type="hidden" name="action" value="add">'; print '<input type="hidden" name="action" value="add">';
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
print '<tr><td>'.$langs->trans('Company').'</td>'; print '<tr><td>'.$langs->trans('Company').'</td>';
@ -287,11 +288,11 @@ if ($_GET['action'] == 'create' or $_GET['action'] == 'copy')
print '</select></td>'; print '</select></td>';
*/ */
print '</td>'; print '</td>';
print '<td>'.$langs->trans('Comments').'</td></tr>'; print '<td width="50%">'.$langs->trans('Comments').'</td></tr>';
print '<tr><td>'.$langs->trans('Ref').'</td><td><input name="facnumber" type="text"></td>'; print '<tr><td>'.$langs->trans('Ref').'</td><td><input name="facnumber" type="text"></td>';
print '<td rowspan="4" valign="top"><textarea name="note" wrap="soft" cols="30" rows="6"></textarea></td></tr>'; print '<td width="50%" rowspan="4" valign="top"><textarea name="note" wrap="soft" cols="30" rows="6"></textarea></td></tr>';
if ($_GET['action'] == 'copy') if ($_GET['action'] == 'copy')
{ {
print '<tr><td>'.$langs->trans('Label').'</td><td><input size="30" name="libelle" value="'.$fac_ori->libelle.'" type="text"></td></tr>'; print '<tr><td>'.$langs->trans('Label').'</td><td><input size="30" name="libelle" value="'.$fac_ori->libelle.'" type="text"></td></tr>';
@ -342,7 +343,7 @@ if ($_GET['action'] == 'create' or $_GET['action'] == 'copy')
} }
print '</table>'; print '</table>';
print '<p align="center"><input type="submit" value="'.$langs->trans('Save').'"></p>'; print '<center><input type="submit" class="button" value="'.$langs->trans('Save').'"></center>';
print '</form>'; print '</form>';
} }
else else
@ -377,15 +378,15 @@ else
print '<input type="hidden" name="action" value="update">'; print '<input type="hidden" name="action" value="update">';
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
print '<tr><td width="20%">'.$langs->trans("Company").'</td>'; print '<tr><td>'.$langs->trans("Company").'</td>';
print '<td width="20%">'.stripslashes($fac->socnom).'</td>'; print '<td>'.stripslashes($fac->socnom).'</td>';
print '<td width="60%" valign="top">'.$langs->trans("Comments").'</tr>'; print '<td width="50%" valign="top">'.$langs->trans("Comments").'</tr>';
print '<tr><td valign="top">'.$langs->trans("Ref").'</td><td valign="top">'; print '<tr><td valign="top">'.$langs->trans("Ref").'</td><td valign="top">';
print '<input name="facnumber" type="text" value="'.$fac->ref.'"></td>'; print '<input name="facnumber" type="text" value="'.$fac->ref.'"></td>';
print '<td rowspan="8" width="60%" valign="top">'; print '<td rowspan="8" valign="top">';
print '<textarea name="note" wrap="soft" cols="60" rows="10">'; print '<textarea name="note" wrap="soft" cols="60" rows="10">';
print stripslashes($fac->note); print stripslashes($fac->note);
print '</textarea></td></tr>'; print '</textarea></td></tr>';
@ -396,11 +397,11 @@ else
print '<tr><td>'.$langs->trans("AmountHT").' / '.$langs->trans("AmountTTC").'</td>'; print '<tr><td>'.$langs->trans("AmountHT").' / '.$langs->trans("AmountTTC").'</td>';
print '<td>'.price($fac->total_ht).' / '.price($fac->total_ttc).'</td></tr>'; print '<td>'.price($fac->total_ht).' / '.price($fac->total_ttc).'</td></tr>';
print '<tr><td>'.$langs->trans("Date").'</td><td>'; print '<tr><td>'.$langs->trans("DateBill").'</td><td>';
$html->select_date($fac->datep); $html->select_date($fac->datep);
print "</td></tr>"; print "</td></tr>";
print '<tr><td>'.$langs->trans("Date").'</td><td>'; print '<tr><td>'.$langs->trans("DateEcheance").'</td><td>';
$html->select_date($fac->date_echeance,'ech'); $html->select_date($fac->date_echeance,'ech');
print "</td></tr>"; print "</td></tr>";
@ -413,7 +414,7 @@ else
} }
print "<tr><td>".$langs->trans("Author")."</td><td>$authorfullname</td></tr>"; print "<tr><td>".$langs->trans("Author")."</td><td>$authorfullname</td></tr>";
print '<tr><td>'.$langs->trans("Status").'</td><td>'.$fac->LibStatut($fac->paye,$fac->statut)."</td></tr>"; print '<tr><td>'.$langs->trans("Status").'</td><td>'.$fac->LibStatut($fac->paye,$fac->statut)."</td></tr>";
print "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" value=\"".$langs->trans("Save")."\"></td></tr>"; print "<tr><td colspan=\"2\" align=\"center\"><input type=\"submit\" class=\"button\" value=\"".$langs->trans("Save")."\"></td></tr>";
print "</table>"; print "</table>";
print "</form>"; print "</form>";
@ -422,6 +423,7 @@ else
* *
*/ */
print '<br>'; print '<br>';
$var=true;
print "<form action=\"fiche.php?facid=$fac->id&amp;action=add_ligne\" method=\"post\">"; print "<form action=\"fiche.php?facid=$fac->id&amp;action=add_ligne\" method=\"post\">";
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
@ -435,7 +437,8 @@ else
print '<td align="right">'.$langs->trans("TotalTTC").'</td><td>&nbsp;</td></tr>'; print '<td align="right">'.$langs->trans("TotalTTC").'</td><td>&nbsp;</td></tr>';
for ($i = 0 ; $i < sizeof($fac->lignes) ; $i++) for ($i = 0 ; $i < sizeof($fac->lignes) ; $i++)
{ {
print "<tr $bc[1]>".'<td>'.$fac->lignes[$i][0]."</td>"; $var=!$var;
print "<tr $bc[$var]>".'<td>'.$fac->lignes[$i][0]."</td>";
print '<td align="center">'.price($fac->lignes[$i][1])."</td>"; print '<td align="center">'.price($fac->lignes[$i][1])."</td>";
print '<td align="center">'.price($fac->lignes[$i][1] * (1+($fac->lignes[$i][2]/100)))."</td>"; print '<td align="center">'.price($fac->lignes[$i][1] * (1+($fac->lignes[$i][2]/100)))."</td>";
print '<td align="center">'.$fac->lignes[$i][3]."</td>"; print '<td align="center">'.$fac->lignes[$i][3]."</td>";
@ -449,7 +452,8 @@ else
} }
/* Nouvelle ligne */ /* Nouvelle ligne */
print "<tr $bc[1]>"; $var=!$var;
print "<tr $bc[$var]>";
print '<td>'; print '<td>';
print '<input size="30" name="label" type="text">'; print '<input size="30" name="label" type="text">';
print '</td>'; print '</td>';
@ -467,7 +471,7 @@ else
$html->select_tva("tauxtva"); $html->select_tva("tauxtva");
print '</td><td align="center" colspan="2">'; print '</td><td align="center" colspan="2">';
print '&nbsp;'; print '&nbsp;';
print '</td><td align="center"><input type="submit" value="'.$langs->trans("Add").'"></td></tr>'; print '</td><td align="center"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td></tr>';
print "</table>"; print "</table>";
print "</form>"; print "</form>";
} }
@ -505,10 +509,16 @@ else
* Facture * Facture
*/ */
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
print "<tr><td>".$langs->trans("Company")."</td><td colspan=\"2\"><b><a href=\"../fiche.php?socid=$fac->socidp\">$fac->socnom</a></b></td>";
print "<td align=\"right\"><a href=\"index.php?socid=$fac->socidp\">".$langs->trans("OtherBills")."</a></td>\n"; // Ref
print "</tr>"; print "<tr><td>".$langs->trans("Ref")."</td><td colspan=\"3\">".$fac->ref."</td>";
print "</tr>\n";
// Societe
print "<tr><td>".$langs->trans("Company")."</td><td colspan=\"2\"><a href=\"../fiche.php?socid=$fac->socidp\">".dolibarr_trunc($fac->socnom,24)."</td>";
print "<td align=\"right\"><a href=\"index.php?socid=$fac->socidp\">".$langs->trans("OtherBills")."</a></td>";
print "</tr>\n";
print '<tr><td>'.$langs->trans("Date")."</td><td colspan=\"3\">"; print '<tr><td>'.$langs->trans("Date")."</td><td colspan=\"3\">";
print dolibarr_print_date($fac->datep,"%A %d %B %Y")."</td></tr>\n"; print dolibarr_print_date($fac->datep,"%A %d %B %Y")."</td></tr>\n";
print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'; print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">';
@ -629,7 +639,8 @@ else
* Lignes * Lignes
* *
*/ */
print '<p><table class="noborder" width="100%">'; print '<br>';
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td>'.$langs->trans("Label").'</td>'; print '<tr class="liste_titre"><td>'.$langs->trans("Label").'</td>';
print '<td align="center">'.$langs->trans("PriceUHT").'</td>'; print '<td align="center">'.$langs->trans("PriceUHT").'</td>';
print '<td align="center">'.$langs->trans("Qty").'</td>'; print '<td align="center">'.$langs->trans("Qty").'</td>';

View File

@ -36,111 +36,109 @@
class FactureFournisseur class FactureFournisseur
{ {
var $id; var $id;
var $db; var $db;
var $socid; var $socid;
var $number; var $number;
var $statut; var $statut;
var $paye; var $paye;
var $author; var $author;
var $libelle; var $libelle;
var $date; var $date;
var $date_echeance; var $date_echeance;
var $ref; var $ref;
var $amount; var $amount;
var $remise; var $remise;
var $tva; var $tva;
var $total_ht; var $total_ht;
var $total_tva; var $total_tva;
var $total_ttc; var $total_ttc;
var $note; var $note;
var $db_table; var $db_table;
var $propalid; var $propalid;
var $lignes; var $lignes;
/**
* \brief Constructeur de la classe
* \param DB handler accès base de données
* \param soc_idp id societe ("" par defaut)
* \param facid id facture ("" par defaut)
*/
function FactureFournisseur($DB, $soc_idp="", $facid="")
{
$this->db = $DB ;
$this->socidp = $soc_idp;
$this->products = array();
$this->db_table = MAIN_DB_PREFIX."facture";
$this->amount = 0;
$this->remise = 0;
$this->tva = 0;
$this->total = 0;
$this->propalid = 0;
$this->id = $facid;
$this->lignes = array();
}
/** /**
* \brief Constructeur de la classe * \brief Création de la facture en base
* \param DB handler accès base de données * \param user object utilisateur qui crée
* \param soc_idp id societe ("" par defaut) * \return int id facture si ok, < 0 si erreur
* \param facid id facture ("" par defaut) */
*/
function FactureFournisseur($DB, $soc_idp="", $facid="")
{
$this->db = $DB ;
$this->socidp = $soc_idp;
$this->products = array();
$this->db_table = MAIN_DB_PREFIX."facture";
$this->amount = 0;
$this->remise = 0;
$this->tva = 0;
$this->total = 0;
$this->propalid = 0;
$this->id = $facid;
$this->lignes = array();
}
/**
* \brief Création de la facture en base
* \param user object utilisateur qui crée
* \return int id facture si ok, < 0 si erreur
*/
function create($user) function create($user)
{ {
global $langs; global $langs;
// Nettoyage parametres
$socid = $this->socidp; $socid = $this->socidp;
$number = sanitize_string(strtoupper($this->number)); $number = strtoupper($this->number);
$amount = $this->amount; $amount = $this->amount;
$remise = $this->remise; $remise = $this->remise;
$this->db->begin(); $this->db->begin();
if (! $remise) $remise = 0 ; if (! $remise) $remise = 0 ;
$totalht = ($amount - $remise); $totalht = ($amount - $remise);
// NE ME SEMBLE PLUS JUSTIFIE ICI
// $tva = tva($totalht);
// $total = $totalht + $tva;
$sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_fourn (facnumber, libelle, fk_soc, datec, datef, note, fk_user_author, date_lim_reglement) "; $sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_fourn (facnumber, libelle, fk_soc, datec, datef, note, fk_user_author, date_lim_reglement) ";
$sql .= " VALUES ('".$number."','".addslashes($this->libelle)."',"; $sql .= " VALUES ('".addslashes($number)."','".addslashes($this->libelle)."',";
$sql .= $this->socid.", now(),'".$this->db->idate($this->date)."','".addslashes($this->note)."', ".$user->id.",'".$this->db->idate($this->date_echeance)."');"; $sql .= $this->socid.", now(),'".$this->db->idate($this->date)."','".addslashes($this->note)."', ".$user->id.",'".$this->db->idate($this->date_echeance)."');";
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."facture_fourn"); $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."facture_fourn");
for ($i = 0 ; $i < sizeof($this->lignes) ; $i++) for ($i = 0 ; $i < sizeof($this->lignes) ; $i++)
{ {
$sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_fourn_det (fk_facture_fourn)"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_fourn_det (fk_facture_fourn)";
$sql .= " VALUES ($this->id);"; $sql .= " VALUES ($this->id);";
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
$idligne = $this->db->last_insert_id(MAIN_DB_PREFIX."facture_fourn_det"); $idligne = $this->db->last_insert_id(MAIN_DB_PREFIX."facture_fourn_det");
$this->updateline($idligne, $this->updateline($idligne,
$this->lignes[$i][0], $this->lignes[$i][0],
$this->lignes[$i][1], $this->lignes[$i][1],
$this->lignes[$i][2], $this->lignes[$i][2],
$this->lignes[$i][3]); $this->lignes[$i][3]);
} }
} }
// Mise à jour prix // Mise à jour prix
if ($this->updateprice($this->id) > 0) if ($this->updateprice($this->id) > 0)
{ {
$this->db->commit(); $this->db->commit();
return $this->id; return $this->id;
}
else
{
$this->error=$langs->trans("FailedToUpdatePrice");
$this->db->rollback();
return -3;
} }
else
{
$this->error=$langs->trans("FailedToUpdatePrice");
$this->db->rollback();
return -3;
}
} }
else else
{ {
@ -149,14 +147,14 @@ class FactureFournisseur
$this->error=$langs->trans("ErrorBillRefAlreadyExists"); $this->error=$langs->trans("ErrorBillRefAlreadyExists");
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
else else
{ {
$this->error=$this->db->error(); $this->error=$this->db->error();
$this->db->rollback(); $this->db->rollback();
return -2; return -2;
} }
} }
} }
/** /**

View File

@ -97,6 +97,7 @@ RelatedCommercialProposals=Related commercial proposals
MenuToValid=To valid MenuToValid=To valid
DateClosing=Closing date DateClosing=Closing date
DateEcheance=Due date limit DateEcheance=Due date limit
DateBill=Bill date
ClassifyBill=Classify invoice ClassifyBill=Classify invoice
NoSupplierBillsUnpayed=No suppliers invoices unpayed NoSupplierBillsUnpayed=No suppliers invoices unpayed
SupplierBillsToPay=Suppliers invoices to pay SupplierBillsToPay=Suppliers invoices to pay

View File

@ -29,6 +29,7 @@ ContributionsToPay=Contributions to pay
AccountancyTreasuryArea=Accountancy/Treasury area AccountancyTreasuryArea=Accountancy/Treasury area
AccountancySetup=Accountancy setup AccountancySetup=Accountancy setup
NewPayment=New payment NewPayment=New payment
Payments=Payments
ListPayment=List of payments ListPayment=List of payments
ListOfPayments=List of payments ListOfPayments=List of payments
RulesResultDue=- Il inclut les factures, charges et tva dues, qu'elles soient payées ou non.<br>- Il se base sur la date de validation pour les factures et tva, les dates d'échéances pour les charges.<br> RulesResultDue=- Il inclut les factures, charges et tva dues, qu'elles soient payées ou non.<br>- Il se base sur la date de validation pour les factures et tva, les dates d'échéances pour les charges.<br>
@ -41,4 +42,8 @@ VATPayment=VAT Payment
VATPayments=VAT Payments VATPayments=VAT Payments
TotalToPay=Total to pay TotalToPay=Total to pay
CustomerAccountancyCode=Customer accountancy code CustomerAccountancyCode=Customer accountancy code
SupplierAccountancyCode=Supplier accountacy code SupplierAccountancyCode=Supplier accountacy code
AlreadyPayed=Already payed
AccountNumberShort=Account number
AccountNumber=Account number
NewAccount=New account

View File

@ -97,6 +97,7 @@ RelatedCommercialProposals=Propositions commerciales associ
MenuToValid=A valider MenuToValid=A valider
DateClosing=Date limite réglement DateClosing=Date limite réglement
DateEcheance=Date échéance DateEcheance=Date échéance
DateBill=Date facturation
ClassifyBill=Classer la facture ClassifyBill=Classer la facture
NoSupplierBillsUnpayed=Aucune facture fournisseur impayée NoSupplierBillsUnpayed=Aucune facture fournisseur impayée
SupplierBillsToPay=Factures fournisseurs à payer SupplierBillsToPay=Factures fournisseurs à payer

View File

@ -43,4 +43,7 @@ VATPayments=R
TotalToPay=Total à payer TotalToPay=Total à payer
CustomerAccountancyCode=Code compta client CustomerAccountancyCode=Code compta client
SupplierAccountancyCode=Code compta founisseur SupplierAccountancyCode=Code compta founisseur
AlreadyPayed=Déjà réglé AlreadyPayed=Déjà réglé
AccountNumberShort=N° du compte
AccountNumber=Numéro du compte
NewAccount=Nouveau compte