Debut correction pour gestion cas utilisation no UCIN06.

Les remises de type avoir ne doivent pas s'inclure dans les lignes details mais dans comme paiements deja réalisé.
This commit is contained in:
Laurent Destailleur 2007-11-26 02:54:16 +00:00
parent 5ea6cf58ae
commit 85f5d72d64
12 changed files with 411 additions and 339 deletions

View File

@ -56,7 +56,7 @@ print_titre($langs->trans("NewProp"));
$html=new Form($db); $html=new Form($db);
// Récupération de l'id de projet // R<EFBFBD>cup<EFBFBD>ration de l'id de projet
$projetid = 0; $projetid = 0;
if ($_GET["projetid"]) if ($_GET["projetid"])
{ {
@ -129,7 +129,7 @@ if ($_GET["action"] == 'create')
else print $langs->trans("CompanyHasNoRelativeDiscount"); else print $langs->trans("CompanyHasNoRelativeDiscount");
$absolute_discount=$soc->getCurrentDiscount(); $absolute_discount=$soc->getCurrentDiscount();
print '. '; print '. ';
if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->trans("Currency".$conf->monnaie)); if ($absolute_discount) print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->monnaie));
else print $langs->trans("CompanyHasNoAbsoluteDiscount"); else print $langs->trans("CompanyHasNoAbsoluteDiscount");
print '.'; print '.';
print '</td></tr>'; print '</td></tr>';
@ -141,12 +141,12 @@ if ($_GET["action"] == 'create')
print '<tr><td>'.$langs->trans("ValidityDuration").'</td><td colspan="2"><input name="duree_validite" size="5" value="'.$conf->global->PROPALE_VALIDITY_DURATION.'"> '.$langs->trans("days").'</td></tr>'; print '<tr><td>'.$langs->trans("ValidityDuration").'</td><td colspan="2"><input name="duree_validite" size="5" value="'.$conf->global->PROPALE_VALIDITY_DURATION.'"> '.$langs->trans("days").'</td></tr>';
// Conditions de réglement // Conditions de r<EFBFBD>glement
print '<tr><td nowrap>'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">'; print '<tr><td nowrap>'.$langs->trans('PaymentConditionsShort').'</td><td colspan="2">';
$html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id'); $html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id');
print '</td></tr>'; print '</td></tr>';
// Mode de réglement // Mode de r<EFBFBD>glement
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td colspan="2">'; print '<tr><td>'.$langs->trans('PaymentMode').'</td><td colspan="2">';
$html->select_types_paiements($soc->mode_reglement,'mode_reglement_id'); $html->select_types_paiements($soc->mode_reglement,'mode_reglement_id');
print '</td></tr>'; print '</td></tr>';

View File

@ -67,10 +67,10 @@ else if (isset($_GET["propalid"]) && $_GET["propalid"] > 0)
$dbtable='propal'; $dbtable='propal';
} }
// Sécurité d'accès client et commerciaux // S<EFBFBD>curit<EFBFBD> d'acc<63>s client et commerciaux
$socid = restrictedArea($user, $module, $objectid, $dbtable); $socid = restrictedArea($user, $module, $objectid, $dbtable);
// Nombre de ligne pour choix de produit/service prédéfinis // Nombre de ligne pour choix de produit/service pr<EFBFBD>d<EFBFBD>finis
$NBLINES=4; $NBLINES=4;
$form=new Form($db); $form=new Form($db);
@ -180,7 +180,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer)
$db->begin(); $db->begin();
// Si on a selectionné une propal à copier, on réalise la copie // Si on a selectionn<EFBFBD> une propal <20> copier, on r<>alise la copie
if($_POST['createmode']=='copy' && $_POST['copie_propal']) if($_POST['createmode']=='copy' && $_POST['copie_propal'])
{ {
if ($propal->fetch($_POST['copie_propal']) > 0) if ($propal->fetch($_POST['copie_propal']) > 0)
@ -244,7 +244,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer)
{ {
$error=0; $error=0;
// Insertion contact par defaut si défini // Insertion contact par defaut si d<EFBFBD>fini
if ($_POST["contactidp"]) if ($_POST["contactidp"])
{ {
$result=$propal->add_contact($_POST["contactidp"],'CUSTOMER','external'); $result=$propal->add_contact($_POST["contactidp"],'CUSTOMER','external');
@ -323,13 +323,13 @@ if ($_POST['action'] == 'send')
if ($_POST['sendto']) if ($_POST['sendto'])
{ {
// Le destinataire a été fourni via le champ libre // Le destinataire a <EFBFBD>t<EFBFBD> fourni via le champ libre
$sendto = $_POST['sendto']; $sendto = $_POST['sendto'];
$sendtoid = 0; $sendtoid = 0;
} }
elseif ($_POST['receiver']) elseif ($_POST['receiver'])
{ {
// Le destinataire a été fourni via la liste déroulante // Le destinataire a <EFBFBD>t<EFBFBD> fourni via la liste d<>roulante
if ($_POST['receiver'] < 0) // Id du tiers if ($_POST['receiver'] < 0) // Id du tiers
{ {
$sendto = $propal->client->email; $sendto = $propal->client->email;
@ -360,11 +360,11 @@ if ($_POST['action'] == 'send')
} }
$actiontypeid=3; $actiontypeid=3;
$actionmsg ='Mail envoyé par '.$from.' à '.$sendto.'.<br>'; $actionmsg ='Mail envoy<EFBFBD> par '.$from.' <20> '.$sendto.'.<br>';
if ($message) if ($message)
{ {
$actionmsg.='Texte utilisé dans le corps du message:<br>'; $actionmsg.='Texte utilis<EFBFBD> dans le corps du message:<br>';
$actionmsg.=$message; $actionmsg.=$message;
} }
@ -455,7 +455,7 @@ if ($_POST['action'] == 'send')
{ {
$langs->load("other"); $langs->load("other");
$mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>'; $mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>';
dolibarr_syslog('Impossible de lire les données de la facture. Le fichier facture n\'a peut-être pas été généré.'); dolibarr_syslog('Impossible de lire les donn<EFBFBD>es de la facture. Le fichier facture n\'a peut-<2D>tre pas <20>t<EFBFBD> g<>n<EFBFBD>r<EFBFBD>.');
} }
} }
@ -479,6 +479,27 @@ if ($_GET['action'] == 'modif' && $user->rights->propale->creer)
$propal->set_draft($user->id); $propal->set_draft($user->id);
} }
if ($_POST['action'] == "setabsolutediscount" && $user->rights->propale->creer)
{
if ($_POST["remise_id"])
{
$prop = new Propal($db);
$prop->id=$_GET['propalid'];
$ret=$prop->fetch($_GET['propalid']);
if ($ret > 0)
{
$result=$prop->insert_discount($_POST["remise_id"]);
if ($result < 0)
{
$mesg='<div class="error">'.$prop->error.'</div>';
}
}
else
{
dolibarr_print_error($db,$prop->error);
}
}
}
/* /*
* Ajout d'une ligne produit dans la propale * Ajout d'une ligne produit dans la propale
@ -577,7 +598,7 @@ if ($_POST['action'] == "addligne" && $user->rights->propale->creer)
} }
/* /*
* Mise à jour d'une ligne dans la propale * Mise <EFBFBD> jour d'une ligne dans la propale
*/ */
if ($_POST['action'] == 'updateligne' && $user->rights->propale->creer && $_POST["save"] == $langs->trans("Save")) if ($_POST['action'] == 'updateligne' && $user->rights->propale->creer && $_POST["save"] == $langs->trans("Save"))
{ {
@ -637,7 +658,7 @@ if ($_POST['action'] == 'classin')
$propal->set_project($user, $_POST['projetidp']); $propal->set_project($user, $_POST['projetidp']);
} }
// Conditions de règlement // Conditions de r<EFBFBD>glement
if ($_POST["action"] == 'setconditions') if ($_POST["action"] == 'setconditions')
{ {
$propal = new Propal($db); $propal = new Propal($db);
@ -662,7 +683,7 @@ if ($_REQUEST['action'] == 'setremiseabsolue' && $user->rights->propale->creer)
$_GET['propalid']=$_REQUEST['propalid']; $_GET['propalid']=$_REQUEST['propalid'];
} }
// Mode de règlement // Mode de r<EFBFBD>glement
if ($_POST["action"] == 'setmode') if ($_POST["action"] == 'setmode')
{ {
$propal = new Propal($db); $propal = new Propal($db);
@ -794,7 +815,7 @@ if ($_GET['propalid'] > 0)
$rowspan=8; $rowspan=8;
// Société // Soci<EFBFBD>t<EFBFBD>
print '<tr><td>'.$langs->trans('Company').'</td><td colspan="5">'.$societe->getNomUrl(1).'</td>'; print '<tr><td>'.$langs->trans('Company').'</td><td colspan="5">'.$societe->getNomUrl(1).'</td>';
print '</tr>'; print '</tr>';
@ -802,21 +823,28 @@ if ($_GET['propalid'] > 0)
print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="5">'; print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="5">';
if ($societe->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$societe->remise_client); if ($societe->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$societe->remise_client);
else print $langs->trans("CompanyHasNoRelativeDiscount"); else print $langs->trans("CompanyHasNoRelativeDiscount");
$absolute_discount=$societe->getCurrentDiscount(); $absolute_discount=$societe->getCurrentDiscount('','fk_facture_source IS NULL');
$absolute_creditnote=$societe->getCurrentDiscount('','fk_facture_source IS NOT NULL');
print '. '; print '. ';
if ($absolute_discount) if ($absolute_discount)
{ {
if ($propal->statut > 0) if ($propal->statut > 0)
{ {
print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->monnaie)); print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->monnaie));
} }
else else
{ {
// Remise dispo de type non avoir
$filter='fk_facture_source IS NULL';
print '<br>'; print '<br>';
print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?propalid='.$propal->id,0,'remise_id',$societe->id,$absolute_discount); print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?propalid='.$propal->id,0,'remise_id',$societe->id,$absolute_discount,$filter);
} }
} }
else print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; if ($absolute_creditnote)
{
print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->monnaie)).'. ';
}
if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.';
print '</td></tr>'; print '</td></tr>';
// Dates // Dates
@ -868,8 +896,8 @@ if ($_GET['propalid'] > 0)
print '</tr>'; print '</tr>';
// date de livraison (conditionné sur PROPALE_ADD_SHIPPING_DATE car carac à // date de livraison (conditionn<EFBFBD> sur PROPALE_ADD_SHIPPING_DATE car carac <20>
// gérer par les commandes et non les propal // g<EFBFBD>rer par les commandes et non les propal
if ($conf->expedition->enabled) if ($conf->expedition->enabled)
{ {
if ($conf->global->PROPALE_ADD_SHIPPING_DATE) if ($conf->global->PROPALE_ADD_SHIPPING_DATE)
@ -921,7 +949,7 @@ if ($_GET['propalid'] > 0)
} }
} }
// Conditions et modes de réglement // Conditions et modes de r<EFBFBD>glement
print '<tr><td>'; print '<tr><td>';
print '<table class="nobordernopadding" width="100%"><tr><td>'; print '<table class="nobordernopadding" width="100%"><tr><td>';
print $langs->trans('PaymentConditionsShort'); print $langs->trans('PaymentConditionsShort');
@ -1175,7 +1203,7 @@ if ($_GET['propalid'] > 0)
print '<td class="nobordernopadding" nowrap="nowrap" align="left">'; print '<td class="nobordernopadding" nowrap="nowrap" align="left">';
if (($objp->info_bits & 2) == 2) if (($objp->info_bits & 2) == 2)
{ {
// Ligne remise prédéfinie, on ne permet pas modif // Ligne remise pr<EFBFBD>d<EFBFBD>finie, on ne permet pas modif
} }
else else
{ {
@ -1227,7 +1255,7 @@ if ($_GET['propalid'] > 0)
print '<td align="center">'; print '<td align="center">';
if (($objp->info_bits & 2) == 2) if (($objp->info_bits & 2) == 2)
{ {
// Ligne remise prédéfinie, on permet pas modif // Ligne remise pr<EFBFBD>d<EFBFBD>finie, on permet pas modif
} }
else else
{ {
@ -1302,7 +1330,7 @@ if ($_GET['propalid'] > 0)
} }
if ($_GET["action"] == 'editline') if ($_GET["action"] == 'editline')
{ {
// éditeur wysiwyg // <EFBFBD>diteur wysiwyg
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
@ -1351,7 +1379,7 @@ if ($_GET['propalid'] > 0)
if ($conf->service->enabled) if ($conf->service->enabled)
{ {
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print '<td colspan="5">Si produit de type service à durée limitée: Du '; print '<td colspan="5">Si produit de type service <EFBFBD> dur<75>e limit<69>e: Du ';
print $html->select_date($objp->date_start,"date_start",0,0,$objp->date_start?0:1); print $html->select_date($objp->date_start,"date_start",0,0,$objp->date_start?0:1);
print ' au '; print ' au ';
print $html->select_date($objp->date_end,"date_end",0,0,$objp->date_end?0:1); print $html->select_date($objp->date_end,"date_end",0,0,$objp->date_end?0:1);
@ -1389,7 +1417,7 @@ if ($_GET['propalid'] > 0)
print '<td colspan="4">&nbsp;</td>'; print '<td colspan="4">&nbsp;</td>';
print "</tr>\n"; print "</tr>\n";
// Ajout produit produits/services personnalisés // Ajout produit produits/services personnalis<EFBFBD>s
print '<form action="'.$_SERVER["PHP_SELF"].'?propalid='.$propal->id.'#add" method="post">'; print '<form action="'.$_SERVER["PHP_SELF"].'?propalid='.$propal->id.'#add" method="post">';
print '<input type="hidden" name="propalid" value="'.$propal->id.'">'; print '<input type="hidden" name="propalid" value="'.$propal->id.'">';
print '<input type="hidden" name="action" value="addligne">'; print '<input type="hidden" name="action" value="addligne">';
@ -1398,7 +1426,7 @@ if ($_GET['propalid'] > 0)
print '<tr '.$bc[$var].">\n"; print '<tr '.$bc[$var].">\n";
print '<td '.$colspan.'>'; print '<td '.$colspan.'>';
// éditeur wysiwyg // <EFBFBD>diteur wysiwyg
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO) if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
@ -1428,7 +1456,7 @@ if ($_GET['propalid'] > 0)
print '</form>'; print '</form>';
// Ajout de produits/services prédéfinis // Ajout de produits/services pr<EFBFBD>d<EFBFBD>finis
if ($conf->produit->enabled) if ($conf->produit->enabled)
{ {
if ($conf->global->PRODUIT_USE_MARKUP) if ($conf->global->PRODUIT_USE_MARKUP)
@ -1475,7 +1503,7 @@ if ($_GET['propalid'] > 0)
if (! $conf->global->PRODUIT_CHANGE_PROD_DESC) if (! $conf->global->PRODUIT_CHANGE_PROD_DESC)
{ {
// éditeur wysiwyg // <EFBFBD>diteur wysiwyg
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO) if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
@ -1505,7 +1533,7 @@ if ($_GET['propalid'] > 0)
print "\n"; print "\n";
/* /*
* Formulaire cloture (signé ou non) * Formulaire cloture (sign<EFBFBD> ou non)
*/ */
$form_close = '<form action="'.$_SERVER["PHP_SELF"].'?propalid='.$propal->id.'" method="post">'; $form_close = '<form action="'.$_SERVER["PHP_SELF"].'?propalid='.$propal->id.'" method="post">';
$form_close.= '<table class="border" width="100%">'; $form_close.= '<table class="border" width="100%">';
@ -1639,7 +1667,7 @@ if ($_GET['propalid'] > 0)
/* /*
* Documents générés * Documents g<EFBFBD>n<EFBFBD>r<EFBFBD>s
*/ */
$filename=sanitize_string($propal->ref); $filename=sanitize_string($propal->ref);
$filedir=$conf->propal->dir_output . "/" . sanitize_string($propal->ref); $filedir=$conf->propal->dir_output . "/" . sanitize_string($propal->ref);
@ -1653,7 +1681,7 @@ if ($_GET['propalid'] > 0)
/* /*
* Commandes rattachées * Commandes rattach<EFBFBD>es
*/ */
if($conf->commande->enabled) if($conf->commande->enabled)
{ {
@ -1688,7 +1716,7 @@ if ($_GET['propalid'] > 0)
print '</td><td valign="top" width="50%">'; print '</td><td valign="top" width="50%">';
/* /*
* Liste des actions propres à la propal * Liste des actions propres <EFBFBD> la propal
*/ */
$sql = 'SELECT id, '.$db->pdate('a.datea'). ' as da, label, note, fk_user_author' ; $sql = 'SELECT id, '.$db->pdate('a.datea'). ' as da, label, note, fk_user_author' ;
$sql .= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a'; $sql .= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a';
@ -1750,7 +1778,7 @@ if ($_GET['propalid'] > 0)
$liste[$key]=$value; $liste[$key]=$value;
} }
// Créé l'objet formulaire mail // Cr<EFBFBD><EFBFBD> l'objet formulaire mail
include_once('../html.formmail.class.php'); include_once('../html.formmail.class.php');
$formmail = new FormMail($db); $formmail = new FormMail($db);
$formmail->fromname = $user->fullname; $formmail->fromname = $user->fullname;
@ -1764,7 +1792,7 @@ if ($_GET['propalid'] > 0)
$formmail->withdeliveryreceipt=1; $formmail->withdeliveryreceipt=1;
// Tableau des substitutions // Tableau des substitutions
$formmail->substit['__PROPREF__']=$propal->ref; $formmail->substit['__PROPREF__']=$propal->ref;
// Tableau des paramètres complémentaires // Tableau des param<EFBFBD>tres compl<70>mentaires
$formmail->param['action']='send'; $formmail->param['action']='send';
$formmail->param['models']='propal_send'; $formmail->param['models']='propal_send';
$formmail->param['propalid']=$propal->id; $formmail->param['propalid']=$propal->id;
@ -1917,7 +1945,7 @@ else
$url = DOL_URL_ROOT.'/comm/prospect/fiche.php?socid='.$objp->rowid; $url = DOL_URL_ROOT.'/comm/prospect/fiche.php?socid='.$objp->rowid;
} }
// Société // Soci<EFBFBD>t<EFBFBD>
print '<td><a href="'.$url.'">'.img_object($langs->trans('ShowCompany'),'company').' '.$objp->nom.'</a></td>'; print '<td><a href="'.$url.'">'.img_object($langs->trans('ShowCompany'),'company').' '.$objp->nom.'</a></td>';
// Date propale // Date propale

View File

@ -52,7 +52,7 @@ $user->getrights('expedition');
if (!$user->rights->commande->lire) accessforbidden(); if (!$user->rights->commande->lire) accessforbidden();
// Sécurité accés client // S<EFBFBD>curit<EFBFBD> acc<63>s client
$socid=0; $socid=0;
if ($user->societe_id > 0) if ($user->societe_id > 0)
{ {
@ -69,7 +69,7 @@ if ($user->societe_id >0 && isset($_GET["id"]) && $_GET["id"]>0)
// Récupération de l'id de projet // R<EFBFBD>cup<EFBFBD>ration de l'id de projet
$projetid = 0; $projetid = 0;
if ($_GET["projetid"]) if ($_GET["projetid"])
{ {
@ -147,7 +147,7 @@ if ($_POST['action'] == 'add' && $user->rights->commande->creer)
$commande->note = $_POST['note']; $commande->note = $_POST['note'];
$commande->source = $_POST['source_id']; $commande->source = $_POST['source_id'];
$commande->projetid = $_POST['projetid']; $commande->projetid = $_POST['projetid'];
//$commande->remise_absolue = $_POST['remise_absolue']; //la remise était appliquée sur les lignes et sur le total //$commande->remise_absolue = $_POST['remise_absolue']; //la remise <EFBFBD>tait appliqu<71>e sur les lignes et sur le total
//$commande->remise_percent = $_POST['remise_percent']; //$commande->remise_percent = $_POST['remise_percent'];
$commande->ref_client = $_POST['ref_client']; $commande->ref_client = $_POST['ref_client'];
$commande->modelpdf = $_POST['model']; $commande->modelpdf = $_POST['model'];
@ -173,7 +173,7 @@ if ($_POST['action'] == 'add' && $user->rights->commande->creer)
if ($commande_id > 0) if ($commande_id > 0)
{ {
// Insertion contact par defaut si défini // Insertion contact par defaut si d<EFBFBD>fini
if ($_POST["contactidp"]) if ($_POST["contactidp"])
{ {
$result=$commande->add_contact($_POST["contactidp"],'CUSTOMER','external'); $result=$commande->add_contact($_POST["contactidp"],'CUSTOMER','external');
@ -193,7 +193,7 @@ if ($_POST['action'] == 'add' && $user->rights->commande->creer)
$action = ''; $action = '';
} }
// Fin création facture, on l'affiche // Fin cr<EFBFBD>ation facture, on l'affiche
if ($commande_id > 0 && ! $error) if ($commande_id > 0 && ! $error)
{ {
$db->commit(); $db->commit();
@ -393,7 +393,7 @@ if ($_POST['action'] == 'addligne' && $user->rights->commande->creer)
} }
/* /*
* Mise à jour d'une ligne dans la commande * Mise <EFBFBD> jour d'une ligne dans la commande
*/ */
if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['save'] == $langs->trans('Save')) if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['save'] == $langs->trans('Save'))
{ {
@ -423,12 +423,12 @@ if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POS
exit; exit;
} }
$_GET['id']=$_POST['id']; // Pour réaffichage de la fiche en cours d'édition $_GET['id']=$_POST['id']; // Pour r<EFBFBD>affichage de la fiche en cours d'<27>dition
} }
if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['cancel'] == $langs->trans('Cancel')) if ($_POST['action'] == 'updateligne' && $user->rights->commande->creer && $_POST['cancel'] == $langs->trans('Cancel'))
{ {
Header('Location: fiche.php?id='.$_POST['id']); // Pour réaffichage de la fiche en cours d'édition Header('Location: fiche.php?id='.$_POST['id']); // Pour r<EFBFBD>affichage de la fiche en cours d'<27>dition
exit; exit;
} }
@ -511,10 +511,10 @@ if ($_REQUEST['action'] == 'builddoc') // En get ou en post
{ {
/* /*
* Generation de la commande * Generation de la commande
* définit dans /includes/modules/commande/modules_commande.php * d<EFBFBD>finit dans /includes/modules/commande/modules_commande.php
*/ */
// Sauvegarde le dernier modèle choisi pour générer un document // Sauvegarde le dernier mod<EFBFBD>le choisi pour g<>n<EFBFBD>rer un document
$commande = new Commande($db, 0, $_REQUEST['id']); $commande = new Commande($db, 0, $_REQUEST['id']);
$commande->fetch($_REQUEST['id']); $commande->fetch($_REQUEST['id']);
if ($_REQUEST['model']) if ($_REQUEST['model'])
@ -573,13 +573,13 @@ if ($_POST['action'] == 'send')
if ($_POST['sendto']) if ($_POST['sendto'])
{ {
// Le destinataire a été fourni via le champ libre // Le destinataire a <EFBFBD>t<EFBFBD> fourni via le champ libre
$sendto = $_POST['sendto']; $sendto = $_POST['sendto'];
$sendtoid = 0; $sendtoid = 0;
} }
elseif ($_POST['receiver']) elseif ($_POST['receiver'])
{ {
// Le destinataire a été fourni via la liste déroulante // Le destinataire a <EFBFBD>t<EFBFBD> fourni via la liste d<>roulante
if ($_POST['receiver'] < 0) // Id du tiers if ($_POST['receiver'] < 0) // Id du tiers
{ {
$sendto = $commande->client->email; $sendto = $commande->client->email;
@ -610,11 +610,11 @@ if ($_POST['action'] == 'send')
} }
$actiontypeid=8; $actiontypeid=8;
$actionmsg ='Mail envoyé par '.$from.' à '.$sendto.'.<br>'; $actionmsg ='Mail envoy<EFBFBD> par '.$from.' <20> '.$sendto.'.<br>';
if ($message) if ($message)
{ {
$actionmsg.='Texte utilisé dans le corps du message:<br>'; $actionmsg.='Texte utilis<EFBFBD> dans le corps du message:<br>';
$actionmsg.=$message; $actionmsg.=$message;
} }
@ -705,7 +705,7 @@ if ($_POST['action'] == 'send')
{ {
$langs->load("other"); $langs->load("other");
$mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>'; $mesg='<div class="error">'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Invoice")).'</div>';
dolibarr_syslog('Impossible de lire les données de la facture. Le fichier facture n\'a peut-être pas été généré.'); dolibarr_syslog('Impossible de lire les donn<EFBFBD>es de la facture. Le fichier facture n\'a peut-<2D>tre pas <20>t<EFBFBD> g<>n<EFBFBD>r<EFBFBD>.');
} }
} }
@ -822,12 +822,12 @@ if ($_GET['action'] == 'create' && $user->rights->commande->creer)
print '</td></tr>'; print '</td></tr>';
// Conditions de réglement // Conditions de r<EFBFBD>glement
print '<tr><td nowrap="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>'; print '<tr><td nowrap="nowrap">'.$langs->trans('PaymentConditionsShort').'</td><td>';
$html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id',-1,1); $html->select_conditions_paiements($soc->cond_reglement,'cond_reglement_id',-1,1);
print '</td></tr>'; print '</td></tr>';
// Mode de réglement // Mode de r<EFBFBD>glement
print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>'; print '<tr><td>'.$langs->trans('PaymentMode').'</td><td>';
$html->select_types_paiements($soc->mode_reglement,'mode_reglement_id'); $html->select_types_paiements($soc->mode_reglement,'mode_reglement_id');
print '</td></tr>'; print '</td></tr>';
@ -877,7 +877,7 @@ if ($_GET['action'] == 'create' && $user->rights->commande->creer)
if ($conf->global->PRODUCT_SHOW_WHEN_CREATE) if ($conf->global->PRODUCT_SHOW_WHEN_CREATE)
{ {
/* /*
* Services/produits prédéfinis * Services/produits pr<EFBFBD>d<EFBFBD>finis
*/ */
$NBLINES=8; $NBLINES=8;
@ -1022,7 +1022,7 @@ else
*/ */
if ($_GET['action'] == 'validate') if ($_GET['action'] == 'validate')
{ {
// on vérifie si la facture est en numérotation provisoire // on v<EFBFBD>rifie si la facture est en num<75>rotation provisoire
$ref = substr($commande->ref, 1, 4); $ref = substr($commande->ref, 1, 4);
if ($ref == 'PROV') if ($ref == 'PROV')
{ {
@ -1075,8 +1075,7 @@ else
// Ref // Ref
print '<tr><td width="18%">'.$langs->trans('Ref').'</td>'; print '<tr><td width="18%">'.$langs->trans('Ref').'</td>';
print '<td colspan="2">'.$commande->ref.'</td>'; print '<td colspan="3">'.$commande->ref.'</td>';
print '<td align="right">'.$langs->trans('Author').' : '.$author->fullname.'</td>';
print '</tr>'; print '</tr>';
// Ref commande client // Ref commande client
@ -1103,7 +1102,7 @@ else
print '</tr>'; print '</tr>';
// Société // Soci<EFBFBD>t<EFBFBD>
print '<tr><td>'.$langs->trans('Company').'</td>'; print '<tr><td>'.$langs->trans('Company').'</td>';
print '<td colspan="3">'.$soc->getNomUrl(1).'</td>'; print '<td colspan="3">'.$soc->getNomUrl(1).'</td>';
print '</tr>'; print '</tr>';
@ -1112,21 +1111,28 @@ else
print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">'; print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">';
if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client);
else print $langs->trans("CompanyHasNoRelativeDiscount"); else print $langs->trans("CompanyHasNoRelativeDiscount");
$absolute_discount=$soc->getCurrentDiscount(); $absolute_discount=$soc->getCurrentDiscount('','fk_facture_source IS NULL');
$absolute_creditnote=$soc->getCurrentDiscount('','fk_facture_source IS NOT NULL');
print '. '; print '. ';
if ($absolute_discount) if ($absolute_discount)
{ {
if ($commande->statut > 0) if ($commande->statut > 0)
{ {
print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->trans("Currency".$conf->monnaie)); print $langs->trans("CompanyHasAbsoluteDiscount",$absolute_discount,$langs->transnoentities("Currency".$conf->monnaie));
} }
else else
{ {
// Remise dispo de type non avoir
$filter='fk_facture_source IS NULL';
print '<br>'; print '<br>';
print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount); print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount,$filter);
} }
} }
else print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; if ($absolute_creditnote)
{
print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->monnaie)).'. ';
}
if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.';
print '</td></tr>'; print '</td></tr>';
// Date // Date
@ -1194,7 +1200,7 @@ else
print '</td></tr>'; print '</td></tr>';
} }
// Conditions et modes de réglement // Conditions et modes de r<EFBFBD>glement
print '<tr><td height="10">'; print '<tr><td height="10">';
print '<table class="nobordernopadding" width="100%"><tr><td>'; print '<table class="nobordernopadding" width="100%"><tr><td>';
print $langs->trans('PaymentConditionsShort'); print $langs->trans('PaymentConditionsShort');
@ -1213,7 +1219,7 @@ else
} }
print '</td>'; print '</td>';
//Note public lorsque le module expedition n'est pas activé //Note public lorsque le module expedition n'est pas activ<EFBFBD>
if (!$conf->projet->enabled) $nbrow--; if (!$conf->projet->enabled) $nbrow--;
if (!$conf->expedition->enabled) if (!$conf->expedition->enabled)
{ {
@ -1342,7 +1348,7 @@ else
$text.= ' - '.$objp->product; $text.= ' - '.$objp->product;
$description=($conf->global->PRODUIT_DESC_IN_FORM?'':$objp->description); $description=($conf->global->PRODUIT_DESC_IN_FORM?'':$objp->description);
print $html->textwithtooltip($text,$description,3,'','',$i); print $html->textwithtooltip($text,$description,3,'','',$i);
// Todo: voir si on insert ou pas en option les dates de début et de fin de service // Todo: voir si on insert ou pas en option les dates de d<EFBFBD>but et de fin de service
//print_date_range($objp->date_start,$objp->date_end); //print_date_range($objp->date_start,$objp->date_end);
if ($conf->global->PRODUIT_DESC_IN_FORM) if ($conf->global->PRODUIT_DESC_IN_FORM)
{ {
@ -1407,7 +1413,7 @@ else
print '<td align="center">'; print '<td align="center">';
if (($objp->info_bits & 2) == 2) if (($objp->info_bits & 2) == 2)
{ {
// Ligne remise prédéfinie, on permet pas modif // Ligne remise pr<EFBFBD>d<EFBFBD>finie, on permet pas modif
} }
else else
{ {
@ -1479,7 +1485,7 @@ else
print ' - '.nl2br($objp->product); print ' - '.nl2br($objp->product);
print '<br>'; print '<br>';
} }
// éditeur wysiwyg // <EFBFBD>diteur wysiwyg
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
@ -1544,7 +1550,7 @@ else
print '<td colspan="4">&nbsp;</td>'; print '<td colspan="4">&nbsp;</td>';
print '</tr>'; print '</tr>';
// Ajout produit produits/services personnalisés // Ajout produit produits/services personnalis<EFBFBD>s
print '<form action="fiche.php?id='.$id.'#add" method="post">'; print '<form action="fiche.php?id='.$id.'#add" method="post">';
print '<input type="hidden" name="id" value="'.$id.'">'; print '<input type="hidden" name="id" value="'.$id.'">';
print '<input type="hidden" name="action" value="addligne">'; print '<input type="hidden" name="action" value="addligne">';
@ -1552,7 +1558,7 @@ else
$var=true; $var=true;
print '<tr '.$bc[$var].'>'; print '<tr '.$bc[$var].'>';
print '<td>'; print '<td>';
// éditeur wysiwyg // <EFBFBD>diteur wysiwyg
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO) if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
@ -1578,7 +1584,7 @@ else
print '</form>'; print '</form>';
// Ajout de produits/services prédéfinis // Ajout de produits/services pr<EFBFBD>d<EFBFBD>finis
if ($conf->produit->enabled) if ($conf->produit->enabled)
{ {
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
@ -1618,7 +1624,7 @@ else
if (! $conf->global->PRODUIT_CHANGE_PROD_DESC) if (! $conf->global->PRODUIT_CHANGE_PROD_DESC)
{ {
// éditeur wysiwyg // <EFBFBD>diteur wysiwyg
if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO) if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS_PERSO)
{ {
require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php");
@ -1656,7 +1662,7 @@ else
print '<a class="butAction" '; print '<a class="butAction" ';
if ($conf->use_ajax && $conf->global->MAIN_CONFIRM_AJAX) if ($conf->use_ajax && $conf->global->MAIN_CONFIRM_AJAX)
{ {
// on vérifie si la facture est en numérotation provisoire // on v<EFBFBD>rifie si la facture est en num<75>rotation provisoire
$ref = substr($commande->ref, 1, 4); $ref = substr($commande->ref, 1, 4);
if ($ref == 'PROV') if ($ref == 'PROV')
{ {
@ -1794,7 +1800,7 @@ else
print '<a name="builddoc"></a>'; // ancre print '<a name="builddoc"></a>'; // ancre
/* /*
* Documents générés * Documents g<EFBFBD>n<EFBFBD>r<EFBFBD>s
* *
*/ */
$comref = sanitize_string($commande->ref); $comref = sanitize_string($commande->ref);
@ -1850,7 +1856,7 @@ else
print '</td><td valign="top" width="50%">'; print '</td><td valign="top" width="50%">';
/* /*
* Liste des actions propres à la commande * Liste des actions propres <EFBFBD> la commande
*/ */
$sql = 'SELECT id, '.$db->pdate('a.datea'). ' as da, label, note, fk_user_author' ; $sql = 'SELECT id, '.$db->pdate('a.datea'). ' as da, label, note, fk_user_author' ;
$sql .= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a'; $sql .= ' FROM '.MAIN_DB_PREFIX.'actioncomm as a';
@ -1936,7 +1942,7 @@ else
$liste[$key]=$value; $liste[$key]=$value;
} }
// Créé l'objet formulaire mail // Cr<EFBFBD><EFBFBD> l'objet formulaire mail
include_once('../html.formmail.class.php'); include_once('../html.formmail.class.php');
$formmail = new FormMail($db); $formmail = new FormMail($db);
$formmail->fromname = $user->fullname; $formmail->fromname = $user->fullname;
@ -1950,7 +1956,7 @@ else
$formmail->withdeliveryreceipt=1; $formmail->withdeliveryreceipt=1;
// Tableau des substitutions // Tableau des substitutions
$formmail->substit['__ORDERREF__']=$commande->ref; $formmail->substit['__ORDERREF__']=$commande->ref;
// Tableau des paramètres complémentaires // Tableau des param<EFBFBD>tres compl<70>mentaires
$formmail->param['action']='send'; $formmail->param['action']='send';
$formmail->param['models']='order_send'; $formmail->param['models']='order_send';
$formmail->param['orderid']=$commande->id; $formmail->param['orderid']=$commande->id;
@ -1963,7 +1969,7 @@ else
} }
else else
{ {
// Commande non trouvée // Commande non trouv<EFBFBD>e
dolibarr_print_error($db); dolibarr_print_error($db);
} }
} }

View File

@ -42,7 +42,7 @@ $user->getrights('commande');
if (! $user->rights->commande->lire) accessforbidden(); if (! $user->rights->commande->lire) accessforbidden();
// Sécurité accés client // S<EFBFBD>curit<EFBFBD> acc<63>s client
if ($user->societe_id > 0) if ($user->societe_id > 0)
{ {
$action = ''; $action = '';
@ -126,7 +126,7 @@ if ($_GET["id"] > 0)
print '</tr>'; print '</tr>';
// Société // Soci<EFBFBD>t<EFBFBD>
print '<tr><td>'.$langs->trans('Company').'</td>'; print '<tr><td>'.$langs->trans('Company').'</td>';
print '<td colspan="3">'.$soc->getNomUrl(1,'compta').'</td>'; print '<td colspan="3">'.$soc->getNomUrl(1,'compta').'</td>';
print '</tr>'; print '</tr>';
@ -135,21 +135,28 @@ if ($_GET["id"] > 0)
print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">'; print '<tr><td>'.$langs->trans('Discounts').'</td><td colspan="3">';
if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client);
else print $langs->trans("CompanyHasNoRelativeDiscount"); else print $langs->trans("CompanyHasNoRelativeDiscount");
$absolute_discount=$soc->getCurrentDiscount(); $absolute_discount=$soc->getCurrentDiscount('','fk_facture_source IS NULL');
$absolute_creditnote=$soc->getCurrentDiscount('','fk_facture_source IS NOT NULL');
print '. '; print '. ';
if ($absolute_discount) if ($absolute_discount)
{ {
if ($commande->statut > 0) if ($commande->statut > 0)
{ {
print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->monnaie)); print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->monnaie));
} }
else else
{ {
// Remise dispo de type non avoir
$filter='fk_facture_source IS NULL';
print '<br>'; print '<br>';
print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount); print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?id='.$commande->id,0,'remise_id',$soc->id,$absolute_discount,$filter);
} }
} }
else print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; if ($absolute_creditnote)
{
print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->monnaie)).'. ';
}
if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.';
print '</td></tr>'; print '</td></tr>';
// Date // Date
@ -214,7 +221,7 @@ if ($_GET["id"] > 0)
} }
print '</td></tr>'; print '</td></tr>';
// Conditions et modes de réglement // Conditions et modes de r<EFBFBD>glement
print '<tr><td height="10">'; print '<tr><td height="10">';
print '<table class="nobordernopadding" width="100%"><tr><td>'; print '<table class="nobordernopadding" width="100%"><tr><td>';
print $langs->trans('PaymentConditionsShort'); print $langs->trans('PaymentConditionsShort');
@ -436,7 +443,7 @@ if ($_GET["id"] > 0)
/* /*
* Documents générés * Documents g<EFBFBD>n<EFBFBD>r<EFBFBD>s
* *
*/ */
$comref = sanitize_string($commande->ref); $comref = sanitize_string($commande->ref);
@ -498,7 +505,7 @@ if ($_GET["id"] > 0)
/* /*
* Liste des expéditions * Liste des exp<EFBFBD>ditions
*/ */
$sql = "SELECT cd.fk_product, cd.description, cd.rowid, cd.qty as qty_commande"; $sql = "SELECT cd.fk_product, cd.description, cd.rowid, cd.qty as qty_commande";
$sql .= " , ed.qty as qty_livre, e.ref, ed.fk_expedition as expedition_id"; $sql .= " , ed.qty as qty_livre, e.ref, ed.fk_expedition as expedition_id";
@ -593,7 +600,7 @@ if ($_GET["id"] > 0)
} }
else else
{ {
// Commande non trouvée // Commande non trouv<EFBFBD>e
print "Commande inexistante"; print "Commande inexistante";
} }
} }

View File

@ -1685,8 +1685,9 @@ else
$soc = new Societe($db, $fac->socid); $soc = new Societe($db, $fac->socid);
$soc->fetch($fac->socid); $soc->fetch($fac->socid);
$absolute_discount=$soc->getCurrentDiscount(); $absolute_discount=$soc->getCurrentDiscount('','fk_facture_source IS NULL');
$absolute_creditnote=$soc->getCurrentDiscount('','fk_facture_source IS NOT NULL');
$totalpaye = $fac->getSommePaiement(); $totalpaye = $fac->getSommePaiement();
$resteapayer = $fac->total_ttc - $totalpaye; $resteapayer = $fac->total_ttc - $totalpaye;
if ($fac->paye) $resteapayer=0; if ($fac->paye) $resteapayer=0;
@ -1956,15 +1957,32 @@ else
{ {
if ($fac->statut > 0 || $fac->type == 2) if ($fac->statut > 0 || $fac->type == 2)
{ {
print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->monnaie)); print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->monnaie)).'. ';
} }
else else
{ {
// Remise dispo de type non avoir
$filter='fk_facture_source IS NULL';
print '<br>'; print '<br>';
print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$fac->id,0,'remise_id',$soc->id,price($absolute_discount)); print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$fac->id,0,'remise_id',$soc->id,$absolute_discount,$filter);
} }
} }
else print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; if ($absolute_creditnote)
{
// If validated, we show link "add credit note to payment"
if ($fac->statut != 1 || $fac->type == 2)
{
print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->monnaie)).'. ';
}
else
{
// Remise dispo de type avoir
$filter='fk_facture_source IS NOT NULL';
if (! $absolute_discount) print '<br>';
print $html->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$fac->id,0,'remise_id_for_payment',$soc->id,$absolute_creditnote,$filter);
}
}
if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.';
print '</td></tr>'; print '</td></tr>';
// Dates // Dates

View File

@ -2382,10 +2382,9 @@ class Facture extends CommonObject
if ($obj->fk_statut == 2) $qualified=1; if ($obj->fk_statut == 2) $qualified=1;
if ($qualified) if ($qualified)
{ {
//$ref=$obj->facnumber; //$ref=$obj->facnumber;
$ref=($obj->fk_paiement?1:0); $paymentornot=($obj->fk_paiement?1:0);
$return[$obj->rowid]=$ref; $return[$obj->rowid]=$paymentornot;
} }
} }

View File

@ -6,7 +6,7 @@
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2006 Marc Barilley/Océbo <marc@ocebo.com> * Copyright (C) 2006 Marc Barilley/Oc<EFBFBD>bo <marc@ocebo.com>
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerker@telenet.be> * Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerker@telenet.be>
* Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com> * Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
* *
@ -30,14 +30,14 @@
/** /**
\file htdocs/html.form.class.php \file htdocs/html.form.class.php
\brief Fichier de la classe des fonctions prédéfinie de composants html \brief Fichier de la classe des fonctions pr<EFBFBD>d<EFBFBD>finie de composants html
\version $Revision$ \version $Revision$
*/ */
/** /**
\class Form \class Form
\brief Classe permettant la génération de composants html \brief Classe permettant la g<EFBFBD>n<EFBFBD>ration de composants html
*/ */
class Form class Form
@ -54,7 +54,7 @@ class Form
/** /**
\brief Constructeur \brief Constructeur
\param DB handler d'accès base de donnée \param DB handler d'acc<EFBFBD>s base de donn<EFBFBD>e
*/ */
function Form($DB) function Form($DB)
{ {
@ -66,10 +66,10 @@ class Form
/** /**
\brief Affiche un texte+picto avec tooltip sur texte ou sur picto \brief Affiche un texte+picto avec tooltip sur texte ou sur picto
\param text Texte à afficher \param text Texte <EFBFBD> afficher
\param htmltext Contenu html du tooltip, codé en html \param htmltext Contenu html du tooltip, cod<EFBFBD> en html
\param tooltipon 1=tooltip sur texte, 2=tooltip sur picto, 3=tooltip sur les 2, 4=tooltip sur les 2 et forcé en Ajaxa \param tooltipon 1=tooltip sur texte, 2=tooltip sur picto, 3=tooltip sur les 2, 4=tooltip sur les 2 et forc<EFBFBD> en Ajaxa
\param direction -1=Le picto est avant, 0=pas de picto, 1=le picto est après \param direction -1=Le picto est avant, 0=pas de picto, 1=le picto est apr<EFBFBD>s
\param img Code img du picto \param img Code img du picto
\return string Code html du texte,picto \return string Code html du texte,picto
*/ */
@ -145,9 +145,9 @@ class Form
/** /**
\brief Affiche un texte avec picto help qui affiche un tooltip \brief Affiche un texte avec picto help qui affiche un tooltip
\param text Texte à afficher \param text Texte <EFBFBD> afficher
\param htmltooltip Contenu html du tooltip \param htmltooltip Contenu html du tooltip
\param direction 1=Le picto est après, -1=le picto est avant \param direction 1=Le picto est apr<EFBFBD>s, -1=le picto est avant
\param usehelpcursor 1=Utilise curseur help, 0=Curseur par defaut \param usehelpcursor 1=Utilise curseur help, 0=Curseur par defaut
\return string Code html du texte,picto \return string Code html du texte,picto
*/ */
@ -158,9 +158,9 @@ class Form
/** /**
\brief Affiche un texte avec picto warning qui affiche un tooltip \brief Affiche un texte avec picto warning qui affiche un tooltip
\param text Texte à afficher \param text Texte <EFBFBD> afficher
\param htmltooltip Contenu html du tooltip \param htmltooltip Contenu html du tooltip
\param direction 1=Le picto est après, -1=le picto est avant \param direction 1=Le picto est apr<EFBFBD>s, -1=le picto est avant
\return string Code html du texte,picto \return string Code html du texte,picto
*/ */
function textwithwarning($text,$htmltext,$direction=1) function textwithwarning($text,$htmltext,$direction=1)
@ -170,13 +170,13 @@ class Form
/** /**
* \brief Retourne la liste déroulante des départements/province/cantons tout pays confondu ou pour un pays donné. * \brief Retourne la liste d<EFBFBD>roulante des d<EFBFBD>partements/province/cantons tout pays confondu ou pour un pays donn<EFBFBD>.
* \remarks Dans le cas d'une liste tout pays confondus, l'affichage fait une rupture sur le pays. * \remarks Dans le cas d'une liste tout pays confondus, l'affichage fait une rupture sur le pays.
* \remarks La cle de la liste est le code (il peut y avoir plusieurs entrée pour * \remarks La cle de la liste est le code (il peut y avoir plusieurs entr<EFBFBD>e pour
* un code donnée mais dans ce cas, le champ pays diffère). * un code donn<EFBFBD>e mais dans ce cas, le champ pays diff<EFBFBD>re).
* Ainsi les liens avec les départements se font sur un département indépendemment de nom som. * Ainsi les liens avec les d<EFBFBD>partements se font sur un d<EFBFBD>partement ind<EFBFBD>pendemment de nom som.
* \param selected code forme juridique a présélectionné * \param selected code forme juridique a pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param pays_code 0=liste tous pays confondus, sinon code du pays à afficher * \param pays_code 0=liste tous pays confondus, sinon code du pays <EFBFBD> afficher
*/ */
function select_departement($selected='',$pays_code=0) function select_departement($selected='',$pays_code=0)
{ {
@ -187,7 +187,7 @@ class Form
$htmlname='departement_id'; $htmlname='departement_id';
// On recherche les départements/cantons/province active d'une region et pays actif // On recherche les d<EFBFBD>partements/cantons/province active d'une region et pays actif
$sql = "SELECT d.rowid, d.code_departement as code , d.nom, d.active, p.libelle as libelle_pays, p.code as code_pays FROM"; $sql = "SELECT d.rowid, d.code_departement as code , d.nom, d.active, p.libelle as libelle_pays, p.code as code_pays FROM";
$sql .= " ".MAIN_DB_PREFIX ."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r,".MAIN_DB_PREFIX."c_pays as p"; $sql .= " ".MAIN_DB_PREFIX ."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r,".MAIN_DB_PREFIX."c_pays as p";
$sql .= " WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid"; $sql .= " WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid";
@ -232,7 +232,7 @@ class Form
{ {
print '<option value="'.$obj->rowid.'">'; print '<option value="'.$obj->rowid.'">';
} }
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
print $obj->code . ' - ' . ($langs->trans($obj->code)!=$obj->code?$langs->trans($obj->code):($obj->nom!='-'?$obj->nom:'')); print $obj->code . ' - ' . ($langs->trans($obj->code)!=$obj->code?$langs->trans($obj->code):($obj->nom!='-'?$obj->nom:''));
print '</option>'; print '</option>';
} }
@ -248,9 +248,9 @@ class Form
/** /**
* \brief Retourne la liste déroulante des regions actives dont le pays est actif * \brief Retourne la liste d<EFBFBD>roulante des regions actives dont le pays est actif
* \remarks La cle de la liste est le code (il peut y avoir plusieurs entrée pour * \remarks La cle de la liste est le code (il peut y avoir plusieurs entr<EFBFBD>e pour
* un code donnée mais dans ce cas, le champ pays et lang diffère). * un code donn<EFBFBD>e mais dans ce cas, le champ pays et lang diff<EFBFBD>re).
* Ainsi les liens avec les regions se font sur une region independemment * Ainsi les liens avec les regions se font sur une region independemment
* de nom som. * de nom som.
*/ */
@ -307,7 +307,7 @@ class Form
/** /**
* \brief Renvoie la liste des sources de commandes * \brief Renvoie la liste des sources de commandes
* \param selected Id de la source pré-sélectionnée * \param selected Id de la source pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom de la liste deroulante * \param htmlname Nom de la liste deroulante
* \param addempty 0=liste sans valeur nulle, 1=ajoute valeur inconnue * \param addempty 0=liste sans valeur nulle, 1=ajoute valeur inconnue
* \return array Tableau des sources de commandes * \return array Tableau des sources de commandes
@ -364,11 +364,11 @@ class Form
} }
/** /**
* \brief Retourne la liste déroulante des pays actifs, dans la langue de l'utilisateur * \brief Retourne la liste d<EFBFBD>roulante des pays actifs, dans la langue de l'utilisateur
* \param selected Id ou code pays pré-sélectionné * \param selected Id ou code pays pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la liste deroulante * \param htmlname Nom de la liste deroulante
* \param htmloption Options html sur le select * \param htmloption Options html sur le select
* \todo trier liste sur noms après traduction plutot que avant * \todo trier liste sur noms apr<EFBFBD>s traduction plutot que avant
*/ */
function select_pays($selected='',$htmlname='pays_id',$htmloption='') function select_pays($selected='',$htmlname='pays_id',$htmloption='')
{ {
@ -449,7 +449,7 @@ class Form
{ {
print '<option value="'.$obj->rowid.'">'; print '<option value="'.$obj->rowid.'">';
} }
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
if ($obj->code) { print $obj->code . ' - '; } if ($obj->code) { print $obj->code . ' - '; }
print ($obj->code && $langs->trans("Country".$obj->code)!="Country".$obj->code?$langs->trans("Country".$obj->code):($obj->libelle!='-'?$obj->libelle:'&nbsp;')); print ($obj->code && $langs->trans("Country".$obj->code)!="Country".$obj->code?$langs->trans("Country".$obj->code):($obj->libelle!='-'?$obj->libelle:'&nbsp;'));
print '</option>'; print '</option>';
@ -469,8 +469,8 @@ class Form
/** /**
* \brief Retourne la liste déroulante des langues disponibles * \brief Retourne la liste d<EFBFBD>roulante des langues disponibles
* \param selected Langue présélectionnée * \param selected Langue pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param showauto Affiche choix auto * \param showauto Affiche choix auto
*/ */
@ -509,16 +509,16 @@ class Form
/** /**
* \brief Retourne la liste déroulante des menus disponibles (eldy_backoffice, ...) * \brief Retourne la liste d<EFBFBD>roulante des menus disponibles (eldy_backoffice, ...)
* \param selected Menu pré-sélectionnée * \param selected Menu pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param dirmenu Repértoire à scanner * \param dirmenu Rep<EFBFBD>rtoire <EFBFBD> scanner
*/ */
function select_menu($selected='',$htmlname,$dirmenu) function select_menu($selected='',$htmlname,$dirmenu)
{ {
global $langs,$conf; global $langs,$conf;
if ($selected == 'eldy.php') $selected='eldy_backoffice.php'; // Pour compatibilité if ($selected == 'eldy.php') $selected='eldy_backoffice.php'; // Pour compatibilit<EFBFBD>
$menuarray=array(); $menuarray=array();
$handle=opendir($dirmenu); $handle=opendir($dirmenu);
@ -570,10 +570,10 @@ class Form
} }
/** /**
* \brief Retourne la liste déroulante des menus disponibles (eldy) * \brief Retourne la liste d<EFBFBD>roulante des menus disponibles (eldy)
* \param selected Menu pré-sélectionnée * \param selected Menu pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param dirmenu Repértoire à scanner * \param dirmenu Rep<EFBFBD>rtoire <EFBFBD> scanner
*/ */
function select_menu_families($selected='',$htmlname,$dirmenu) function select_menu_families($selected='',$htmlname,$dirmenu)
{ {
@ -615,7 +615,7 @@ class Form
/** /**
* \brief Retourne la liste des types de comptes financiers * \brief Retourne la liste des types de comptes financiers
* \param selected Type pré-sélectionné * \param selected Type pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom champ formulaire * \param htmlname Nom champ formulaire
*/ */
function select_type_comptes_financiers($selected=1,$htmlname='type') function select_type_comptes_financiers($selected=1,$htmlname='type')
@ -648,8 +648,8 @@ class Form
/** /**
* \brief Retourne la liste déroulante des sociétés * \brief Retourne la liste d<EFBFBD>roulante des soci<EFBFBD>t<EFBFBD>s
* \param selected Societe présélectionnée * \param selected Societe pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom champ formulaire * \param htmlname Nom champ formulaire
* \param filter Criteres optionnels de filtre * \param filter Criteres optionnels de filtre
*/ */
@ -733,8 +733,8 @@ class Form
/** /**
* \brief Retourne la liste déroulante des remises fixes * \brief Retourne la liste d<EFBFBD>roulante des remises fixes
* \param selected Id remise fixe présélectionnée * \param selected Id remise fixe pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom champ formulaire * \param htmlname Nom champ formulaire
* \param filter Criteres optionnels de filtre * \param filter Criteres optionnels de filtre
*/ */
@ -789,12 +789,12 @@ class Form
/** /**
* \brief Retourne la liste déroulante des contacts d'une société donnée * \brief Retourne la liste d<EFBFBD>roulante des contacts d'une soci<EFBFBD>t<EFBFBD> donn<EFBFBD>e
* \param socid Id de la société * \param socid Id de la soci<EFBFBD>t<EFBFBD>
* \param selected Id contact pré-sélectionn * \param selected Id contact pr<EFBFBD>-s<EFBFBD>lectionn
* \param htmlname Nom champ formulaire ('none' pour champ non editable) * \param htmlname Nom champ formulaire ('none' pour champ non editable)
* \param show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue * \param show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue
* \param exclude Liste des id contacts à exclure * \param exclude Liste des id contacts <EFBFBD> exclure
* \return int <0 if KO, Nb of contact in list if OK * \return int <0 if KO, Nb of contact in list if OK
*/ */
function select_contacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='') function select_contacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='')
@ -857,11 +857,11 @@ class Form
/** /**
* \brief Retourne la liste déroulante des utilisateurs * \brief Retourne la liste d<EFBFBD>roulante des utilisateurs
* \param selected Id contact pré-sélectionn * \param selected Id contact pr<EFBFBD>-s<EFBFBD>lectionn
* \param htmlname Nom champ formulaire * \param htmlname Nom champ formulaire
* \param show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue * \param show_empty 0=liste sans valeur nulle, 1=ajoute valeur inconnue
* \param exclude Liste des id utilisateurs à exclure * \param exclude Liste des id utilisateurs <EFBFBD> exclure
*/ */
function select_users($selected='',$htmlname='userid',$show_empty=0,$exclude='') function select_users($selected='',$htmlname='userid',$show_empty=0,$exclude='')
{ {
@ -910,9 +910,9 @@ class Form
/** /**
\brief Affiche la liste déroulante des projets d'une société donnée \brief Affiche la liste d<EFBFBD>roulante des projets d'une soci<EFBFBD>t<EFBFBD> donn<EFBFBD>e
\param socid Id société \param socid Id soci<EFBFBD>t<EFBFBD>
\param selected Id projet présélectionné \param selected Id projet pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
\param htmlname Nom de la zone html \param htmlname Nom de la zone html
\return int Nbre de projet si ok, <0 si ko \return int Nbre de projet si ok, <0 si ko
*/ */
@ -958,11 +958,11 @@ class Form
} }
} }
/** /**
\brief Retourne la liste des produits en Ajax si ajax activé ou renvoie à select_produits_do \brief Retourne la liste des produits en Ajax si ajax activ<EFBFBD> ou renvoie <EFBFBD> select_produits_do
\param selected Produit présélectionné \param selected Produit pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit \param filtretype Pour filtre sur type de produit
\param limit Limite sur le nombre de lignes retournées \param limit Limite sur le nombre de lignes retourn<EFBFBD>es
\param price_level Niveau de prix en fonction du client \param price_level Niveau de prix en fonction du client
*/ */
function select_produits($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0) function select_produits($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0)
@ -993,12 +993,12 @@ class Form
/** /**
\brief Retourne la liste des produits \brief Retourne la liste des produits
\param selected Produit présélectionné \param selected Produit pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit \param filtretype Pour filtre sur type de produit
\param limit Limite sur le nombre de lignes retournées \param limit Limite sur le nombre de lignes retourn<EFBFBD>es
\param price_level Niveau de prix en fonction du client \param price_level Niveau de prix en fonction du client
\param ajaxkeysearch Filtre des produits si ajax est utilisé \param ajaxkeysearch Filtre des produits si ajax est utilis<EFBFBD>
*/ */
function select_produits_do($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0,$ajaxkeysearch='') function select_produits_do($selected='',$htmlname='productid',$filtretype='',$limit=20,$price_level=0,$ajaxkeysearch='')
{ {
@ -1032,7 +1032,7 @@ class Form
$result=$this->db->query($sql); $result=$this->db->query($sql);
if (! $result) dolibarr_print_error($this->db); if (! $result) dolibarr_print_error($this->db);
// Multilang : on construit une liste des traductions des produits listés // Multilang : on construit une liste des traductions des produits list<EFBFBD>s
if ($conf->global->MAIN_MULTILANGS) if ($conf->global->MAIN_MULTILANGS)
{ {
$sqld = "SELECT d.fk_product, d.label"; $sqld = "SELECT d.fk_product, d.label";
@ -1071,7 +1071,7 @@ class Form
{ {
$objp = $this->db->fetch_object($result); $objp = $this->db->fetch_object($result);
// Multilangs : modification des donnée si une traduction existe // Multilangs : modification des donn<EFBFBD>e si une traduction existe
if ($conf->global->MAIN_MULTILANGS) if ($conf->global->MAIN_MULTILANGS)
{ {
if ( $objp->rowid == $objtp->fk_product ) // si on a une traduction if ( $objp->rowid == $objtp->fk_product ) // si on a une traduction
@ -1147,11 +1147,11 @@ class Form
} }
/** /**
\brief Retourne la liste des produits fournisseurs en Ajax si ajax activé ou renvoie à select_produits_fournisseurs_do \brief Retourne la liste des produits fournisseurs en Ajax si ajax activ<EFBFBD> ou renvoie <EFBFBD> select_produits_fournisseurs_do
\param selected Produit présélectionné \param selected Produit pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit \param filtretype Pour filtre sur type de produit
\param limit Limite sur le nombre de lignes retournées \param limit Limite sur le nombre de lignes retourn<EFBFBD>es
*/ */
function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='') function select_produits_fournisseurs($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='')
{ {
@ -1169,12 +1169,12 @@ class Form
/** /**
\brief Retourne la liste des produits de fournisseurs \brief Retourne la liste des produits de fournisseurs
\param socid Id société fournisseur (0 pour aucun filtre) \param socid Id soci<EFBFBD>t<EFBFBD> fournisseur (0 pour aucun filtre)
\param selected Produit présélectionné \param selected Produit pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param filtretype Pour filtre sur type de produit \param filtretype Pour filtre sur type de produit
\param filtre Pour filtre \param filtre Pour filtre
\param ajaxkeysearch Filtre des produits si ajax est utilisé \param ajaxkeysearch Filtre des produits si ajax est utilis<EFBFBD>
*/ */
function select_produits_fournisseurs_do($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='',$ajaxkeysearch='') function select_produits_fournisseurs_do($socid,$selected='',$htmlname='productid',$filtretype='',$filtre='',$ajaxkeysearch='')
{ {
@ -1359,8 +1359,8 @@ class Form
} }
/** /**
* \brief Retourne la liste déroulante des adresses de livraison * \brief Retourne la liste d<EFBFBD>roulante des adresses de livraison
* \param selected Id contact pré-sélectionn * \param selected Id contact pr<EFBFBD>-s<EFBFBD>lectionn
* \param htmlname Nom champ formulaire * \param htmlname Nom champ formulaire
*/ */
function select_adresse_livraison($selected='', $socid, $htmlname='adresse_livraison_id',$showempty=0) function select_adresse_livraison($selected='', $socid, $htmlname='adresse_livraison_id',$showempty=0)
@ -1405,13 +1405,13 @@ class Form
/** /**
* \brief Charge dans cache la liste des conditions de paiements possibles * \brief Charge dans cache la liste des conditions de paiements possibles
* \return int Nb lignes chargées, 0 si déjà chargées, <0 si ko * \return int Nb lignes charg<EFBFBD>es, 0 si d<EFBFBD>j<EFBFBD> charg<EFBFBD>es, <0 si ko
*/ */
function load_cache_conditions_paiements() function load_cache_conditions_paiements()
{ {
global $langs; global $langs;
if (sizeof($this->cache_conditions_paiements_code)) return 0; // Cache déja chargé if (sizeof($this->cache_conditions_paiements_code)) return 0; // Cache d<EFBFBD>ja charg<72>
dolibarr_syslog('Form::load_cache_conditions_paiements',LOG_DEBUG); dolibarr_syslog('Form::load_cache_conditions_paiements',LOG_DEBUG);
@ -1428,7 +1428,7 @@ class Form
{ {
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
$libelle=($langs->trans("PaymentConditionShort".$obj->code)!=("PaymentConditionShort".$obj->code)?$langs->trans("PaymentConditionShort".$obj->code):($obj->libelle!='-'?$obj->libelle:'')); $libelle=($langs->trans("PaymentConditionShort".$obj->code)!=("PaymentConditionShort".$obj->code)?$langs->trans("PaymentConditionShort".$obj->code):($obj->libelle!='-'?$obj->libelle:''));
$this->cache_conditions_paiements_code[$obj->rowid]=$obj->code; $this->cache_conditions_paiements_code[$obj->rowid]=$obj->code;
$this->cache_conditions_paiements_libelle[$obj->rowid]=$libelle; $this->cache_conditions_paiements_libelle[$obj->rowid]=$libelle;
@ -1444,13 +1444,13 @@ class Form
/** /**
* \brief Charge dans cache la liste des types de paiements possibles * \brief Charge dans cache la liste des types de paiements possibles
* \return int Nb lignes chargées, 0 si déjà chargées, <0 si ko * \return int Nb lignes charg<EFBFBD>es, 0 si d<EFBFBD>j<EFBFBD> charg<EFBFBD>es, <0 si ko
*/ */
function load_cache_types_paiements() function load_cache_types_paiements()
{ {
global $langs; global $langs;
if (sizeof($this->cache_types_paiements_code)) return 0; // Cache déja chargé if (sizeof($this->cache_types_paiements_code)) return 0; // Cache d<EFBFBD>ja charg<72>
dolibarr_syslog('Form::load_cache_types_paiements',LOG_DEBUG); dolibarr_syslog('Form::load_cache_types_paiements',LOG_DEBUG);
@ -1467,7 +1467,7 @@ class Form
{ {
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
$libelle=($langs->trans("PaymentTypeShort".$obj->code)!=("PaymentTypeShort".$obj->code)?$langs->trans("PaymentTypeShort".$obj->code):($obj->libelle!='-'?$obj->libelle:'')); $libelle=($langs->trans("PaymentTypeShort".$obj->code)!=("PaymentTypeShort".$obj->code)?$langs->trans("PaymentTypeShort".$obj->code):($obj->libelle!='-'?$obj->libelle:''));
$this->cache_types_paiements_code[$obj->id]=$obj->code; $this->cache_types_paiements_code[$obj->id]=$obj->code;
$this->cache_types_paiements_libelle[$obj->id]=$libelle; $this->cache_types_paiements_libelle[$obj->id]=$libelle;
@ -1486,10 +1486,10 @@ class Form
/** /**
* \brief Retourne la liste des types de paiements possibles * \brief Retourne la liste des types de paiements possibles
* \param selected Id du type de paiement présélectionné * \param selected Id du type de paiement pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param filtertype Pour filtre * \param filtertype Pour filtre
* \param addempty Ajoute entrée vide * \param addempty Ajoute entr<EFBFBD>e vide
*/ */
function select_conditions_paiements($selected='',$htmlname='condid',$filtertype=-1,$addempty=0) function select_conditions_paiements($selected='',$htmlname='condid',$filtertype=-1,$addempty=0)
{ {
@ -1517,7 +1517,7 @@ class Form
/** /**
* \brief Selection HT ou TTC * \brief Selection HT ou TTC
* \param selected Id présélectionné * \param selected Id pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
*/ */
function select_PriceBaseType($selected='',$htmlname='price_base_type') function select_PriceBaseType($selected='',$htmlname='price_base_type')
@ -1545,7 +1545,7 @@ class Form
/** /**
* \brief Retourne la liste des modes de paiements possibles * \brief Retourne la liste des modes de paiements possibles
* \param selected Id du mode de paiement présélectionné * \param selected Id du mode de paiement pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param filtertype Pour filtre * \param filtertype Pour filtre
* \param format 0=id+libelle, 1=code+code, 2=code+libelle * \param format 0=id+libelle, 1=code+code, 2=code+libelle
@ -1568,7 +1568,7 @@ class Form
if ($empty) print '<option value="">&nbsp;</option>'; if ($empty) print '<option value="">&nbsp;</option>';
foreach($this->cache_types_paiements_code as $id => $code) foreach($this->cache_types_paiements_code as $id => $code)
{ {
// On passe si on a demandé de filtrer sur des modes de paiments particulièrs // On passe si on a demand<EFBFBD> de filtrer sur des modes de paiments particuli<6C>rs
if (sizeof($filterarray) && ! in_array($this->cache_types_paiements_type[$id],$filterarray)) continue; if (sizeof($filterarray) && ! in_array($this->cache_types_paiements_type[$id],$filterarray)) continue;
if ($format == 0) print '<option value="'.$id.'"'; if ($format == 0) print '<option value="'.$id.'"';
@ -1587,9 +1587,9 @@ class Form
print '</select>'; print '</select>';
} }
/** /**
* \brief Retourne la liste déroulante des différents états d'une propal. * \brief Retourne la liste d<EFBFBD>roulante des diff<EFBFBD>rents <EFBFBD>tats d'une propal.
* Les valeurs de la liste sont les id de la table c_propalst * Les valeurs de la liste sont les id de la table c_propalst
* \param selected etat pre-séléctionné * \param selected etat pre-s<EFBFBD>l<EFBFBD>ctionn<EFBFBD>
*/ */
function select_propal_statut($selected='') function select_propal_statut($selected='')
{ {
@ -1615,7 +1615,7 @@ class Form
{ {
print '<option value="'.$obj->id.'">'; print '<option value="'.$obj->id.'">';
} }
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
//print ($langs->trans("Civility".$obj->code)!="Civility".$obj->code ? $langs->trans("Civility".$obj->code) : ($obj->civilite!='-'?$obj->civilite:'')); //print ($langs->trans("Civility".$obj->code)!="Civility".$obj->code ? $langs->trans("Civility".$obj->code) : ($obj->civilite!='-'?$obj->civilite:''));
print $obj->label; print $obj->label;
print '</option>'; print '</option>';
@ -1633,9 +1633,9 @@ class Form
/** /**
* \brief Retourne la liste des comptes * \brief Retourne la liste des comptes
* \param selected Id compte présélectionné * \param selected Id compte pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param statut Statut des comptes recherchés * \param statut Statut des comptes recherch<EFBFBD>s
* \param filtre Pour filtre sur la liste * \param filtre Pour filtre sur la liste
* \param useempty Affiche valeur vide dans liste * \param useempty Affiche valeur vide dans liste
*/ */
@ -1682,7 +1682,7 @@ class Form
} }
/** /**
* \brief Retourne la liste des catégories du type choisi * \brief Retourne la liste des cat<EFBFBD>gories du type choisi
* \param type Type de categories (0=produit, 1=fournisseur, 2=client) * \param type Type de categories (0=produit, 1=fournisseur, 2=client)
* \param selected Id categorie preselectionnee * \param selected Id categorie preselectionnee
* \param select_name Nom formulaire HTML * \param select_name Nom formulaire HTML
@ -1726,8 +1726,8 @@ class Form
/** /**
* \brief Retourne la liste déroulante des civilite actives * \brief Retourne la liste d<EFBFBD>roulante des civilite actives
* \param selected civilite pré-sélectionnée * \param selected civilite pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>e
*/ */
function select_civilite($selected='') function select_civilite($selected='')
{ {
@ -1756,7 +1756,7 @@ class Form
{ {
print '<option value="'.$obj->code.'">'; print '<option value="'.$obj->code.'">';
} }
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
print ($langs->trans("Civility".$obj->code)!="Civility".$obj->code ? $langs->trans("Civility".$obj->code) : ($obj->civilite!='-'?$obj->civilite:'')); print ($langs->trans("Civility".$obj->code)!="Civility".$obj->code ? $langs->trans("Civility".$obj->code) : ($obj->civilite!='-'?$obj->civilite:''));
print '</option>'; print '</option>';
$i++; $i++;
@ -1772,9 +1772,9 @@ class Form
/** /**
* \brief Retourne le nom traduit de la civilité * \brief Retourne le nom traduit de la civilit<EFBFBD>
* \param code Code de la civilité * \param code Code de la civilit<EFBFBD>
* \return string Nom traduit de la civilité * \return string Nom traduit de la civilit<EFBFBD>
*/ */
function civilite_name($code) function civilite_name($code)
{ {
@ -1785,10 +1785,10 @@ class Form
/** /**
* \brief Retourne la liste déroulante des formes juridiques tous pays confondus ou pour un pays donné. * \brief Retourne la liste d<EFBFBD>roulante des formes juridiques tous pays confondus ou pour un pays donn<EFBFBD>.
* \remarks Dans le cas d'une liste tous pays confondu, on affiche une rupture sur le pays * \remarks Dans le cas d'une liste tous pays confondu, on affiche une rupture sur le pays
* \param selected Code forme juridique a présélectionn * \param selected Code forme juridique a pr<EFBFBD>s<EFBFBD>lectionn
* \param pays_code 0=liste tous pays confondus, sinon code du pays à afficher * \param pays_code 0=liste tous pays confondus, sinon code du pays <EFBFBD> afficher
*/ */
function select_forme_juridique($selected='',$pays_code=0) function select_forme_juridique($selected='',$pays_code=0)
{ {
@ -1837,7 +1837,7 @@ class Form
{ {
print '<option value="'.$obj->code.'">'; print '<option value="'.$obj->code.'">';
} }
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
print $obj->code . ' - ' .($langs->trans("JuridicalStatus".$obj->code)!="JuridicalStatus".$obj->code?$langs->trans("JuridicalStatus".$obj->code):($obj->nom!='-'?$obj->nom:'')); print $obj->code . ' - ' .($langs->trans("JuridicalStatus".$obj->code)!="JuridicalStatus".$obj->code?$langs->trans("JuridicalStatus".$obj->code):($obj->nom!='-'?$obj->nom:''));
print '</option>'; print '</option>';
} }
@ -1948,13 +1948,13 @@ class Form
{ {
global $langs; global $langs;
// Si il existe une traduction, on peut renvoyer de suite le libellé // Si il existe une traduction, on peut renvoyer de suite le libell<EFBFBD>
if ($langs->trans("Currency".$code_iso)!="Currency".$code_iso) if ($langs->trans("Currency".$code_iso)!="Currency".$code_iso)
{ {
return $langs->trans("Currency".$code_iso); return $langs->trans("Currency".$code_iso);
} }
// Si pas de traduction, on consulte libellé par défaut en table // Si pas de traduction, on consulte libell<EFBFBD> par d<>faut en table
$sql = "SELECT label FROM ".MAIN_DB_PREFIX."c_currencies"; $sql = "SELECT label FROM ".MAIN_DB_PREFIX."c_currencies";
$sql.= " WHERE code_iso='$code_iso';"; $sql.= " WHERE code_iso='$code_iso';";
@ -2075,7 +2075,7 @@ class Form
* \brief Affiche formulaire de selection de projet * \brief Affiche formulaire de selection de projet
* \param page Page * \param page Page
* \param socid Id societe * \param socid Id societe
* \param selected Id projet présélectionné * \param selected Id projet pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom du formulaire select * \param htmlname Nom du formulaire select
*/ */
function form_project($page, $socid, $selected='', $htmlname='projectid') function form_project($page, $socid, $selected='', $htmlname='projectid')
@ -2109,9 +2109,9 @@ class Form
/** /**
* \brief Affiche formulaire de selection de conditions de paiement * \brief Affiche formulaire de selection de conditions de paiement
* \param page Page * \param page Page
* \param selected Id condition présélectionnée * \param selected Id condition pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom du formulaire select * \param htmlname Nom du formulaire select
* \param addempty Ajoute entrée vide * \param addempty Ajoute entr<EFBFBD>e vide
*/ */
function form_conditions_reglement($page, $selected='', $htmlname='cond_reglement_id', $addempty=0) function form_conditions_reglement($page, $selected='', $htmlname='cond_reglement_id', $addempty=0)
{ {
@ -2140,9 +2140,9 @@ class Form
} }
/** /**
* \brief Affiche formulaire de selection de l'assujétissement à la TVA * \brief Affiche formulaire de selection de l'assuj<EFBFBD>tissement <EFBFBD> la TVA
* \param page Page * \param page Page
* \param selected Id condition présélectionnée * \param selected Id condition pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom du formulaire select * \param htmlname Nom du formulaire select
*/ */
function form_assujetti_tva($page, $selected='', $htmlname='') function form_assujetti_tva($page, $selected='', $htmlname='')
@ -2175,7 +2175,7 @@ class Form
/** /**
* \brief Affiche formulaire de selection des modes de reglement * \brief Affiche formulaire de selection des modes de reglement
* \param page Page * \param page Page
* \param selected Id mode présélectionné * \param selected Id mode pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom du formulaire select * \param htmlname Nom du formulaire select
*/ */
function form_modes_reglement($page, $selected='', $htmlname='mode_reglement_id') function form_modes_reglement($page, $selected='', $htmlname='mode_reglement_id')
@ -2296,12 +2296,15 @@ class Form
} }
/** /**
* \brief Affiche formulaire de selection de la remise fixe * \brief Affiche formulaire de selection de la remise fixe
* \param page Page * \param page Page
* \param selected Valeur à appliquer * \param selected Valeur a appliquer
* \param htmlname Nom du formulaire select. Si none, non modifiable * \param htmlname Nom du formulaire select. Si none, non modifiable
* \param socid
* \param amount
* \param filter Filtre
*/ */
function form_remise_dispo($page, $selected='', $htmlname='remise_id',$socid, $absolute_discount) function form_remise_dispo($page, $selected='', $htmlname='remise_id',$socid, $amount, $filter='')
{ {
global $conf,$langs; global $conf,$langs;
if ($htmlname != "none") if ($htmlname != "none")
@ -2310,11 +2313,17 @@ class Form
print '<input type="hidden" name="action" value="setabsolutediscount">'; print '<input type="hidden" name="action" value="setabsolutediscount">';
print '<table class="nobordernopadding" cellpadding="0" cellspacing="0">'; print '<table class="nobordernopadding" cellpadding="0" cellspacing="0">';
print '<tr><td>'; print '<tr><td>';
print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->trans("Currency".$conf->monnaie)).': '; if (! $filter || $filter=='fk_facture_source IS NULL') print $langs->trans("CompanyHasAbsoluteDiscount",price($amount),$langs->transnoentities("Currency".$conf->monnaie)).': ';
// print $langs->trans("AvailableGlobalDiscounts").': '; else print $langs->trans("CompanyHasCreditNote",price($amount),$langs->transnoentities("Currency".$conf->monnaie)).': ';
print $this->select_remises('',$htmlname,'fk_facture IS NULL',$socid); // print $langs->trans("AvailableGlobalDiscounts").': ';
$newfilter='fk_facture IS NULL'; // Remises disponibles
if ($filter) $newfilter.=' AND '.$filter;
print $this->select_remises('',$htmlname,$newfilter,$socid);
print '</td>'; print '</td>';
print '<td align="left"> <input type="submit" class="button" value="'.$langs->trans("UseDiscount").'"></td>'; print '<td align="left"> <input type="submit" class="button" value="';
if (! $filter || $filter=='fk_facture_source IS NULL') print $langs->trans("UseDiscount");
else print $langs->trans("UseCreditNoteInInvoicePayment");
print '"></td>';
print '</tr></table></form>'; print '</tr></table></form>';
} }
else else
@ -2334,7 +2343,7 @@ class Form
/** /**
* \brief Affiche formulaire de selection des contacts * \brief Affiche formulaire de selection des contacts
* \param page Page * \param page Page
* \param selected Id contact présélectionné * \param selected Id contact pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom du formulaire select * \param htmlname Nom du formulaire select
*/ */
function form_contacts($page, $societe, $selected='', $htmlname='contactidp') function form_contacts($page, $societe, $selected='', $htmlname='contactidp')
@ -2349,7 +2358,7 @@ class Form
$num=$this->select_contacts($societe->id, $selected, $htmlname); $num=$this->select_contacts($societe->id, $selected, $htmlname);
if ($num==0) if ($num==0)
{ {
print '<font class="error">Cette societe n\'a pas de contact, veuillez en créer un avant de faire votre proposition commerciale</font><br>'; print '<font class="error">Cette societe n\'a pas de contact, veuillez en cr<EFBFBD>er un avant de faire votre proposition commerciale</font><br>';
print '<a href="'.DOL_URL_ROOT.'/contact/fiche.php?socid='.$societe->id.'&amp;action=create&amp;backtoreferer=1">'.$langs->trans('AddContact').'</a>'; print '<a href="'.DOL_URL_ROOT.'/contact/fiche.php?socid='.$societe->id.'&amp;action=create&amp;backtoreferer=1">'.$langs->trans('AddContact').'</a>';
} }
print '</td>'; print '</td>';
@ -2375,9 +2384,9 @@ class Form
/** /**
* \brief Affiche formulaire de selection de l'adresse de livraison * \brief Affiche formulaire de selection de l'adresse de livraison
* \param page Page * \param page Page
* \param selected Id condition présélectionnée * \param selected Id condition pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom du formulaire select * \param htmlname Nom du formulaire select
* \param origin Origine de l'appel pour pouvoir créer un retour * \param origin Origine de l'appel pour pouvoir cr<EFBFBD>er un retour
* \param originid Id de l'origine * \param originid Id de l'origine
*/ */
function form_adresse_livraison($page, $selected='', $socid, $htmlname='adresse_livraison_id', $origin='', $originid='') function form_adresse_livraison($page, $selected='', $socid, $htmlname='adresse_livraison_id', $origin='', $originid='')
@ -2414,16 +2423,16 @@ class Form
/** /**
* \brief Retourne la liste des devises, dans la langue de l'utilisateur * \brief Retourne la liste des devises, dans la langue de l'utilisateur
* \param selected code devise pré-sélectionnée * \param selected code devise pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname nom de la liste deroulante * \param htmlname nom de la liste deroulante
* \todo trier liste sur noms après traduction plutot que avant * \todo trier liste sur noms apr<EFBFBD>s traduction plutot que avant
*/ */
function select_currency($selected='',$htmlname='currency_id') function select_currency($selected='',$htmlname='currency_id')
{ {
global $conf,$langs; global $conf,$langs;
$langs->load("dict"); $langs->load("dict");
if ($selected=='euro' || $selected=='euros') $selected='EUR'; // Pour compatibilité if ($selected=='euro' || $selected=='euros') $selected='EUR'; // Pour compatibilit<EFBFBD>
$sql = "SELECT code_iso, label, active FROM ".MAIN_DB_PREFIX."c_currencies"; $sql = "SELECT code_iso, label, active FROM ".MAIN_DB_PREFIX."c_currencies";
$sql .= " WHERE active = 1"; $sql .= " WHERE active = 1";
@ -2449,7 +2458,7 @@ class Form
{ {
print '<option value="'.$obj->code_iso.'">'; print '<option value="'.$obj->code_iso.'">';
} }
// Si traduction existe, on l'utilise, sinon on prend le libellé par défaut // Si traduction existe, on l'utilise, sinon on prend le libell<EFBFBD> par d<>faut
if ($obj->code_iso) { print $obj->code_iso . ' - '; } if ($obj->code_iso) { print $obj->code_iso . ' - '; }
print ($obj->code_iso && $langs->trans("Currency".$obj->code_iso)!="Currency".$obj->code_iso?$langs->trans("Currency".$obj->code_iso):($obj->label!='-'?$obj->label:'')); print ($obj->code_iso && $langs->trans("Currency".$obj->code_iso)!="Currency".$obj->code_iso?$langs->trans("Currency".$obj->code_iso):($obj->label!='-'?$obj->label:''));
print '</option>'; print '</option>';
@ -2467,17 +2476,17 @@ class Form
/** /**
* \brief Selection du taux de tva appliqué par vendeur * \brief Selection du taux de tva appliqu<EFBFBD> par vendeur
* \param name Nom champ html * \param name Nom champ html
* \param defaulttx Forçage du taux tva présélectionné. Mettre '' pour aucun forcage. * \param defaulttx For<EFBFBD>age du taux tva pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>. Mettre '' pour aucun forcage.
* \param societe_vendeuse Objet société vendeuse * \param societe_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse
* \param societe_acheteuse Objet société acheteuse * \param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse
* \param taux_produit Taux par defaut du produit vendu * \param taux_produit Taux par defaut du produit vendu
* \remarks Si vendeur non assujeti à TVA, TVA par défaut=0. Fin de règle. * \remarks Si vendeur non assujeti <EFBFBD> TVA, TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
* Si le (pays vendeur = pays acheteur) alors la TVA par défaut=TVA du produit vendu. Fin de règle. * Si le (pays vendeur = pays acheteur) alors la TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
* Si (vendeur et acheteur dans Communauté européenne) et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par défaut=0 (La TVA doit être payé par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de règle. * Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et bien vendu = moyen de transports neuf (auto, bateau, avion), TVA par d<EFBFBD>faut=0 (La TVA doit <EFBFBD>tre pay<EFBFBD> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<EFBFBD>gle.
* Si (vendeur et acheteur dans Communauté européenne) et bien vendu autre que transport neuf alors la TVA par défaut=TVA du produit vendu. Fin de règle. * Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et bien vendu autre que transport neuf alors la TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
* Sinon la TVA proposée par défaut=0. Fin de règle. * Sinon la TVA propos<EFBFBD>e par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
*/ */
function select_tva($name='tauxtva', $defaulttx='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='') function select_tva($name='tauxtva', $defaulttx='', $societe_vendeuse='', $societe_acheteuse='', $taux_produit='')
{ {
@ -2539,13 +2548,13 @@ class Form
print '<font class="error">'.$this->db->error().'</font>'; print '<font class="error">'.$this->db->error().'</font>';
} }
// Définition du taux à présélectionner (si defaulttx non forcé et donc vaut -1 ou '') // D<EFBFBD>finition du taux <20> pr<70>s<EFBFBD>lectionner (si defaulttx non forc<72> et donc vaut -1 ou '')
if ($defaulttx < 0 || strlen($defaulttx) == 0) if ($defaulttx < 0 || strlen($defaulttx) == 0)
{ {
$defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$taux_produit); $defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$taux_produit);
} }
// Si taux par defaut n'a pu etre déterminé, on prend dernier de la liste. // Si taux par defaut n'a pu etre d<EFBFBD>termin<EFBFBD>, on prend dernier de la liste.
// Comme ils sont triés par ordre croissant, dernier = plus élevé = taux courant // Comme ils sont tri<EFBFBD>s par ordre croissant, dernier = plus <20>lev<65> = taux courant
if ($defaulttx < 0 || strlen($defaulttx) == 0) if ($defaulttx < 0 || strlen($defaulttx) == 0)
{ {
$defaulttx = $txtva[sizeof($txtva)-1]; $defaulttx = $txtva[sizeof($txtva)-1];
@ -2582,7 +2591,7 @@ class Form
* \brief Selection des unites de mesure * \brief Selection des unites de mesure
* \param name Nom champ html * \param name Nom champ html
* \param measuring_style Le style de mesure : weight, volume,... * \param measuring_style Le style de mesure : weight, volume,...
* \param default Forçage de l'unite * \param default For<EFBFBD>age de l'unite
* \remarks pour l'instant on ne definit pas les unites dans la base * \remarks pour l'instant on ne definit pas les unites dans la base
*/ */
function select_measuring_units($name='measuring_units', $measuring_style='', $default='0', $adddefault=0) function select_measuring_units($name='measuring_units', $measuring_style='', $default='0', $adddefault=0)
@ -2657,10 +2666,10 @@ class Form
} }
} }
// Définition du taux à présélectionner // D<EFBFBD>finition du taux <20> pr<70>s<EFBFBD>lectionner
if ($defaulttx == '') $defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$taux_produit); if ($defaulttx == '') $defaulttx=get_default_tva($societe_vendeuse,$societe_acheteuse,$taux_produit);
// Si taux par defaut n'a pu etre trouvé, on prend dernier. // Si taux par defaut n'a pu etre trouv<EFBFBD>, on prend dernier.
// Comme ils sont triés par ordre croissant, dernier = plus élevé = taux courant // Comme ils sont tri<EFBFBD>s par ordre croissant, dernier = plus <20>lev<65> = taux courant
if ($defaulttx == '') $defaulttx = $txtva[sizeof($txtva)-1]; if ($defaulttx == '') $defaulttx = $txtva[sizeof($txtva)-1];
$nbdetaux = sizeof($txtva); $nbdetaux = sizeof($txtva);
@ -2676,16 +2685,16 @@ class Form
/** /**
* \brief Affiche zone de selection de date * \brief Affiche zone de selection de date
* Liste deroulante pour les jours, mois, annee et eventuellement heurs et minutes * Liste deroulante pour les jours, mois, annee et eventuellement heurs et minutes
* Les champs sont présélectionnées avec: * Les champs sont pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>es avec:
* - La date set_time (timestamps ou date au format YYYY-MM-DD ou YYYY-MM-DD HH:MM) * - La date set_time (timestamps ou date au format YYYY-MM-DD ou YYYY-MM-DD HH:MM)
* - La date du jour si set_time vaut '' * - La date du jour si set_time vaut ''
* - Aucune date (champs vides) si set_time vaut -1 (dans ce cas empty doit valoir 1) * - Aucune date (champs vides) si set_time vaut -1 (dans ce cas empty doit valoir 1)
* \param set_time Date de pré-sélection * \param set_time Date de pr<EFBFBD>-s<EFBFBD>lection
* \param prefix Prefix pour nom champ * \param prefix Prefix pour nom champ
* \param h 1=Affiche aussi les heures * \param h 1=Affiche aussi les heures
* \param m 1=Affiche aussi les minutes * \param m 1=Affiche aussi les minutes
* \param empty 0=Champ obligatoire, 1=Permet une saisie vide * \param empty 0=Champ obligatoire, 1=Permet une saisie vide
* \param form_name Nom du formulaire de provenance. Utilisé pour les dates en popup style andre. * \param form_name Nom du formulaire de provenance. Utilis<EFBFBD> pour les dates en popup style andre.
* \param d 1=Affiche aussi les jours, mois, annees * \param d 1=Affiche aussi les jours, mois, annees
*/ */
function select_date($set_time='', $prefix='re', $h=0, $m=0, $empty=0, $form_name="", $d=1) function select_date($set_time='', $prefix='re', $h=0, $m=0, $empty=0, $form_name="", $d=1)
@ -2699,7 +2708,7 @@ class Form
if (! $set_time && $empty == 0) $set_time = time(); if (! $set_time && $empty == 0) $set_time = time();
// Analyse de la date de préselection // Analyse de la date de pr<EFBFBD>selection
if (eregi('^([0-9]+)\-([0-9]+)\-([0-9]+)\s?([0-9]+)?:?([0-9]+)?',$set_time,$reg)) if (eregi('^([0-9]+)\-([0-9]+)\-([0-9]+)\s?([0-9]+)?:?([0-9]+)?',$set_time,$reg))
{ {
// Date au format 'YYYY-MM-DD' ou 'YYYY-MM-DD HH:MM:SS' // Date au format 'YYYY-MM-DD' ou 'YYYY-MM-DD HH:MM:SS'
@ -2834,7 +2843,7 @@ class Form
} }
print "</select>"; print "</select>";
// Année // Ann<EFBFBD>e
if ($empty || $set_time == -1) if ($empty || $set_time == -1)
{ {
print '<input class="flat" type="text" size="3" maxlength="4" name="'.$prefix.'year" value="'.$syear.'">'; print '<input class="flat" type="text" size="3" maxlength="4" name="'.$prefix.'year" value="'.$syear.'">';
@ -2917,7 +2926,7 @@ class Form
} }
/** /**
\brief Fonction servant a afficher une durée dans une liste déroulante \brief Fonction servant a afficher une dur<EFBFBD>e dans une liste d<EFBFBD>roulante
\param prefix prefix \param prefix prefix
\param iSecond Nombre de secondes \param iSecond Nombre de secondes
*/ */
@ -2954,13 +2963,13 @@ class Form
/** /**
\brief Affiche un select à partir d'un tableau \brief Affiche un select <EFBFBD> partir d'un tableau
\param htmlname Nom de la zone select \param htmlname Nom de la zone select
\param array Tableau de key+valeur \param array Tableau de key+valeur
\param id Key pré-sélectionnée \param id Key pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>e
\param show_empty 1 si il faut ajouter une valeur vide dans la liste, 0 sinon \param show_empty 1 si il faut ajouter une valeur vide dans la liste, 0 sinon
\param key_in_label 1 pour afficher la key dans la valeur "[key] value" \param key_in_label 1 pour afficher la key dans la valeur "[key] value"
\param value_as_key 1 pour utiliser la valeur comme clé \param value_as_key 1 pour utiliser la valeur comme cl<EFBFBD>
\param $use_java 1 pour utiliser des fonctions javascript \param $use_java 1 pour utiliser des fonctions javascript
\param $fonction Fonction javascript \param $fonction Fonction javascript
\param $translate Traduire la valeur \param $translate Traduire la valeur
@ -2985,7 +2994,7 @@ class Form
while (list($key, $value) = each ($array)) while (list($key, $value) = each ($array))
{ {
print '<option value="'.($value_as_key?$value:$key).'"'; print '<option value="'.($value_as_key?$value:$key).'"';
// Si il faut présélectionner une valeur // Si il faut pr<EFBFBD>s<EFBFBD>lectionner une valeur
if ($id != '' && ($id == $key || $id == $value)) if ($id != '' && ($id == $key || $id == $value))
{ {
print ' selected="true"'; print ' selected="true"';
@ -3007,7 +3016,7 @@ class Form
/** /**
* \brief Renvoie la chaîne de caractère décrivant l'erreur * \brief Renvoie la cha<EFBFBD>ne de caract<EFBFBD>re d<EFBFBD>crivant l'erreur
*/ */
function error() function error()
{ {
@ -3018,7 +3027,7 @@ class Form
/** /**
* \brief Selection de oui/non en chaine (renvoie yes/no) * \brief Selection de oui/non en chaine (renvoie yes/no)
* \param name Nom du select * \param name Nom du select
* \param value Valeur présélectionnée * \param value Valeur pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param option 0 retourne yes/no, 1 retourne 1/0 * \param option 0 retourne yes/no, 1 retourne 1/0
*/ */
function selectyesno($name,$value='',$option=0) function selectyesno($name,$value='',$option=0)
@ -3063,13 +3072,13 @@ class Form
/** /**
* \brief Affiche la cartouche générique d'un rapport * \brief Affiche la cartouche g<EFBFBD>n<EFBFBD>rique d'un rapport
* \param nom Valeur pour nom du rapport * \param nom Valeur pour nom du rapport
* \param variante Lien optionnel de variante du rapport * \param variante Lien optionnel de variante du rapport
* \param period Periode du reporting * \param period Periode du reporting
* \param periodlink Lien pour changer de période * \param periodlink Lien pour changer de p<EFBFBD>riode
* \param description Description * \param description Description
* \param builddate Date génération * \param builddate Date g<EFBFBD>n<EFBFBD>ration
* \param exportlink Lien pour export * \param exportlink Lien pour export
*/ */
function report_header($nom,$variante='',$period,$periodlink,$description,$builddate,$exportlink) function report_header($nom,$variante='',$period,$periodlink,$description,$builddate,$exportlink)
@ -3128,18 +3137,18 @@ class Form
/** /**
* \brief Affiche la cartouche de la liste des documents d'une propale, facture... * \brief Affiche la cartouche de la liste des documents d'une propale, facture...
* \param modulepart propal=propal, facture=facture, ... * \param modulepart propal=propal, facture=facture, ...
* \param filename Sous rep à scanner (vide si filedir deja complet) * \param filename Sous rep <EFBFBD> scanner (vide si filedir deja complet)
* \param filedir Repertoire à scanner * \param filedir Repertoire <EFBFBD> scanner
* \param urlsource Url page origine * \param urlsource Url page origine
* \param genallowed Génération autorisée (1/0 ou array des formats) * \param genallowed G<EFBFBD>n<EFBFBD>ration autoris<EFBFBD>e (1/0 ou array des formats)
* \param delallowed Suppression autorisée (1/0) * \param delallowed Suppression autoris<EFBFBD>e (1/0)
* \param modelselected Modele à présélectionner par défaut * \param modelselected Modele <EFBFBD> pr<EFBFBD>s<EFBFBD>lectionner par d<EFBFBD>faut
* \param modelliste Tableau des modeles possibles * \param modelliste Tableau des modeles possibles
* \param forcenomultilang N'affiche pas option langue meme si MAIN_MULTILANGS défini * \param forcenomultilang N'affiche pas option langue meme si MAIN_MULTILANGS d<EFBFBD>fini
* \param iconPDF N'affiche que l'icone PDF avec le lien (1/0) * \param iconPDF N'affiche que l'icone PDF avec le lien (1/0)
* \remarks Le fichier de facture détaillée est de la forme * \remarks Le fichier de facture d<EFBFBD>taill<EFBFBD>e est de la forme
* REFFACTURE-XXXXXX-detail.pdf ou XXXXX est une forme diverse * REFFACTURE-XXXXXX-detail.pdf ou XXXXX est une forme diverse
* \return int <0 si ko, nbre de fichiers affichés si ok * \return int <0 si ko, nbre de fichiers affich<EFBFBD>s si ok
*/ */
function show_documents($modulepart,$filename,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$modelliste=array(),$forcenomultilang=0,$iconPDF=0) function show_documents($modulepart,$filename,$filedir,$urlsource,$genallowed,$delallowed=0,$modelselected='',$modelliste=array(),$forcenomultilang=0,$iconPDF=0)
{ {
@ -3308,7 +3317,7 @@ class Form
} }
$file_list=dolibarr_dir_list($filedir,'files',0,$filter,'\.meta$'.$png,'date',SORT_DESC); $file_list=dolibarr_dir_list($filedir,'files',0,$filter,'\.meta$'.$png,'date',SORT_DESC);
// Affiche en-tete tableau si non deja affiché // Affiche en-tete tableau si non deja affich<EFBFBD>
if (sizeof($file_list) && ! $headershown && !$iconPDF) if (sizeof($file_list) && ! $headershown && !$iconPDF)
{ {
$headershown=1; $headershown=1;
@ -3316,22 +3325,22 @@ class Form
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
} }
// Boucle sur chaque ligne trouvée // Boucle sur chaque ligne trouv<EFBFBD>e
foreach($file_list as $i => $file) foreach($file_list as $i => $file)
{ {
// Défini chemin relatif par rapport au module pour lien download // D<EFBFBD>fini chemin relatif par rapport au module pour lien download
$relativepath=$file["name"]; // Cas general $relativepath=$file["name"]; // Cas general
if ($filename) $relativepath=$filename."/".$file["name"]; // Cas prpal, facture... if ($filename) $relativepath=$filename."/".$file["name"]; // Cas prpal, facture...
// Autre cas // Autre cas
if ($modulepart == 'don') { $relativepath = get_exdir($filename,2).$file["name"]; } if ($modulepart == 'don') { $relativepath = get_exdir($filename,2).$file["name"]; }
if ($modulepart == 'export') { $relativepath = $file["name"]; } if ($modulepart == 'export') { $relativepath = $file["name"]; }
// Défini le type MIME du document // D<EFBFBD>fini le type MIME du document
if (eregi('\.([^\.]+)$',$file["name"],$reg)) $extension=$reg[1]; if (eregi('\.([^\.]+)$',$file["name"],$reg)) $extension=$reg[1];
$mimetype=strtoupper($extension); $mimetype=strtoupper($extension);
if ($extension == 'pdf') $mimetype='PDF'; if ($extension == 'pdf') $mimetype='PDF';
if ($extension == 'html') $mimetype='HTML'; if ($extension == 'html') $mimetype='HTML';
if (eregi('\-detail\.pdf',$file["name"])) $mimetype='PDF Détaillé'; if (eregi('\-detail\.pdf',$file["name"])) $mimetype='PDF D<EFBFBD>taill<EFBFBD>';
if (!$iconPDF) print "<tr $bc[$var]>"; if (!$iconPDF) print "<tr $bc[$var]>";
@ -3423,10 +3432,10 @@ class Form
} }
/** /**
* \brief Retourne la liste des modéles d'export * \brief Retourne la liste des mod<EFBFBD>les d'export
* \param selected Id modéle présélectionné * \param selected Id mod<EFBFBD>le pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param type Type des modéles recherchés * \param type Type des mod<EFBFBD>les recherch<EFBFBD>s
* \param useempty Affiche valeur vide dans liste * \param useempty Affiche valeur vide dans liste
*/ */
function select_export_model($selected='',$htmlname='exportmodelid',$type='',$useempty=0) function select_export_model($selected='',$htmlname='exportmodelid',$type='',$useempty=0)
@ -3471,7 +3480,7 @@ class Form
/** /**
* \brief Retourne la liste des mois * \brief Retourne la liste des mois
* \param selected Id mois présélectionné * \param selected Id mois pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param useempty Affiche valeur vide dans liste * \param useempty Affiche valeur vide dans liste
*/ */
@ -3540,11 +3549,11 @@ class Form
} }
/** /**
* \brief Liste de sélection du générateur de codes barres * \brief Liste de s<EFBFBD>lection du g<EFBFBD>n<EFBFBD>rateur de codes barres
* \param selected Id code présélectionné * \param selected Id code pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param code_id Id du code barre * \param code_id Id du code barre
* \param idForm Id du formulaire * \param idForm Id du formulaire
* Todo : ajouter une vérification de désactivation du code barre si il est déjà utilisé dans un module * Todo : ajouter une v<EFBFBD>rification de d<EFBFBD>sactivation du code barre si il est d<EFBFBD>j<EFBFBD> utilis<EFBFBD> dans un module
*/ */
function setBarcodeEncoder($selected=0,$code_id,$idForm='formbarcode') function setBarcodeEncoder($selected=0,$code_id,$idForm='formbarcode')
{ {
@ -3552,7 +3561,7 @@ class Form
$disable = ''; $disable = '';
// On vérifie si le code de barre est déjà sélectionné par défaut dans le module produit // On v<EFBFBD>rifie si le code de barre est d<>j<EFBFBD> s<>lectionn<6E> par d<>faut dans le module produit
if ($conf->produit->enabled && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id) if ($conf->produit->enabled && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id)
{ {
$disable = 'disabled="disabled"'; $disable = 'disabled="disabled"';
@ -3573,7 +3582,7 @@ class Form
/** /**
* \brief Retourne la liste des types de codes barres * \brief Retourne la liste des types de codes barres
* \param selected Id code présélectionné * \param selected Id code pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>
* \param htmlname Nom de la zone select * \param htmlname Nom de la zone select
* \param useempty Affiche valeur vide dans liste * \param useempty Affiche valeur vide dans liste
*/ */
@ -3627,7 +3636,7 @@ class Form
/** /**
* \brief Affiche formulaire de selection du type de code barre * \brief Affiche formulaire de selection du type de code barre
* \param page Page * \param page Page
* \param selected Id condition présélectionnée * \param selected Id condition pr<EFBFBD>s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom du formulaire select * \param htmlname Nom du formulaire select
*/ */
function form_barcode_type($page, $selected='', $htmlname='barcodetype_id') function form_barcode_type($page, $selected='', $htmlname='barcodetype_id')

View File

@ -291,6 +291,7 @@ LawApplicationPart4=their price.
VATDischarged=VAT paid on debits. VATDischarged=VAT paid on debits.
LimitedLiabilityCompanyCapital=SARL with Capital of LimitedLiabilityCompanyCapital=SARL with Capital of
UseDiscount=Use discount UseDiscount=Use discount
UseCreditNoteInInvoicePayment=Include credit note as payment
MenuChequeDeposits=Cheques deposits MenuChequeDeposits=Cheques deposits
MenuCheques=Cheques MenuCheques=Cheques
MenuChequesReceipts=Cheques receipts MenuChequesReceipts=Cheques receipts

View File

@ -117,6 +117,7 @@ CustomerAbsoluteDiscountShort=Absolute discount
CompanyHasRelativeDiscount=This customer has a discount of <b>%s%%</b> CompanyHasRelativeDiscount=This customer has a discount of <b>%s%%</b>
CompanyHasNoRelativeDiscount=This customer has no relative discount by default CompanyHasNoRelativeDiscount=This customer has no relative discount by default
CompanyHasAbsoluteDiscount=This customer still has discount credits for <b>%s %s</b> CompanyHasAbsoluteDiscount=This customer still has discount credits for <b>%s %s</b>
CompanyHasCreditNote=This customer still has credit notes for <b>%s %s</b>
CompanyHasNoAbsoluteDiscount=This customer has no discount credit available CompanyHasNoAbsoluteDiscount=This customer has no discount credit available
CustomerAbsoluteDiscountAllUsers=Absolute discounts (granted by all users) CustomerAbsoluteDiscountAllUsers=Absolute discounts (granted by all users)
CustomerAbsoluteDiscountMy=Absolute discounts (granted by yourself) CustomerAbsoluteDiscountMy=Absolute discounts (granted by yourself)

View File

@ -290,6 +290,7 @@ LawApplicationPart4=leurs prix.
VATDischarged=TVA acquittée sur les débits. VATDischarged=TVA acquittée sur les débits.
LimitedLiabilityCompanyCapital=SARL au Capital de LimitedLiabilityCompanyCapital=SARL au Capital de
UseDiscount=Appliquer remise UseDiscount=Appliquer remise
UseCreditNoteInInvoicePayment=Appliquer avoir en tant que paiement
MenuChequeDeposits=Remises de chèques MenuChequeDeposits=Remises de chèques
MenuCheques=Gestion chèques MenuCheques=Gestion chèques
MenuChequesReceipts=Bordereaux MenuChequesReceipts=Bordereaux

View File

@ -117,6 +117,7 @@ CustomerAbsoluteDiscountShort=Remise fixe
CompanyHasRelativeDiscount=Ce client a une remise par défaut de <b>%s%%</b> CompanyHasRelativeDiscount=Ce client a une remise par défaut de <b>%s%%</b>
CompanyHasNoRelativeDiscount=Ce client n'a pas de remises relatives par défaut CompanyHasNoRelativeDiscount=Ce client n'a pas de remises relatives par défaut
CompanyHasAbsoluteDiscount=Ce client a <b>%s %s</b> de remises fixes disponibles CompanyHasAbsoluteDiscount=Ce client a <b>%s %s</b> de remises fixes disponibles
CompanyHasCreditNote=Ce client a <b>%s %s</b> d'avoirs disponibles
CompanyHasNoAbsoluteDiscount=Ce client n'a pas ou plus de remises fixes disponibles CompanyHasNoAbsoluteDiscount=Ce client n'a pas ou plus de remises fixes disponibles
CustomerAbsoluteDiscountAllUsers=Remises fixes en cours (accordées par tout utilisateur) CustomerAbsoluteDiscountAllUsers=Remises fixes en cours (accordées par tout utilisateur)
CustomerAbsoluteDiscountMy=Remises fixes en cours (accordées personnellement) CustomerAbsoluteDiscountMy=Remises fixes en cours (accordées personnellement)

View File

@ -95,12 +95,12 @@ class Societe
var $price_level; var $price_level;
var $commercial_id; //Id du commercial affecté var $commercial_id; //Id du commercial affect<EFBFBD>
/** /**
* \brief Constructeur de la classe * \brief Constructeur de la classe
* \param DB handler accès base de données * \param DB handler acc<EFBFBD>s base de donn<EFBFBD>es
* \param id id societe (0 par defaut) * \param id id societe (0 par defaut)
*/ */
function Societe($DB, $id=0) function Societe($DB, $id=0)
@ -123,8 +123,8 @@ class Societe
} }
/** /**
* \brief Crée la societe en base * \brief Cr<EFBFBD>e la societe en base
* \param user Objet utilisateur qui demande la création * \param user Objet utilisateur qui demande la cr<EFBFBD>ation
* \return int 0 si ok, < 0 si erreur * \return int 0 si ok, < 0 si erreur
*/ */
@ -132,7 +132,7 @@ class Societe
{ {
global $langs,$conf; global $langs,$conf;
// Nettoyage paramètres // Nettoyage param<EFBFBD>tres
$this->nom=trim($this->nom); $this->nom=trim($this->nom);
dolibarr_syslog("Societe::create ".$this->nom); dolibarr_syslog("Societe::create ".$this->nom);
@ -157,12 +157,12 @@ class Societe
$ret = $this->update($this->id,$user,0,1,1); $ret = $this->update($this->id,$user,0,1,1);
// si un commercial crée un client il lui est affecté automatiquement // si un commercial cr<EFBFBD>e un client il lui est affect<63> automatiquement
if (!$user->rights->commercial->client->voir) if (!$user->rights->commercial->client->voir)
{ {
$this->add_commercial($user, $user->id); $this->add_commercial($user, $user->id);
} }
// Ajout du commercial affecté // Ajout du commercial affect<EFBFBD>
else if ($this->commercial_id != '' && $this->commercial_id != -1) else if ($this->commercial_id != '' && $this->commercial_id != -1)
{ {
$this->add_commercial($user, $this->commercial_id); $this->add_commercial($user, $this->commercial_id);
@ -227,13 +227,13 @@ class Societe
if (! $this->nom) if (! $this->nom)
{ {
$this->error = "Le nom de la société ne peut être vide.\n"; $this->error = "Le nom de la soci<EFBFBD>t<EFBFBD> ne peut <20>tre vide.\n";
$result = -2; $result = -2;
} }
if ($this->client && $this->codeclient_modifiable()) if ($this->client && $this->codeclient_modifiable())
{ {
// On ne vérifie le code client que si la société est un client / prospect et que le code est modifiable // On ne v<EFBFBD>rifie le code client que si la soci<63>t<EFBFBD> est un client / prospect et que le code est modifiable
// Si il n'est pas modifiable il n'est pas mis à jour lors de l'update // Si il n'est pas modifiable il n'est pas mis <EFBFBD> jour lors de l'update
$rescode = $this->check_codeclient(); $rescode = $this->check_codeclient();
if ($rescode <> 0) if ($rescode <> 0)
{ {
@ -247,19 +247,19 @@ class Societe
} }
if ($rescode == -3) if ($rescode == -3)
{ {
$this->error .= "Ce code client est déjà utilisé.\n"; $this->error .= "Ce code client est d<EFBFBD>j<EFBFBD> utilis<69>.\n";
} }
if ($rescode == -4) if ($rescode == -4)
{ {
$this->error .= "Vous devez renseigner le préfix pour générer le code client.\n"; $this->error .= "Vous devez renseigner le pr<EFBFBD>fix pour g<>n<EFBFBD>rer le code client.\n";
} }
$result = -3; $result = -3;
} }
} }
if ($this->fournisseur && $this->codefournisseur_modifiable()) if ($this->fournisseur && $this->codefournisseur_modifiable())
{ {
// On ne vérifie le code fournisseur que si la société est un fournisseur et que le code est modifiable // On ne v<EFBFBD>rifie le code fournisseur que si la soci<63>t<EFBFBD> est un fournisseur et que le code est modifiable
// Si il n'est pas modifiable il n'est pas mis à jour lors de l'update // Si il n'est pas modifiable il n'est pas mis <EFBFBD> jour lors de l'update
$rescode = $this->check_codefournisseur(); $rescode = $this->check_codefournisseur();
if ($rescode <> 0) if ($rescode <> 0)
{ {
@ -273,11 +273,11 @@ class Societe
} }
if ($rescode == -3) if ($rescode == -3)
{ {
$this->error .= "Ce code fournisseur est déjà utilisé.\n"; $this->error .= "Ce code fournisseur est d<EFBFBD>j<EFBFBD> utilis<69>.\n";
} }
if ($rescode == -5) if ($rescode == -5)
{ {
$this->error .= "Vous devez renseigner le préfix pour générer le code fournisseur.\n"; $this->error .= "Vous devez renseigner le pr<EFBFBD>fix pour g<>n<EFBFBD>rer le code fournisseur.\n";
} }
$result = -3; $result = -3;
} }
@ -287,9 +287,9 @@ class Societe
} }
/** /**
* \brief Mise a jour des paramètres de la société * \brief Mise a jour des param<EFBFBD>tres de la soci<EFBFBD>t<EFBFBD>
* \param id id societe * \param id id societe
* \param user Utilisateur qui demande la mise à jour * \param user Utilisateur qui demande la mise <EFBFBD> jour
* \param call_trigger 0=non, 1=oui * \param call_trigger 0=non, 1=oui
* \param allowmodcodeclient Autorise modif code client * \param allowmodcodeclient Autorise modif code client
* \param allowmodcodefournisseur Autorise modif code fournisseur * \param allowmodcodefournisseur Autorise modif code fournisseur
@ -301,7 +301,7 @@ class Societe
dolibarr_syslog("Societe::Update id=".$id." call_trigger=".$call_triger." allowmodcodeclient=".$allowmodcodeclient." allowmodcodefournisseur=".$allowmodcodefournisseur); dolibarr_syslog("Societe::Update id=".$id." call_trigger=".$call_triger." allowmodcodeclient=".$allowmodcodeclient." allowmodcodefournisseur=".$allowmodcodefournisseur);
// Nettoyage des paramètres // Nettoyage des param<EFBFBD>tres
$this->id=$id; $this->id=$id;
$this->capital=trim($this->capital); $this->capital=trim($this->capital);
$this->nom=trim($this->nom); $this->nom=trim($this->nom);
@ -414,7 +414,7 @@ class Societe
if ($resql) if ($resql)
{ {
//Si c'est un particulier on crée la fiche contact //Si c'est un particulier on cr<EFBFBD>e la fiche contact
if ($this->particulier == 1) if ($this->particulier == 1)
{ {
require_once (DOL_DOCUMENT_ROOT."/contact.class.php"); require_once (DOL_DOCUMENT_ROOT."/contact.class.php");
@ -477,7 +477,7 @@ class Societe
/** /**
* \brief Charge depuis la base l'objet societe * \brief Charge depuis la base l'objet societe
* \param socid Id de la société à charger en mémoire * \param socid Id de la soci<EFBFBD>t<EFBFBD> <EFBFBD> charger en m<EFBFBD>moire
* \param user Objet de l'utilisateur * \param user Objet de l'utilisateur
* \return int >0 si ok, <0 si ko * \return int >0 si ok, <0 si ko
*/ */
@ -680,8 +680,8 @@ class Societe
} }
/** /**
* \brief Suppression d'une societe de la base avec ses dépendances (contacts, rib...) * \brief Suppression d'une societe de la base avec ses d<EFBFBD>pendances (contacts, rib...)
* \param id id de la societe à supprimer * \param id id de la societe <EFBFBD> supprimer
*/ */
function delete($id) function delete($id)
{ {
@ -725,7 +725,7 @@ class Societe
} }
else else
{ {
$this->error .= "Impossible de supprimer la société.\n"; $this->error .= "Impossible de supprimer la soci<EFBFBD>t<EFBFBD>.\n";
dolibarr_syslog("Societe::Delete erreur -3"); dolibarr_syslog("Societe::Delete erreur -3");
} }
@ -739,7 +739,7 @@ class Societe
$this->db->commit(); $this->db->commit();
// Suppression du répertoire document // Suppression du r<EFBFBD>pertoire document
$docdir = $conf->societe->dir_output . "/" . $id; $docdir = $conf->societe->dir_output . "/" . $id;
if (file_exists ($docdir)) if (file_exists ($docdir))
{ {
@ -759,8 +759,8 @@ class Societe
/** /**
* \brief Retournes les factures impayées de la société * \brief Retournes les factures impay<EFBFBD>es de la soci<EFBFBD>t<EFBFBD>
* \return array tableau des id de factures impayées * \return array tableau des id de factures impay<EFBFBD>es
* *
*/ */
function factures_impayes() function factures_impayes()
@ -792,7 +792,7 @@ class Societe
} }
/** /**
* \brief Attribut le prefix de la société en base * \brief Attribut le prefix de la soci<EFBFBD>t<EFBFBD> en base
* *
*/ */
function attribute_prefix() function attribute_prefix()
@ -843,10 +843,10 @@ class Societe
} }
/** /**
* \brief Génère le préfix de la sociét * \brief G<EFBFBD>n<EFBFBD>re le pr<EFBFBD>fix de la soci<EFBFBD>t
* \param nom nom de la sociét * \param nom nom de la soci<EFBFBD>t
* \param taille taille du prefix à retourner * \param taille taille du prefix <EFBFBD> retourner
* \param mot l'indice du mot à utiliser * \param mot l'indice du mot <EFBFBD> utiliser
*/ */
function genprefix($nom, $taille=4, $mot=0) function genprefix($nom, $taille=4, $mot=0)
{ {
@ -856,7 +856,7 @@ class Societe
if ($mot < count($tab)) if ($mot < count($tab))
{ {
$prefix = strtoupper(substr($tab[$mot],0,$taille)); $prefix = strtoupper(substr($tab[$mot],0,$taille));
// On vérifie que ce prefix n'a pas déjà été pris ... // On v<EFBFBD>rifie que ce prefix n'a pas d<>j<EFBFBD> <20>t<EFBFBD> pris ...
$sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'"; $sql = "SELECT count(*) as nb FROM ".MAIN_DB_PREFIX."societe WHERE prefix_comm = '$prefix'";
$resql=$this->db->query( $sql); $resql=$this->db->query( $sql);
if ($resql) if ($resql)
@ -877,7 +877,7 @@ class Societe
} }
/** /**
* \brief Définit la société comme un client * \brief D<EFBFBD>finit la soci<EFBFBD>t<EFBFBD> comme un client
* *
*/ */
function set_as_client() function set_as_client()
@ -893,10 +893,10 @@ class Societe
} }
/** /**
* \brief Définit la société comme un client * \brief D<EFBFBD>finit la soci<EFBFBD>t<EFBFBD> comme un client
* \param remise Valeur en % de la remise * \param remise Valeur en % de la remise
* \param note Note/Motif de modification de la remise * \param note Note/Motif de modification de la remise
* \param user Utilisateur qui définie la remise * \param user Utilisateur qui d<EFBFBD>finie la remise
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function set_remise_client($remise, $note, $user) function set_remise_client($remise, $note, $user)
@ -951,7 +951,7 @@ class Societe
} }
/** /**
* \brief Ajoute une remise fixe pour la société * \brief Ajoute une remise fixe pour la soci<EFBFBD>t<EFBFBD>
* \param remise Montant de la remise * \param remise Montant de la remise
* \param user Utilisateur qui accorde la remise * \param user Utilisateur qui accorde la remise
* \param desc Motif de l'avoir * \param desc Motif de l'avoir
@ -1002,8 +1002,8 @@ class Societe
} }
/** /**
* \brief Supprime un avoir (à condition que non affecté à une facture) * \brief Supprime un avoir (<EFBFBD> condition que non affect<EFBFBD> <EFBFBD> une facture)
* \param id Id de l'avoir à supprimer * \param id Id de l'avoir <EFBFBD> supprimer
* \return int <0 si ko, id de l'avoir si ok * \return int <0 si ko, id de l'avoir si ok
*/ */
function del_remise_except($id) function del_remise_except($id)
@ -1022,21 +1022,22 @@ class Societe
/** /**
* \brief Renvoie montant des avoirs en cours * \brief Renvoie montant des avoirs en cours disponibles
* \param user Filtre sur un user auteur des l'avoir * \param user Filtre sur un user auteur des remises
* \param filter Filtre autre
* \return int <0 si ko, montant avoir sinon * \return int <0 si ko, montant avoir sinon
*/ */
function getCurrentDiscount($user='') function getCurrentDiscount($user='',$filter='')
{ {
$sql = "SELECT SUM(rc.amount_ht) as amount"; $sql = "SELECT SUM(rc.amount_ht) as amount";
$sql.= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc"; $sql.= " FROM ".MAIN_DB_PREFIX."societe_remise_except as rc";
$sql.= " WHERE rc.fk_soc =". $this->id; $sql.= " WHERE rc.fk_soc =". $this->id;
if (is_object($user)) $sql.= " AND rc.fk_user = ".$user->id; if (is_object($user)) $sql.= " AND rc.fk_user = ".$user->id;
$sql.= " AND rc.fk_facture IS NULL"; $sql.= " AND rc.fk_facture IS NULL";
$resql=$this->db->query($sql); if ($filter) $sql.=' AND '.$filter;
dolibarr_syslog("Societe::getCurrentDiscount sql=".$sql); dolibarr_syslog("Societe::getCurrentDiscount sql=".$sql,LOG_DEBUG);
$resql=$this->db->query($sql);
if ($resql) if ($resql)
{ {
$obj = $this->db->fetch_object($resql); $obj = $this->db->fetch_object($resql);
@ -1157,8 +1158,8 @@ class Societe
/** /**
* \brief Renvoie le nom d'une societe a partir d'un id * \brief Renvoie le nom d'une societe a partir d'un id
* \param id id de la société recherchée * \param id id de la soci<EFBFBD>t<EFBFBD> recherch<EFBFBD>e
* \return string Nom de la société * \return string Nom de la soci<EFBFBD>t<EFBFBD>
*/ */
function get_nom($id) function get_nom($id)
{ {
@ -1184,7 +1185,7 @@ class Societe
/** /**
* \brief Renvoie la liste des contacts emails existant pour la sociét * \brief Renvoie la liste des contacts emails existant pour la soci<EFBFBD>t
* \return array tableau des contacts emails * \return array tableau des contacts emails
*/ */
function thirdparty_and_contact_email_array() function thirdparty_and_contact_email_array()
@ -1194,14 +1195,14 @@ class Societe
$contact_email = $this->contact_email_array(); $contact_email = $this->contact_email_array();
if ($this->email) if ($this->email)
{ {
// TODO: Tester si email non deja présent dans tableau contact // TODO: Tester si email non deja pr<EFBFBD>sent dans tableau contact
$contact_email[-1]=$langs->trans("ThirdParty").': '.dolibarr_trunc($this->nom,16)." &lt;".$this->email."&gt;";; $contact_email[-1]=$langs->trans("ThirdParty").': '.dolibarr_trunc($this->nom,16)." &lt;".$this->email."&gt;";;
} }
return $contact_email; return $contact_email;
} }
/** /**
* \brief Renvoie la liste des contacts emails existant pour la société * \brief Renvoie la liste des contacts emails existant pour la soci<EFBFBD>t<EFBFBD>
* \return array tableau des contacts emails * \return array tableau des contacts emails
*/ */
function contact_email_array() function contact_email_array()
@ -1235,7 +1236,7 @@ class Societe
/** /**
* \brief Renvoie la liste des contacts de cette sociét * \brief Renvoie la liste des contacts de cette soci<EFBFBD>t
* \return array tableau des contacts * \return array tableau des contacts
*/ */
function contact_array() function contact_array()
@ -1298,7 +1299,7 @@ class Societe
/** /**
* \brief Renvoie la liste des libellés traduits des types actifs de sociétés * \brief Renvoie la liste des libell<EFBFBD>s traduits des types actifs de soci<EFBFBD>t<EFBFBD>s
* \param mode 0=renvoi id+libelle, 1=renvoi code+libelle * \param mode 0=renvoi id+libelle, 1=renvoi code+libelle
* \return array tableau des typesl * \return array tableau des typesl
*/ */
@ -1440,7 +1441,7 @@ class Societe
} }
/** /**
* \brief Attribut un code client à partir du module de controle des codes. * \brief Attribut un code client <EFBFBD> partir du module de controle des codes.
* \return code_client Code client automatique * \return code_client Code client automatique
*/ */
function get_codeclient($objsoc=0,$type=0) function get_codeclient($objsoc=0,$type=0)
@ -1460,7 +1461,7 @@ class Societe
} }
/** /**
* \brief Attribut un code fournisseur à partir du module de controle des codes. * \brief Attribut un code fournisseur <EFBFBD> partir du module de controle des codes.
* \return code_fournisseur Code fournisseur automatique * \return code_fournisseur Code fournisseur automatique
*/ */
function get_codefournisseur($objsoc=0,$type=1) function get_codefournisseur($objsoc=0,$type=1)
@ -1538,7 +1539,7 @@ class Societe
/** /**
* \brief Verifie code client * \brief Verifie code client
* \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilisé * \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilis<EFBFBD>
*/ */
function check_codeclient() function check_codeclient()
{ {
@ -1563,7 +1564,7 @@ class Societe
/** /**
* \brief Verifie code fournisseur * \brief Verifie code fournisseur
* \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilisé * \return int <0 si KO, 0 si OK, peut modifier le code client suivant le module utilis<EFBFBD>
*/ */
function check_codefournisseur() function check_codefournisseur()
{ {
@ -1588,8 +1589,8 @@ class Societe
/** /**
* \brief Renvoie un code compta, suivant le module de code compta. * \brief Renvoie un code compta, suivant le module de code compta.
* Peut être identique à celui saisit ou généré automatiquement. * Peut <EFBFBD>tre identique <EFBFBD> celui saisit ou g<EFBFBD>n<EFBFBD>r<EFBFBD> automatiquement.
* A ce jour seule la génération automatique est implémentée * A ce jour seule la g<EFBFBD>n<EFBFBD>ration automatique est impl<EFBFBD>ment<EFBFBD>e
* \param type Type de tiers ('customer' ou 'supplier') * \param type Type de tiers ('customer' ou 'supplier')
* \return string Code compta si ok, 0 si aucun, <0 si ko * \return string Code compta si ok, 0 si aucun, <0 si ko
*/ */
@ -1623,8 +1624,8 @@ class Societe
} }
/** /**
* \brief Défini la société mère pour les filiales * \brief D<EFBFBD>fini la soci<EFBFBD>t<EFBFBD> m<EFBFBD>re pour les filiales
* \param id id compagnie mère à positionner * \param id id compagnie m<EFBFBD>re <EFBFBD> positionner
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function set_parent($id) function set_parent($id)
@ -1647,8 +1648,8 @@ class Societe
} }
/** /**
* \brief Supprime la société mère * \brief Supprime la soci<EFBFBD>t<EFBFBD> m<EFBFBD>re
* \param id id compagnie mère à effacer * \param id id compagnie m<EFBFBD>re <EFBFBD> effacer
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function remove_parent($id) function remove_parent($id)
@ -1723,7 +1724,7 @@ class Societe
} }
/** /**
* \brief Renvoi url de vérification d'un identifiant professionnal * \brief Renvoi url de v<EFBFBD>rification d'un identifiant professionnal
* \param idprof 1,2,3,4 (Exemple: 1=siren,2=siret,3=naf,4=rcs/rm) * \param idprof 1,2,3,4 (Exemple: 1=siren,2=siret,3=naf,4=rcs/rm)
* \param soc Objet societe * \param soc Objet societe
* \return string url ou chaine vide si aucune url connue * \return string url ou chaine vide si aucune url connue
@ -1741,8 +1742,8 @@ class Societe
} }
/** /**
* \brief Indique si la société a des projets * \brief Indique si la soci<EFBFBD>t<EFBFBD> a des projets
* \return bool true si la société a des projets, false sinon * \return bool true si la soci<EFBFBD>t<EFBFBD> a des projets, false sinon
*/ */
function has_projects() function has_projects()
{ {
@ -1823,12 +1824,12 @@ class Societe
} }
/* /*
* \brief Renvoi si pays appartient à CEE * \brief Renvoi si pays appartient <EFBFBD> CEE
* \param boolean true = pays dans CEE, false= pays hors CEE * \param boolean true = pays dans CEE, false= pays hors CEE
*/ */
function isInEEC() function isInEEC()
{ {
// \todo liste code pays à compléter // \todo liste code pays <EFBFBD> compl<70>ter
$country_code_in_EEC=array('BE','FR','LU','GB'); $country_code_in_EEC=array('BE','FR','LU','GB');
//print "dd".$this->pays_code; //print "dd".$this->pays_code;
return in_array($this->pays_code,$country_code_in_EEC); return in_array($this->pays_code,$country_code_in_EEC);