This commit is contained in:
Laurent Destailleur 2013-05-03 16:14:27 +02:00
commit c8ef07a889
38 changed files with 384 additions and 134 deletions

View File

@ -7,26 +7,30 @@ English Dolibarr ChangeLog
***** ChangeLog for 3.3.2 compared to 3.3.1 ***** ***** ChangeLog for 3.3.2 compared to 3.3.1 *****
- Fix: Dutch (nl_NL) translation - Fix: Dutch (nl_NL) translation
- Fix: [ bug #790 ] Spanish localtax RE not being correctly calculated
- Generalize fix: file with a specific mask not found, again - Generalize fix: file with a specific mask not found, again
- Fix: translations and BILL_SUPPLIER_BUILDDOC trigger - Fix: translations and BILL_SUPPLIER_BUILDDOC trigger
- Fix: Can't reset payment due date - Fix: Can't reset payment due date
- Fix: [ bug #787 ] Invoice supplier box incorrect tooltip when delay on payment
- Fix: [ bug #794 ] Lost filter on zipcode in prospect list
- Fix: [ bug #774 ] Bug on creating event with box "all day" crossed
- Fix: [ bug #817 ] Purchases journal does not reflect localtaxes
- Fix: [ bug #816 ] Sales journal does not reflect localtaxes
- Fix: [ bug #806 ] Margins module with orders2invoice does not respect cost price
- Fix: Orderstoinvoice didn't act as expected when no order was checked - Fix: Orderstoinvoice didn't act as expected when no order was checked
- Fix: Bad link to all proposals into Third party card if customer is prospect - Fix: Bad link to all proposals into Third party card if customer is prospect
- Fix: [ bug #774 ] Bug on creating event with box "all day" crossed - Fix: [ bug #774 ] Bug on creating event with box "all day" crossed
- Fix: [ bug #787 ] Invoice supplier box incorrect tooltip when delay on payment
- Fix: [ bug #789 ] VAT not being calculated in POS - Fix: [ bug #789 ] VAT not being calculated in POS
- Fix: [ bug #794 ] Lost filter on zipcode in prospect list - Fix: [ bug #790 ] Spanish localtax RE not being correctly calculated
- Fix: [ bug #794 ] Lost filter on zipcode in prospect list
- Fix: [ bug #806 ] Margins module with orders2invoice does not respect cost price
- Fix: [ bug #810 ] Cannot update ODT template path - Fix: [ bug #810 ] Cannot update ODT template path
- Fix: [ bug #816 ] Sales journal does not reflect localtaxes
- Fix: [ bug #817 ] Purchases journal does not reflect localtaxes
- Fix: [ bug #824 ] MAIN_DB_PREFIX not use into dictionnary - Fix: [ bug #824 ] MAIN_DB_PREFIX not use into dictionnary
- Fix: [ bug #828 ] Error when code_region is not a number in llx_c_regions (with postgres) - Fix: [ bug #828 ] Error when code_region is not a number in llx_c_regions (with postgres)
- Fix: [ bug #857 ] Invoice created from shipment does not have the order discount - Fix: [ bug #855 ] Holiday approval email in French
- Fix: [ bug #856 ] (Holidays module) Mail error if destination user doesn't have an email - Fix: [ bug #856 ] (Holidays module) Mail error if destination user doesn't have an email
- Fix: [ bug #857 ] Invoice created from shipment does not have the order discount
- Fix: [ bug #861 ] Impossible to create a new event in agenda
- Fix: [ bug #827 ] AJAX search does not respect multiprice level
- Fix: [ bug #865 ] Dolibarr navigation array in project/task do not work
- Fix: [ bug #866 ] Standing order from an invoice suggests invoice total amount instead of remaining to pay
- Fix: [ bug #788 ] Date of linked interventions are not shown
***** ChangeLog for 3.3.1 compared to 3.3 ***** ***** ChangeLog for 3.3.1 compared to 3.3 *****

View File

@ -140,6 +140,8 @@ if ($resql)
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
$i = 0; $i = 0;
$langs->load('commercial');
print_barre_liste($langs->trans("ListOfCustomers"), $page, $_SERVER["PHP_SELF"],"",$sortfield,$sortorder,'',$num); print_barre_liste($langs->trans("ListOfCustomers"), $page, $_SERVER["PHP_SELF"],"",$sortfield,$sortorder,'',$num);
print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">'; print '<form method="GET" action="'.$_SERVER["PHP_SELF"].'">';

View File

@ -2701,10 +2701,21 @@ class Facture extends CommonInvoice
{ {
$now=dol_now(); $now=dol_now();
$totalpaye = $this->getSommePaiement();
$totalcreditnotes = $this->getSumCreditNotesUsed();
$totaldeposits = $this->getSumDepositsUsed();
//print "totalpaye=".$totalpaye." totalcreditnotes=".$totalcreditnotes." totaldeposts=".$totaldeposits;
// We can also use bcadd to avoid pb with floating points
// For example print 239.2 - 229.3 - 9.9; does not return 0.
//$resteapayer=bcadd($this->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
//$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
$resteapayer = price2num($this->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits,'MT');
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande'; $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande';
$sql .= ' (fk_facture, amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib)'; $sql .= ' (fk_facture, amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib)';
$sql .= ' VALUES ('.$this->id; $sql .= ' VALUES ('.$this->id;
$sql .= ",'".price2num($this->total_ttc)."'"; $sql .= ",'".price2num($resteapayer)."'";
$sql .= ",".$this->db->idate($now).",".$user->id; $sql .= ",".$this->db->idate($now).",".$user->id;
$sql .= ",'".$soc->bank_account->code_banque."'"; $sql .= ",'".$soc->bank_account->code_banque."'";
$sql .= ",'".$soc->bank_account->code_guichet."'"; $sql .= ",'".$soc->bank_account->code_guichet."'";

View File

@ -404,6 +404,15 @@ if ($object->id > 0)
print '<tr><td>'.$langs->trans('AmountTTC').'</td><td align="right" colspan="2" nowrap>'.price($object->total_ttc).'</td>'; print '<tr><td>'.$langs->trans('AmountTTC').'</td><td align="right" colspan="2" nowrap>'.price($object->total_ttc).'</td>';
print '<td>'.$langs->trans('Currency'.$conf->currency).'</td></tr>'; print '<td>'.$langs->trans('Currency'.$conf->currency).'</td></tr>';
// We can also use bcadd to avoid pb with floating points
// For example print 239.2 - 229.3 - 9.9; does not return 0.
//$resteapayer=bcadd($object->total_ttc,$totalpaye,$conf->global->MAIN_MAX_DECIMALS_TOT);
//$resteapayer=bcadd($resteapayer,$totalavoir,$conf->global->MAIN_MAX_DECIMALS_TOT);
$resteapayer = price2num($object->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits,'MT');
print '<tr><td>'.$langs->trans('RemainderToPay').'</td><td align="right" colspan="2" nowrap>'.price($resteapayer).'</td>';
print '<td>'.$langs->trans('Currency'.$conf->currency).'</td></tr>';
// Statut // Statut
print '<tr><td>'.$langs->trans('Status').'</td>'; print '<tr><td>'.$langs->trans('Status').'</td>';
print '<td align="left" colspan="3">'.($object->getLibStatut(4,$totalpaye)).'</td></tr>'; print '<td align="left" colspan="3">'.($object->getLibStatut(4,$totalpaye)).'</td></tr>';

View File

@ -27,7 +27,7 @@
require '../bank/pre.inc.php'; require '../bank/pre.inc.php';
require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php';
$langs->load("widthdrawals"); $langs->load("withdrawals");
$langs->load("categories"); $langs->load("categories");
// Security check // Security check

View File

@ -426,14 +426,14 @@ class BonPrelevement extends CommonObject
$facs = array(); $facs = array();
$amounts = array(); $amounts = array();
$facs = $this->getListInvoices(); $facs = $this->getListInvoices(1);
$num=count($facs); $num=count($facs);
for ($i = 0; $i < $num; $i++) for ($i = 0; $i < $num; $i++)
{ {
$fac = new Facture($this->db); $fac = new Facture($this->db);
$fac->fetch($facs[$i]); $fac->fetch($facs[$i][0]);
$amounts[$fac->id] = $fac->total_ttc; $amounts[$fac->id] = $facs[$i][1];
$result = $fac->set_paid($user); $result = $fac->set_paid($user);
} }
$paiement = new Paiement($this->db); $paiement = new Paiement($this->db);
@ -576,9 +576,10 @@ class BonPrelevement extends CommonObject
/** /**
* Get invoice list * Get invoice list
* *
* @param $amounts If you want to get the amount of the order for each invoice
* @return array id of invoices * @return array id of invoices
*/ */
private function getListInvoices() private function getListInvoices($amounts=0)
{ {
global $conf; global $conf;
@ -589,6 +590,7 @@ class BonPrelevement extends CommonObject
* dans un bon de prelevement * dans un bon de prelevement
*/ */
$sql = "SELECT fk_facture"; $sql = "SELECT fk_facture";
if ($amounts) $sql .= ", SUM(pl.amount)";
$sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
$sql.= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; $sql.= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl";
$sql.= " , ".MAIN_DB_PREFIX."prelevement_facture as pf"; $sql.= " , ".MAIN_DB_PREFIX."prelevement_facture as pf";
@ -596,6 +598,7 @@ class BonPrelevement extends CommonObject
$sql.= " AND pl.fk_prelevement_bons = p.rowid"; $sql.= " AND pl.fk_prelevement_bons = p.rowid";
$sql.= " AND p.rowid = ".$this->id; $sql.= " AND p.rowid = ".$this->id;
$sql.= " AND p.entity = ".$conf->entity; $sql.= " AND p.entity = ".$conf->entity;
if ($amounts) $sql.= " GROUP BY fk_facture";
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
@ -608,7 +611,14 @@ class BonPrelevement extends CommonObject
while ($i < $num) while ($i < $num)
{ {
$row = $this->db->fetch_row($resql); $row = $this->db->fetch_row($resql);
$arr[$i] = $row[0]; if (!$amounts) $arr[$i] = $row[0];
else
{
$arr[$i] = array(
$row[0],
$row[1]
);
}
$i++; $i++;
} }
} }

View File

@ -33,6 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
$langs->load("companies"); $langs->load("companies");
$langs->load("categories"); $langs->load("categories");
$langs->load('withdrawals'); $langs->load('withdrawals');
$langs->load('bills');
// Securite acces client // Securite acces client
if ($user->societe_id > 0) accessforbidden(); if ($user->societe_id > 0) accessforbidden();

View File

@ -32,6 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
$langs->load("categories"); $langs->load("categories");
$langs->load('withdrawals'); $langs->load('withdrawals');
$langs->load('bills');
// Securite acces client // Securite acces client
if ($user->societe_id > 0) accessforbidden(); if ($user->societe_id > 0) accessforbidden();

View File

@ -33,6 +33,7 @@ if ($user->societe_id > 0) accessforbidden();
$langs->load("withdrawals"); $langs->load("withdrawals");
$langs->load("categories"); $langs->load("categories");
$langs->load('bills');
// Get supervariables // Get supervariables
$prev_id = GETPOST('id','int'); $prev_id = GETPOST('id','int');

View File

@ -36,6 +36,7 @@ if ($user->societe_id > 0) accessforbidden();
$langs->load("categories"); $langs->load("categories");
$langs->load('withdrawals'); $langs->load('withdrawals');
$langs->load('bills');
// Get supervariables // Get supervariables
$prev_id = GETPOST('id','int'); $prev_id = GETPOST('id','int');

View File

@ -26,6 +26,7 @@
require '../bank/pre.inc.php'; require '../bank/pre.inc.php';
require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/rejetprelevement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/rejetprelevement.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/ligneprelevement.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php';
$langs->load("withdrawals"); $langs->load("withdrawals");
@ -56,6 +57,7 @@ if ($sortorder == "") $sortorder="DESC";
if ($sortfield == "") $sortfield="p.datec"; if ($sortfield == "") $sortfield="p.datec";
$rej = new RejetPrelevement($db, $user); $rej = new RejetPrelevement($db, $user);
$ligne = new LignePrelevement($db);
/* /*
* Liste des factures * Liste des factures
@ -84,7 +86,7 @@ if ($result)
print"\n<!-- debut table -->\n"; print"\n<!-- debut table -->\n";
print '<table class="noborder" width="100%" cellspacing="0" cellpadding="4">'; print '<table class="noborder" width="100%" cellspacing="0" cellpadding="4">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Nb"),"rejets.php","p.ref",'',$urladd); print_liste_field_titre($langs->trans("Line"),"rejets.php","p.ref",'',$urladd);
print_liste_field_titre($langs->trans("ThirdParty"),"rejets.php","s.nom",'',$urladd); print_liste_field_titre($langs->trans("ThirdParty"),"rejets.php","s.nom",'',$urladd);
print_liste_field_titre($langs->trans("Reason"),"rejets.php","pr.motif","",$urladd); print_liste_field_titre($langs->trans("Reason"),"rejets.php","pr.motif","",$urladd);
print '</tr>'; print '</tr>';
@ -98,7 +100,7 @@ if ($result)
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
print "<tr $bc[$var]><td>"; print "<tr $bc[$var]><td>";
print '<img border="0" src="./img/statut'.$obj->statut.'.png"></a>&nbsp;'; print $ligne->LibStatut($obj->statut,2).'&nbsp;';
print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/ligne.php?id='.$obj->rowid.'">'; print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/ligne.php?id='.$obj->rowid.'">';
print substr('000000'.$obj->rowid, -6)."</a></td>"; print substr('000000'.$obj->rowid, -6)."</a></td>";

View File

@ -246,11 +246,11 @@ class Contact extends CommonObject
$sql .= ", poste='".$this->db->escape($this->poste)."'"; $sql .= ", poste='".$this->db->escape($this->poste)."'";
$sql .= ", fax='".$this->db->escape($this->fax)."'"; $sql .= ", fax='".$this->db->escape($this->fax)."'";
$sql .= ", email='".$this->db->escape($this->email)."'"; $sql .= ", email='".$this->db->escape($this->email)."'";
$sql .= ", note='".$this->db->escape($this->note)."'"; $sql .= ", note='".(isset($this->note)?"'".$this->db->escape($this->note)."'":"null")."'";
$sql .= ", phone = '".$this->db->escape($this->phone_pro)."'"; $sql .= ", phone = '".(isset($this->phone_pro)?"'".$this->db->escape($this->phone_pro)."'":"null")."'";
$sql .= ", phone_perso = '".$this->db->escape($this->phone_perso)."'"; $sql .= ", phone_perso = '".(isset($this->phone_perso)?"'".$this->db->escape($this->phone_perso)."'":"null")."'";
$sql .= ", phone_mobile = '".$this->db->escape($this->phone_mobile)."'"; $sql .= ", phone_mobile = '".(isset($this->phone_mobile)?"'".$this->db->escape($this->phone_mobile)."'":"null")."'";
$sql .= ", jabberid = '".$this->db->escape($this->jabberid)."'"; $sql .= ", jabberid = '".(isset($this->jabberid)?"'".$this->db->escape($this->jabberid)."'":"null")."'";
$sql .= ", priv = '".$this->priv."'"; $sql .= ", priv = '".$this->priv."'";
$sql .= ", fk_user_modif=".($user->id > 0 ? "'".$user->id."'":"null"); $sql .= ", fk_user_modif=".($user->id > 0 ? "'".$user->id."'":"null");
$sql .= ", default_lang=".($this->default_lang?"'".$this->default_lang."'":"null"); $sql .= ", default_lang=".($this->default_lang?"'".$this->default_lang."'":"null");

View File

@ -524,20 +524,20 @@ class Contrat extends CommonObject
$objp = $this->db->fetch_object($result); $objp = $this->db->fetch_object($result);
$line = new ContratLigne($this->db); $line = new ContratLigne($this->db);
$line->id = $objp->rowid; $line->id = $objp->rowid;
$line->fk_contrat = $objp->fk_contrat; $line->fk_contrat = $objp->fk_contrat;
$line->libelle = $objp->description; $line->libelle = $objp->description;
$line->desc = $objp->description; $line->desc = $objp->description;
$line->qty = $objp->qty; $line->qty = $objp->qty;
$line->statut = $objp->statut; $line->statut = $objp->statut;
$line->ref = $objp->ref; $line->ref = (isset($objp->ref)?$objp->ref:NULL);
$line->tva_tx = $objp->tva_tx; $line->tva_tx = $objp->tva_tx;
$line->localtax1_tx = $objp->localtax1_tx; $line->localtax1_tx = $objp->localtax1_tx;
$line->localtax2_tx = $objp->localtax2_tx; $line->localtax2_tx = $objp->localtax2_tx;
$line->subprice = $objp->subprice; $line->subprice = $objp->subprice;
$line->remise_percent = $objp->remise_percent; $line->remise_percent = $objp->remise_percent;
$line->price_ht = $objp->price_ht; $line->price_ht = $objp->price_ht;
$line->price = $objp->price; // For backward compatibility $line->price = (isset($objp->price)?$objp->price:NULL); // For backward compatibility
$line->total_ht = $objp->total_ht; $line->total_ht = $objp->total_ht;
$line->total_tva = $objp->total_tva; $line->total_tva = $objp->total_tva;
$line->total_localtax1= $objp->total_localtax1; $line->total_localtax1= $objp->total_localtax1;

View File

@ -938,7 +938,7 @@ class DoliDBMysqli
* *
* @param string $table Name of table * @param string $table Name of table
* @param string $field Optionnel : Name of field if we want description of field * @param string $field Optionnel : Name of field if we want description of field
* @return resource Resource * @return resultset Resultset x (x->Field, x->Type, ...)
*/ */
function DDLDescTable($table,$field="") function DDLDescTable($table,$field="")
{ {

View File

@ -1169,7 +1169,7 @@ class DoliDBPgsql
* *
* @param string $table Name of table * @param string $table Name of table
* @param string $field Optionnel : Name of field if we want description of field * @param string $field Optionnel : Name of field if we want description of field
* @return resource Resource * @return resultset Resultset x (x->attname)
*/ */
function DDLDescTable($table,$field="") function DDLDescTable($table,$field="")
{ {

View File

@ -751,12 +751,14 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n
{ {
$error=0; $error=0;
//print "x".$file." ".$disableglob; //print "x".$file." ".$disableglob;exit;
$ok=true; $ok=true;
$file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset $file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset
if (empty($disableglob) && ! empty($file_osencoded)) if (empty($disableglob) && ! empty($file_osencoded))
{ {
foreach (glob($file_osencoded) as $filename) $globencoded=str_replace('[','\[',$file_osencoded);
$globencoded=str_replace(']','\]',$globencoded);
foreach (glob($globencoded) as $filename)
{ {
if ($nophperrors) $ok=@unlink($filename); // The unlink encapsulated by dolibarr if ($nophperrors) $ok=@unlink($filename); // The unlink encapsulated by dolibarr
else $ok=unlink($filename); // The unlink encapsulated by dolibarr else $ok=unlink($filename); // The unlink encapsulated by dolibarr

View File

@ -219,7 +219,9 @@ function restrictedArea($user, $features, $objectid=0, $dbtablename='', $feature
{ {
foreach($feature2 as $subfeature) foreach($feature2 as $subfeature)
{ {
if (empty($user->rights->$feature->$subfeature->creer) && empty($user->rights->$feature->$subfeature->write)) $createok=0; if (empty($user->rights->$feature->$subfeature->creer)
&& empty($user->rights->$feature->$subfeature->write)
&& empty($user->rights->$feature->$subfeature->create)) $createok=0;
else { $createok=1; break; } // For bypass the second test if the first is ok else { $createok=1; break; } // For bypass the second test if the first is ok
} }
} }

View File

@ -48,7 +48,7 @@ function print_eldy_menu($db,$atarget,$type_user)
// Home // Home
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "home") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "home")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -76,7 +76,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("suppliers"); $langs->load("suppliers");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "companies") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "companies")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -110,14 +110,14 @@ function print_eldy_menu($db,$atarget,$type_user)
} }
// Products-Services // Products-Services
$tmpentry=array('enabled'=>($conf->product->enabled || $conf->service->enabled), 'perms'=>($user->rights->produit->lire || $user->rights->service->lire), 'module'=>'product|service'); $tmpentry=array('enabled'=>($conf->product->enabled || $conf->service->enabled), 'perms'=>($user->rights->produit->lire || $user->rights->service->lire), 'module'=>'product|service');
$showmode=dol_eldy_showmenu($type_user, $tmpentry, $listofmodulesforexternal); $showmode=dol_eldy_showmenu($type_user, $tmpentry, $listofmodulesforexternal);
if ($showmode) if ($showmode)
{ {
$langs->load("products"); $langs->load("products");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "products") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "products")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -167,7 +167,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("commercial"); $langs->load("commercial");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "commercial") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "commercial")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -209,7 +209,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("compta"); $langs->load("compta");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "accountancy") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "accountancy")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -252,7 +252,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("banks"); $langs->load("banks");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "bank") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "bank")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -294,7 +294,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("projects"); $langs->load("projects");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "project") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "project")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -336,7 +336,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("other"); $langs->load("other");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "tools") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "tools")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -378,7 +378,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("shop"); $langs->load("shop");
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "shop") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "shop")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -406,7 +406,7 @@ function print_eldy_menu($db,$atarget,$type_user)
if ($showmode) if ($showmode)
{ {
$classname=""; $classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "members") if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "members")
{ {
$classname='class="tmenusel"'; $_SESSION['idmenu']=''; $classname='class="tmenusel"'; $_SESSION['idmenu']='';
} }
@ -451,10 +451,10 @@ function print_eldy_menu($db,$atarget,$type_user)
{ {
$idsel=(empty($newTabMenu[$i]['mainmenu'])?'none':$newTabMenu[$i]['mainmenu']); $idsel=(empty($newTabMenu[$i]['mainmenu'])?'none':$newTabMenu[$i]['mainmenu']);
$showmode=dol_eldy_showmenu($type_user,$newTabMenu[$i],$listofmodulesforexternal); $showmode=dol_eldy_showmenu($type_user,$newTabMenu[$i],$listofmodulesforexternal);
if ($showmode == 1) if ($showmode == 1)
{ {
if (preg_match("/^(http:\/\/|https:\/\/)/i",$newTabMenu[$i]['url'])) if (preg_match("/^(http:\/\/|https:\/\/)/i",$newTabMenu[$i]['url']))
{ {
$url = $newTabMenu[$i]['url']; $url = $newTabMenu[$i]['url'];
@ -1462,36 +1462,36 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after)
} }
/** /**
* Function to test if an entry is enabled or not * Function to test if an entry is enabled or not
* *
* @param string $type_user 0=We need backoffice menu, 1=We need frontoffice menu * @param string $type_user 0=We need backoffice menu, 1=We need frontoffice menu
* @param array &$menuentry Array for menu entry * @param array &$menuentry Array for menu entry
* @param array &$listofmodulesforexternal Array with list of modules allowed to external users * @param array &$listofmodulesforexternal Array with list of modules allowed to external users
* @return int 0=Hide, 1=Show, 2=Show gray * @return int 0=Hide, 1=Show, 2=Show gray
*/ */
function dol_eldy_showmenu($type_user, &$menuentry, &$listofmodulesforexternal) function dol_eldy_showmenu($type_user, &$menuentry, &$listofmodulesforexternal)
{ {
//print 'type_user='.$type_user.' module='.$menuentry['module'].' enabled='.$menuentry['enabled'].' perms='.$menuentry['perms']; //print 'type_user='.$type_user.' module='.$menuentry['module'].' enabled='.$menuentry['enabled'].' perms='.$menuentry['perms'];
//print 'ok='.in_array($menuentry['module'], $listofmodulesforexternal); //print 'ok='.in_array($menuentry['module'], $listofmodulesforexternal);
if (empty($menuentry['enabled'])) return 0; // Entry disabled by condition if (empty($menuentry['enabled'])) return 0; // Entry disabled by condition
if ($type_user && $menuentry['module']) if ($type_user && $menuentry['module'])
{ {
$tmploops=explode('|',$menuentry['module']); $tmploops=explode('|',$menuentry['module']);
$found=0; $found=0;
foreach($tmploops as $tmploop) foreach($tmploops as $tmploop)
{ {
if (in_array($tmploop, $listofmodulesforexternal)) { if (in_array($tmploop, $listofmodulesforexternal)) {
$found++; break; $found++; break;
} }
} }
if (! $found) return 0; // Entry is for menus all excluded to external users if (! $found) return 0; // Entry is for menus all excluded to external users
} }
if (! $menuentry['perms'] && $type_user) return 0; // No permissions and user is external if (! $menuentry['perms'] && $type_user) return 0; // No permissions and user is external
if (! $menuentry['perms'] && ! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED)) return 0; // No permissions and option to hide when not allowed, even for internal user, is on if (! $menuentry['perms'] && ! empty($conf->global->MAIN_MENU_HIDE_UNAUTHORIZED)) return 0; // No permissions and option to hide when not allowed, even for internal user, is on
if (! $menuentry['perms']) return 2; // No permissions and user is external if (! $menuentry['perms']) return 2; // No permissions and user is external
return 1; return 1;
} }
?> ?>

View File

@ -66,8 +66,7 @@ class ImportCsv extends ModeleImports
global $conf,$langs; global $conf,$langs;
$this->db = $db; $this->db = $db;
$this->separator=','; // Change also function cleansep $this->separator=(GETPOST('separator')?GETPOST('separator'):(empty($conf->global->IMPORT_CSV_SEPARATOR_TO_USE)?',':$conf->global->IMPORT_CSV_SEPARATOR_TO_USE));
if (! empty($conf->global->IMPORT_CSV_SEPARATOR_TO_USE)) $this->separator=$conf->global->IMPORT_CSV_SEPARATOR_TO_USE;
$this->enclosure='"'; $this->enclosure='"';
$this->escape='"'; $this->escape='"';
@ -579,7 +578,7 @@ class ImportCsv extends ModeleImports
//var_dump($objimport->array_import_convertvalue); exit; //var_dump($objimport->array_import_convertvalue); exit;
// Build SQL request // Build SQL request
if (! tablewithentity($tablename)) if (! tablewithentity($tablename))
{ {
$sql ='INSERT INTO '.$tablename.'('.$listfields.', import_key'; $sql ='INSERT INTO '.$tablename.'('.$listfields.', import_key';
if (! empty($objimport->array_import_tables_creator[0][$alias])) $sql.=', '.$objimport->array_import_tables_creator[0][$alias]; if (! empty($objimport->array_import_tables_creator[0][$alias])) $sql.=', '.$objimport->array_import_tables_creator[0][$alias];
@ -651,25 +650,16 @@ function cleansep($value)
function tablewithentity($table) function tablewithentity($table)
{ {
global $db; global $db;
$sql = "SHOW COLUMNS FROM ".$table." LIKE 'entity'";
$resql=$db->DDLDescTable($table,'entity');
$resql=$db->query($sql); if ($resql)
if ($resql) {
{ $i=0;
$numrows=$db->num_rows($resql); $obj=$db->fetch_object($resql);
if ($numrows) if ($obj) return 1;
{ else return 0;
return 1;
}
else
{
return 0;
}
}
else
{
return -1;
} }
else return -1;
} }
?> ?>

View File

@ -355,7 +355,7 @@ class modSociete extends DolibarrModules
$this->import_label[$r]='ImportDataset_company_2'; $this->import_label[$r]='ImportDataset_company_2';
$this->import_icon[$r]='contact'; $this->import_icon[$r]='contact';
$this->import_entities_array[$r]=array('s.fk_soc'=>'company'); // We define here only fields that use another icon that the one defined into import_icon $this->import_entities_array[$r]=array('s.fk_soc'=>'company'); // We define here only fields that use another icon that the one defined into import_icon
$this->import_tables_array[$r]=array('s'=>MAIN_DB_PREFIX.'socpeople'); // List of tables to insert into (insert done in same order) $this->import_tables_array[$r]=array('s'=>MAIN_DB_PREFIX.'socpeople','extra'=>MAIN_DB_PREFIX.'socpeople_extrafields'); // List of tables to insert into (insert done in same order)
$this->import_fields_array[$r]=array('s.fk_soc'=>'ThirdPartyName*','s.civilite'=>'UserTitle','s.name'=>"Name*",'s.firstname'=>"Firstname",'s.address'=>"Address",'s.cp'=>"Zip",'s.ville'=>"Town",'s.fk_pays'=>"CountryCode",'s.birthday'=>"BirthdayDate",'s.poste'=>"Role",'s.phone'=>"Phone",'s.phone_perso'=>"PhonePerso",'s.phone_mobile'=>"PhoneMobile",'s.fax'=>"Fax",'s.email'=>"Email",'s.note'=>"Note",'s.datec'=>"DateCreation"); $this->import_fields_array[$r]=array('s.fk_soc'=>'ThirdPartyName*','s.civilite'=>'UserTitle','s.name'=>"Name*",'s.firstname'=>"Firstname",'s.address'=>"Address",'s.cp'=>"Zip",'s.ville'=>"Town",'s.fk_pays'=>"CountryCode",'s.birthday'=>"BirthdayDate",'s.poste'=>"Role",'s.phone'=>"Phone",'s.phone_perso'=>"PhonePerso",'s.phone_mobile'=>"PhoneMobile",'s.fax'=>"Fax",'s.email'=>"Email",'s.note'=>"Note",'s.datec'=>"DateCreation");
// Add extra fields // Add extra fields
$sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'contact'"; $sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'contact'";
@ -370,7 +370,7 @@ class modSociete extends DolibarrModules
} }
} }
// End add extra fields // End add extra fields
$this->import_fieldshidden_array[$r]=array('s.fk_user_creat'=>'user->id'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent) $this->import_fieldshidden_array[$r]=array('s.fk_user_creat'=>'user->id','extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'socpeople'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
$this->import_convertvalue_array[$r]=array( $this->import_convertvalue_array[$r]=array(
's.fk_soc'=>array('rule'=>'fetchidfromref','file'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty'), 's.fk_soc'=>array('rule'=>'fetchidfromref','file'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty'),
's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/cpays.class.php','class'=>'Cpays','method'=>'fetch','dict'=>'DictionnaryCountry'), 's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/cpays.class.php','class'=>'Cpays','method'=>'fetch','dict'=>'DictionnaryCountry'),

View File

@ -43,6 +43,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
var $prefixcustomer='CU'; var $prefixcustomer='CU';
var $prefixsupplier='SU'; var $prefixsupplier='SU';
var $prefixIsRequired; // Le champ prefix du tiers doit etre renseigne quand on utilise {pre}
/** /**
@ -57,6 +58,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
$this->code_modifiable_invalide = 1; $this->code_modifiable_invalide = 1;
$this->code_modifiable_null = 1; $this->code_modifiable_null = 1;
$this->code_auto = 1; $this->code_auto = 1;
$this->prefixIsRequired = 0;
} }

View File

@ -33,7 +33,7 @@
else if (type == 'varchar') { size.val('255').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); } else if (type == 'varchar') { size.val('255').removeAttr('disabled'); unique.removeAttr('disabled','disabled'); }
else size.val('').attr('disabled','disabled'); else size.val('').attr('disabled','disabled');
} }
init_typeoffields(''); init_typeoffields('<?php echo GETPOST('type'); ?>');
jQuery("#type").change(function() { jQuery("#type").change(function() {
init_typeoffields($(this).val()); init_typeoffields($(this).val());
}); });

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2011 Dimitri Mouillard <dmouillard@teclib.com> /* Copyright (C) 2011 Dimitri Mouillard <dmouillard@teclib.com>
* Copyright (C) 2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2012 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -296,7 +297,7 @@ if ($action == 'confirm_send')
// Content // Content
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n";
$message.= "\n"; $message.= "\n";
$message.= "Veuillez trouver ci-dessous une demande de congés payés à valider.\n"; $message.= $langs->transnoentities("HolidaysToValidateBody")."\n";
$delayForRequest = $cp->getConfCP('delayForRequest'); $delayForRequest = $cp->getConfCP('delayForRequest');
//$delayForRequest = $delayForRequest * (60*60*24); //$delayForRequest = $delayForRequest * (60*60*24);
@ -309,7 +310,7 @@ if ($action == 'confirm_send')
if($cp->date_debut < $nextMonth) if($cp->date_debut < $nextMonth)
{ {
$message.= "\n"; $message.= "\n";
$message.= "Cette demande de congés payés à été effectué dans un délai de moins de ".$cp->getConfCP('delayForRequest')." jours avant ceux-ci.\n"; $message.= $langs->transnoentities("HolidaysToValidateDelay",$cp->getConfCP('delayForRequest'))."\n";
} }
} }
@ -320,7 +321,7 @@ if ($action == 'confirm_send')
if ($nbopenedday > $cp->getCPforUser($cp->fk_user)) if ($nbopenedday > $cp->getCPforUser($cp->fk_user))
{ {
$message.= "\n"; $message.= "\n";
$message.= "L'utilisateur ayant fait cette demande de congés payés n'a pas le solde requis.\n"; $message.= $langs->transnoentities("HolidaysToValidateAlertSolde")."\n";
} }
} }
@ -411,7 +412,7 @@ if($action == 'confirm_valid')
// Content // Content
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n";
$message.= "\n"; $message.= "\n";
$message.= "Votre demande de congés payés du ".dol_print_date($cp->date_debut,'day')." au ".dol_print_date($cp->date_fin,'day')." vient d'être validée!\n"; $message.= $langs->transnoentities("HolidaysValidatedBody", dol_print_date($cp->date_debut,'day'),dol_print_date($cp->date_fin,'day'))."\n";
$message.= "- ".$langs->transnoentitiesnoconv("ValidatedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("ValidatedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n";
$message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n";
$message.= "\n"; $message.= "\n";
@ -485,9 +486,9 @@ if ($action == 'confirm_refuse')
// Content // Content
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n";
$message.= "\n"; $message.= "\n";
$message.= "Votre demande de congés payés ".dol_print_date($cp->date_debut,'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($cp->date_fin,'day')." vient d'être refusée pour le motif suivant :\n"; $message.= $langs->transnoentities("HolidaysRefusedBody", dol_print_date($cp->date_debut,'day'), dol_print_date($cp->date_fin,'day'))."\n";
$message.= $_POST['detail_refuse']."\n\n"; $message.= GETPOST('detail_refuse','alpha')."\n\n";
$message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n";
$message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n";
$message.= "\n"; $message.= "\n";
@ -562,7 +563,7 @@ if ($action == 'confirm_cancel' && $_GET['confirm'] == 'yes')
// Content // Content
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n";
$message.= "\n"; $message.= "\n";
$message.= "Votre demande de congés ".dol_print_date($cp->date_debut,'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($cp->date_fin,'day')." va été annulée.\n"; $message.= $langs->transnoentities("HolidaysCanceledBody", dol_print_date($cp->date_debut,'day'), dol_print_date($cp->date_fin,'day'))."\n";
$message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n";
$message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n";
$message.= "\n"; $message.= "\n";

View File

@ -1017,7 +1017,7 @@ if ($step == 4 && $datatoimport)
} }
else else
{ {
print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("SomeMandatoryFieldHaveNoSource")).'">'.$langs->trans("NextStep").'</a>'; print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("SomeMandatoryFieldHaveNoSource")).'">'.$langs->trans("NextStep").'</a>';
} }
} }
@ -1281,7 +1281,7 @@ if ($step == 5 && $datatoimport)
} }
else else
{ {
print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->trans("NotEnoughPermissions")).'">'.$langs->trans("RunSimulateImportFile").'</a>'; print '<a class="butActionRefused" href="#" title="'.dol_escape_htmltag($langs->transnoentitiesnoconv("NotEnoughPermissions")).'">'.$langs->trans("RunSimulateImportFile").'</a>';
} }
print '</center>'; print '</center>';
} }

View File

@ -559,10 +559,10 @@ class PEAR
$ec = 'PEAR_Error'; $ec = 'PEAR_Error';
} }
if ($skipmsg) { if ($skipmsg) {
$a = &new $ec($code, $mode, $options, $userinfo); $a = new $ec($code, $mode, $options, $userinfo);
return $a; return $a;
} else { } else {
$a = &new $ec($message, $code, $mode, $options, $userinfo); $a = new $ec($message, $code, $mode, $options, $userinfo);
return $a; return $a;
} }
} }

View File

@ -307,7 +307,7 @@ class Mail_mimeDecode extends PEAR
break; break;
case 'message/rfc822': case 'message/rfc822':
$obj = &new Mail_mimeDecode($body); $obj = new Mail_mimeDecode($body);
$return->parts[] = $obj->decode(array('include_bodies' => $this->_include_bodies, $return->parts[] = $obj->decode(array('include_bodies' => $this->_include_bodies,
'decode_bodies' => $this->_decode_bodies, 'decode_bodies' => $this->_decode_bodies,
'decode_headers' => $this->_decode_headers)); 'decode_headers' => $this->_decode_headers));

View File

@ -0,0 +1,154 @@
# Dolibarr language file - ca_ES - holiday
CHARSET= UTF-8
Holidays=Vacacions
CPTitreMenu=Vacacions
MenuReportMonth=Estat mensual
MenuAddCP=Nova petició
NotActiveModCP=Heu d'activar el mòdul Vacacions per veure aquesta pàgina.
NotConfigModCP=Heu de configurar el mòdul Vacacions per veure aquesta pàgina. per configurar, <a href="./admin/holiday.php?leftmenu=setup&mainmenu=home" style="font-weight: normal; color: red; text-decoration: underline;">feu clic aquí</a>.
NoCPforUser=No té peticions de vacances.
AddCP=Crear petició de vacances
CPErrorSQL=S'ha produït un error de SQL:
Employe=Empleat
DateDebCP=Data inici
DateFinCP=Data fi
DateCreateCP=Data de creació
DraftCP=Esborrany
ToValidateCP=En espera de validació
ValidateCP=Validada
CancelCP=Anul·lada
RefuseCP=Rebutjada
ValidatorCP=Validador
ListeCP=Llista de vacances
ValidateByCP=Serà validada per
DescCP=Descripció
SendRequestCP=Enviar la petició de vacances
DelayToRequestCP=Les peticions de vacances s'han de fer almenys <b>%s dies</b> abans.
MenuConfCP=Definir les vacances
UpdateAllCP=Actualitzar les vacances
SoldeCPUser=El seu saldo de vacances és de <b>%s dies</b>.
ErrorEndDateCP=Ha d'indicar una data de fi superior a la data d'inici.
ErrorSQLCreateCP=S'ha produït un error de SQL durant la creació:
ErrorIDFicheCP=S'ha produït un error, aquesta sol·licitud de vacances no existeix.
ReturnCP=Tornar a la pàgina anterior
ErrorUserViewCP=No està autoritzat a llegir aquesta petició de vacances.
InfosCP=Informació de la petició de vacances
InfosWorkflowCP=Informació del workflow
DateCreateCP=Data de creació
RequestByCP=Comandada per
TitreRequestCP=Fitxa vacances
NbUseDaysCP=Nombre de dies de vacances consumits
EditCP=Modificar
DeleteCP=Eliminar
ActionValidCP=Validar
ActionRefuseCP=Rebutjar
ActionCancelCP=Anul·lar
StatutCP=Estat
SendToValidationCP=Enviar validació
TitleDeleteCP=Eliminar la petició de vacances
ConfirmDeleteCP=Està segur de voler eliminar aquesta petició de vacances?
ErrorCantDeleteCP=Error, no té vacances per eliminar aquesta petició de vacances.
CantCreateCP=No té vacances per realitzar peticions de vacances.
InvalidValidatorCP=Ha d'indicar un validador per a la seva petició de vacances.
UpdateButtonCP=Actualitzar
CantUpdate=No pot actualitzar aquesta petició de vacances.
NoDateDebut=Ha d'indicar una data d'inici.
NoDateFin=Ha d'indicar una data de fi.
ErrorDureeCP=La seva petició de vacances no conté cap dia hàbil.
TitleValidCP=Validar la petició de vacances
ConfirmValidCP=Esteu segur de voler validar aquesta petició de vacances?
DateValidCP=Data de validació
TitleToValidCP=Enviar la petició de vacances
ConfirmToValidCP=Esteu segur de voler enviar la petició de vacances?
TitleRefuseCP=Rebutjar la petició de vacances
ConfirmRefuseCP=Esteu segur de voler rebutjar la petició de vacances?
NoMotifRefuseCP=Ha de seleccionar un motiu per rebutjar aquesta petició.
TitleCancelCP=Anul·lar la petició de vacances
ConfirmCancelCP=Esteu segur de voler anul·lar la petició de vacances?
DetailRefusCP=Motiu del rebuig
DateRefusCP=Data del rebuig
DateCancelCP=Data de l'anul·lació
DefineEventUserCP=Assignar permís excepcional a un usuari
addEventToUserCP=Assignar aquest permís
MotifCP=Motiu
UserCP=Usuari
ErrorAddEventToUserCP=S'ha produït un error en l'assignació del permís excepcional.
AddEventToUserOkCP=S'ha afegit el permís excepcional.
MenuLogCP=Veure els logs de vacances
LogCP=Logs d'actualitzacions de vacances
ActionByCP=Realitzat per
UserUpdateCP=Per a l'usuari
ActionTypeCP=Tipus
PrevSoldeCP=Saldo anterior
NewSoldeCP=Nou saldo
alreadyCPexist=Ja s'ha efectuat una petició de vacances per a aquest període.
UserName=Nom Cognoms
Employee=Empleat
FirstDayOfHoliday=Primer dia lliure
LastDayOfHoliday=Últim dí lliure
Morning=Matí
Afternoon=Vesprada
HolidaysMonthlyUpdate=Actualització mensual
ManualUpdate=Actualització manual
## Configuration du Module ##
ConfCP=Configuració del mòdul Vacacions
DescOptionCP=Descripció de l'opció
ValueOptionCP=Valor
GroupToValidateCP=Grup amb possibilitat d'aprovar les vacances
ConfirmConfigCP=Validar la configuració
LastUpdateCP=Darrera actualització automàtica de vacances
UpdateConfCPOK=Actualització efectuada correctament.
ErrorUpdateConfCP=S'ha produït un error durant l'actualització, torne a provar.
AddCPforUsers=Afegiu els saldos de vacances dels usuaris <a href="../define_holiday.php" style="font-weight: normal; color: red; text-decoration: underline;">fent clic aquí</a>.
DelayForSubmitCP=Antelació mínima per sol·licitar vacances
AlertValidatorDelayCP=Advertir a l'usuari validador si la petició no respecta el límit previst
AlertValidorSoldeCP=Advertir a l'usuari validador si l'usuari demana vacances superiors al seu saldo
nbUserCP=Nombre d'usuaris presos en compte en el mòdul vacances
nbHolidayDeductedCP=Nombre de dies retribuïts a deduir per dia de vacances
nbHolidayEveryMonthCP=Nombre de vacances afegides per mes
Module27130Name=Gestió de les vacances
TitleOptionMainCP=Ajustaments principals de vacances
TitleOptionEventCP=Ajustaments de vacances enllaçats a esdeveniments
ValidEventCP=Validar
UpdateEventCP=Actualitzar els esdeveniments
CreateEventCP=Crear
NameEventCP=Nom de l'esdeveniment
OkCreateEventCP=S'ha afegit l'esdeveniment correctament.
ErrorCreateEventCP=Error en la creació de l'esdeveniment.
UpdateEventOkCP=S'ha actualitzat l'esdeveniment correctament.
ErrorUpdateEventCP=Error en l'actualització de l'esdeveniment.
DeleteEventCP=Eliminar l'esdeveniment
DeleteEventOkCP=S'ha eliminat l'esdeveniment.
ErrorDeleteEventCP=Error en l'eliminació de l'esdeveniment.
TitleDeleteEventCP=Eliminar un permís excepcional
TitleCreateEventCP=Crear un permís excepcional
TitleUpdateEventCP=Modificar o eliminar un permís excepcional
DeleteEventOptionCP=Eliminar
UpdateEventOptionCP=Actualitzar
ErrorMailNotSend=S'ha produït un error en l'enviament del correu electrònic:
NoCPforMonth=Sense vacances aquest mes.
Jours=dies
nbJours=Número de dies
TitleAdminCP=Configuració de les vacances
#Messages
Hello=Hola
HolidaysToValidate=Dies retribuïts a validar
HolidaysToValidateBody=A continuació trobareu una sol·licitud de dies retribuïts per validar
HolidaysToValidateDelay=Aquesta sol·licitud de dies retribuïts tindrà lloc en un termini de menys de %s dies.
HolidaysToValidateAlertSolde=L'usuari que ha realitzat la sol·licitud de dies retribuïts no disposa de suficients dies disponibles.
HolidaysValidated=Dies retribuïts validats
HolidaysValidatedBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat validada.
HolidaysRefused=Dies retribuïts denegats
HolidaysRefusedBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat denegada pel següent motiu:
HolidaysCanceled=Dies retribuïts cancel·lats
HolidaysCanceledBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat cancel·lada.
Permission20001=Consultar/crear/modificar les seves vacances
Permission20002=Consultar/modificar totes les sol·licituds de permisos retribuïts
Permission20003=Eliminar les sol·licituds de permisos retribuïts
Permission20004=Definir els permisos retribuïts dels usuaris
Permission20005=Consultar l'historial de modificacions de permisos retribuïts
Permission20006=Accedir a l'informe mensual de permisos retribuïts

View File

@ -131,6 +131,20 @@ NoCPforMonth=No leave this month.
Jours=days Jours=days
nbJours=Number days nbJours=Number days
TitleAdminCP=Configuration of Holidays TitleAdminCP=Configuration of Holidays
#Messages
Hello=Hello
HolidaysToValidate=Validate holidays
HolidaysToValidateBody=Below is a request for holidays to validate
HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days.
HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days.
HolidaysValidated=Validated holidays
HolidaysValidatedBody=Your request for holidays for %s to %s has been validated.
HolidaysRefused=Denied holidays
HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason :
HolidaysCanceled=Canceled holidays
HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled.
Permission20001=Read/create/modify their holidays Permission20001=Read/create/modify their holidays
Permission20002=Read/modify all requests of holidays Permission20002=Read/modify all requests of holidays
Permission20003=Delete their holidays requests Permission20003=Delete their holidays requests

View File

@ -646,8 +646,8 @@ Permission1002=Crear/modificar stocks
Permission1003=Eliminar stocks Permission1003=Eliminar stocks
Permission1004=Consultar movimientos de stock Permission1004=Consultar movimientos de stock
Permission1005=Crear/modificar movimientos de stock Permission1005=Crear/modificar movimientos de stock
Permission1101=Consultar ordenes de envío Permission1101=Consultar órdenes de envío
Permission1102=Crear/modificar ordenes de envío Permission1102=Crear/modificar órdenes de envío
Permission1104=Validar orden de envío Permission1104=Validar orden de envío
Permission1109=Eliminar orden de envío Permission1109=Eliminar orden de envío
Permission1181=Consultar proveedores Permission1181=Consultar proveedores

View File

@ -132,6 +132,20 @@ NoCPforMonth=Sin vacaciones este mes.
Jours=días Jours=días
nbJours=Número de días nbJours=Número de días
TitleAdminCP=Configuración de las vacaciones TitleAdminCP=Configuración de las vacaciones
#Messages
Hello=Hola
HolidaysToValidate=Días retribuidos a validar
HolidaysToValidateBody=A continuación encontrará una solicitud de días retribuidos para validar
HolidaysToValidateDelay=Esta solicitud de días retribuidos tendrá lugar en un plazo de menos de %s días.
HolidaysToValidateAlertSolde=El usuario que ha realizado la solicitud de días retribuidos no dispone de suficientes días disponibles.
HolidaysValidated=Días retribuidos validados
HolidaysValidatedBody=Su solicitud de días retribuidos desde el %s al %s ha sido validada.
HolidaysRefused=Días retribuidos denegados
HolidaysRefusedBody=Su solicitud de días retribuidos desde el %s al %s ha sido denegada por el siguiente motivo :
HolidaysCanceled=Días retribuidos cancelados
HolidaysCanceledBody=Su solicitud de días retribuidos desde el %s al %s ha sido cancelada.
Permission20001=Consultar/crear/modificar sus vacaciones Permission20001=Consultar/crear/modificar sus vacaciones
Permission20002=Consultar/modificar todas las solicitudes de permisos retribuídos Permission20002=Consultar/modificar todas las solicitudes de permisos retribuídos
Permission20003=Eliminar las solicitudes de permisos retribuídos Permission20003=Eliminar las solicitudes de permisos retribuídos

View File

@ -9,7 +9,7 @@ StandingOrderToProcess=A procesar
StandingOrderProcessed=Procesados StandingOrderProcessed=Procesados
Withdrawals=Reintegros Withdrawals=Reintegros
Withdrawal=Reintegro Withdrawal=Reintegro
WithdrawalsReceipts=Ordenes domiciliadas WithdrawalsReceipts=Órdenes domiciliadas
WithdrawalReceipt=Orden domiciliación WithdrawalReceipt=Orden domiciliación
WithdrawalReceiptShort=Orden WithdrawalReceiptShort=Orden
LastWithdrawalReceipts=Las %s últimas órdenes de domiciliación LastWithdrawalReceipts=Las %s últimas órdenes de domiciliación

View File

@ -130,6 +130,20 @@ NoCPforMonth=Aucun congé ce mois-ci.
Jours=jours Jours=jours
nbJours=Nombre jours nbJours=Nombre jours
TitleAdminCP=Configuration des Congés TitleAdminCP=Configuration des Congés
#Messages
Hello=Bonjour
HolidaysToValidate=Congés payés à valider
HolidaysToValidateBody=Veuillez trouver ci-dessous une demande de congés payés à valider.
HolidaysToValidateDelay=Cette demande de congés payés à été effectué dans un délai de moins de %s jours avant ceux-ci.
HolidaysToValidateAlertSolde=L'utilisateur ayant fait cette demande de congés payés n'a pas le solde requis.
HolidaysValidated=Congés payés validée
HolidaysValidatedBody=Votre demande de congés payés du %s au %s vient d'être validée!
HolidaysRefused=Congés payés refusée
HolidaysRefusedBody=Votre demande de congés payés %s à %s vient d'être refusée pour le motif suivant :
HolidaysCanceled=Congés payés annulée
HolidaysCanceledBody=Votre demande de congés %s à %s va été annulée.
Permission20001=Lire / Créer / modifier ses congès Permission20001=Lire / Créer / modifier ses congès
Permission20002=Lire / Modifier toutes les demandes de congés payés Permission20002=Lire / Modifier toutes les demandes de congés payés
Permission20003=Supprimer des demandes de congés payés Permission20003=Supprimer des demandes de congés payés

View File

@ -157,7 +157,7 @@ else
$form = new Form($db); $form = new Form($db);
if (empty($mode) || $mode == 1) if (empty($mode) || $mode == 1)
{ {
$arrayresult=$form->select_produits_do("",$htmlname,$type,"",$pricelevel,$searchkey,$status,2,$outjson); $arrayresult=$form->select_produits_do("",$htmlname,$type,"",$price_level,$searchkey,$status,2,$outjson);
} }
elseif ($mode == 2) elseif ($mode == 2)
{ {

View File

@ -431,7 +431,7 @@ class Product extends CommonObject
$this->ref = dol_string_nospecial(trim($this->ref)); $this->ref = dol_string_nospecial(trim($this->ref));
$this->libelle = trim($this->libelle); $this->libelle = trim($this->libelle);
$this->description = trim($this->description); $this->description = trim($this->description);
$this->note = trim($this->note); $this->note = (isset($this->note)? trim($this->note):"null");
$this->weight = price2num($this->weight); $this->weight = price2num($this->weight);
$this->weight_units = trim($this->weight_units); $this->weight_units = trim($this->weight_units);
$this->length = price2num($this->length); $this->length = price2num($this->length);

View File

@ -35,6 +35,7 @@ class Project extends CommonObject
public $table_element = 'projet'; //!< Name of table without prefix where object is stored public $table_element = 'projet'; //!< Name of table without prefix where object is stored
public $table_element_line = 'projet_task'; public $table_element_line = 'projet_task';
public $fk_element = 'fk_projet'; public $fk_element = 'fk_projet';
protected $ismultientitymanaged = 1; // 0=No test on entity, 1=Test with field entity, 2=Test with link by societe
var $id; var $id;
var $ref; var $ref;
@ -51,6 +52,7 @@ class Project extends CommonObject
var $statuts_short; var $statuts_short;
var $statuts; var $statuts;
var $oldcopy; var $oldcopy;
/** /**
* Constructor * Constructor

View File

@ -223,6 +223,7 @@ foreach ($listofreferent as $key => $value)
$date=$element->date; $date=$element->date;
if (empty($date)) $date=$element->datep; if (empty($date)) $date=$element->datep;
if (empty($date)) $date=$element->date_contrat; if (empty($date)) $date=$element->date_contrat;
if (empty($date)) $date=$element->datev; //Fiche inter
print '<td align="center">'.dol_print_date($date,'day').'</td>'; print '<td align="center">'.dol_print_date($date,'day').'</td>';
// Third party // Third party

View File

@ -43,12 +43,6 @@ if ($id == '' && $ref == '' && ($action != "create" && $action != "add" && $acti
$mine = GETPOST('mode')=='mine' ? 1 : 0; $mine = GETPOST('mode')=='mine' ? 1 : 0;
//if (! $user->rights->projet->all->lire) $mine=1; // Special for projects //if (! $user->rights->projet->all->lire) $mine=1; // Special for projects
// Security check
$socid=0;
if ($user->societe_id > 0) $socid=$user->societe_id;
$result = restrictedArea($user, 'projet', $id);
// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
$hookmanager=new HookManager($db); $hookmanager=new HookManager($db);
@ -61,6 +55,11 @@ if ($object->id > 0)
$object->fetch_thirdparty(); $object->fetch_thirdparty();
} }
// Security check
$socid=0;
if ($user->societe_id > 0) $socid=$user->societe_id;
$result = restrictedArea($user, 'projet', $object->id);
$date_start=dol_mktime(0,0,0,GETPOST('projectmonth','int'),GETPOST('projectday','int'),GETPOST('projectyear','int')); $date_start=dol_mktime(0,0,0,GETPOST('projectmonth','int'),GETPOST('projectday','int'),GETPOST('projectyear','int'));
$date_end=dol_mktime(0,0,0,GETPOST('projectendmonth','int'),GETPOST('projectendday','int'),GETPOST('projectendyear','int'));; $date_end=dol_mktime(0,0,0,GETPOST('projectendmonth','int'),GETPOST('projectendday','int'),GETPOST('projectendyear','int'));;
@ -720,10 +719,13 @@ else
print '</td><td valign="top" width="50%">'; print '</td><td valign="top" width="50%">';
// List of actions on element if (!empty($object->id))
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; {
$formactions=new FormActions($db); // List of actions on element
$somethingshown=$formactions->showactions($object,'project',$socid); include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
$formactions=new FormActions($db);
$somethingshown=$formactions->showactions($object,'project',$socid);
}
print '</td></tr></table>'; print '</td></tr></table>';
} }

View File

@ -326,7 +326,7 @@ class FilesLibTest extends PHPUnit_Framework_TestCase
// Again to test with overwriting=1 // Again to test with overwriting=1
$result=dol_copy($file, $conf->admin->dir_temp.'/file.csv',0,1); $result=dol_copy($file, $conf->admin->dir_temp.'/file.csv',0,1);
print __METHOD__." result=".$result."\n"; print __METHOD__." result=".$result."\n";
$this->assertGreaterThanOrEqual(1,$result); // Should be 1 $this->assertGreaterThanOrEqual(1,$result,'copy destination already exists, overwrite'); // Should be 1
// Again to test with overwriting=1 // Again to test with overwriting=1
$result=dol_move($conf->admin->dir_temp.'/file.csv',$conf->admin->dir_temp.'/file2.csv',0,1); $result=dol_move($conf->admin->dir_temp.'/file.csv',$conf->admin->dir_temp.'/file2.csv',0,1);
@ -340,7 +340,17 @@ class FilesLibTest extends PHPUnit_Framework_TestCase
// Again to test no erreor when deleteing a non existing file // Again to test no erreor when deleteing a non existing file
$result=dol_delete_file($conf->admin->dir_temp.'/file2.csv'); $result=dol_delete_file($conf->admin->dir_temp.'/file2.csv');
print __METHOD__." result=".$result."\n"; print __METHOD__." result=".$result."\n";
$this->assertTrue($result); $this->assertTrue($result,'delete file that does not exists');
// Test copy with special char / delete with blob
$result=dol_copy($file, $conf->admin->dir_temp.'/file with [x] and é.csv',0,1);
print __METHOD__." result=".$result."\n";
$this->assertGreaterThanOrEqual(1,$result,'copy file with special char, overwrite'); // Should be 1
// Try to delete using a glob criteria
$result=dol_delete_file($conf->admin->dir_temp.'/file with [x]*é.csv');
print __METHOD__." result=".$result."\n";
$this->assertTrue($result,'delete file using glob criteria');
} }
/** /**
@ -377,4 +387,4 @@ class FilesLibTest extends PHPUnit_Framework_TestCase
$this->assertEquals(0,count($result)); $this->assertEquals(0,count($result));
} }
} }
?> ?>