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 *****
- 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
- Fix: translations and BILL_SUPPLIER_BUILDDOC trigger
- 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: 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 #787 ] Invoice supplier box incorrect tooltip when delay on payment
- 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 #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 #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 #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 *****

View File

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

View File

@ -2701,10 +2701,21 @@ class Facture extends CommonInvoice
{
$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 .= ' (fk_facture, amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib)';
$sql .= ' VALUES ('.$this->id;
$sql .= ",'".price2num($this->total_ttc)."'";
$sql .= ",'".price2num($resteapayer)."'";
$sql .= ",".$this->db->idate($now).",".$user->id;
$sql .= ",'".$soc->bank_account->code_banque."'";
$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 '<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
print '<tr><td>'.$langs->trans('Status').'</td>';
print '<td align="left" colspan="3">'.($object->getLibStatut(4,$totalpaye)).'</td></tr>';

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -26,6 +26,7 @@
require '../bank/pre.inc.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';
$langs->load("withdrawals");
@ -56,6 +57,7 @@ if ($sortorder == "") $sortorder="DESC";
if ($sortfield == "") $sortfield="p.datec";
$rej = new RejetPrelevement($db, $user);
$ligne = new LignePrelevement($db);
/*
* Liste des factures
@ -84,7 +86,7 @@ if ($result)
print"\n<!-- debut table -->\n";
print '<table class="noborder" width="100%" cellspacing="0" cellpadding="4">';
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("Reason"),"rejets.php","pr.motif","",$urladd);
print '</tr>';
@ -98,7 +100,7 @@ if ($result)
$obj = $db->fetch_object($result);
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 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 .= ", fax='".$this->db->escape($this->fax)."'";
$sql .= ", email='".$this->db->escape($this->email)."'";
$sql .= ", note='".$this->db->escape($this->note)."'";
$sql .= ", phone = '".$this->db->escape($this->phone_pro)."'";
$sql .= ", phone_perso = '".$this->db->escape($this->phone_perso)."'";
$sql .= ", phone_mobile = '".$this->db->escape($this->phone_mobile)."'";
$sql .= ", jabberid = '".$this->db->escape($this->jabberid)."'";
$sql .= ", note='".(isset($this->note)?"'".$this->db->escape($this->note)."'":"null")."'";
$sql .= ", phone = '".(isset($this->phone_pro)?"'".$this->db->escape($this->phone_pro)."'":"null")."'";
$sql .= ", phone_perso = '".(isset($this->phone_perso)?"'".$this->db->escape($this->phone_perso)."'":"null")."'";
$sql .= ", phone_mobile = '".(isset($this->phone_mobile)?"'".$this->db->escape($this->phone_mobile)."'":"null")."'";
$sql .= ", jabberid = '".(isset($this->jabberid)?"'".$this->db->escape($this->jabberid)."'":"null")."'";
$sql .= ", priv = '".$this->priv."'";
$sql .= ", fk_user_modif=".($user->id > 0 ? "'".$user->id."'":"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);
$line = new ContratLigne($this->db);
$line->id = $objp->rowid;
$line->id = $objp->rowid;
$line->fk_contrat = $objp->fk_contrat;
$line->libelle = $objp->description;
$line->desc = $objp->description;
$line->qty = $objp->qty;
$line->statut = $objp->statut;
$line->ref = $objp->ref;
$line->statut = $objp->statut;
$line->ref = (isset($objp->ref)?$objp->ref:NULL);
$line->tva_tx = $objp->tva_tx;
$line->localtax1_tx = $objp->localtax1_tx;
$line->localtax2_tx = $objp->localtax2_tx;
$line->subprice = $objp->subprice;
$line->remise_percent = $objp->remise_percent;
$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_tva = $objp->total_tva;
$line->total_localtax1= $objp->total_localtax1;

View File

@ -938,7 +938,7 @@ class DoliDBMysqli
*
* @param string $table Name of table
* @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="")
{

View File

@ -1169,7 +1169,7 @@ class DoliDBPgsql
*
* @param string $table Name of table
* @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="")
{

View File

@ -751,12 +751,14 @@ function dol_delete_file($file,$disableglob=0,$nophperrors=0,$nohook=0,$object=n
{
$error=0;
//print "x".$file." ".$disableglob;
//print "x".$file." ".$disableglob;exit;
$ok=true;
$file_osencoded=dol_osencode($file); // New filename encoded in OS filesystem encoding charset
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
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)
{
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
}
}

View File

@ -48,7 +48,7 @@ function print_eldy_menu($db,$atarget,$type_user)
// Home
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "home")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "home")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -76,7 +76,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("suppliers");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "companies")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "companies")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -110,14 +110,14 @@ function print_eldy_menu($db,$atarget,$type_user)
}
// Products-Services
$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);
if ($showmode)
{
$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);
if ($showmode)
{
$langs->load("products");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "products")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "products")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -167,7 +167,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("commercial");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "commercial")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "commercial")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -209,7 +209,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("compta");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "accountancy")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "accountancy")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -252,7 +252,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("banks");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "bank")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "bank")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -294,7 +294,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("projects");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "project")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "project")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -336,7 +336,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("other");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "tools")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "tools")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -378,7 +378,7 @@ function print_eldy_menu($db,$atarget,$type_user)
$langs->load("shop");
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "shop")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "shop")
{
$classname='class="tmenusel"'; $_SESSION['idmenu']='';
}
@ -406,7 +406,7 @@ function print_eldy_menu($db,$atarget,$type_user)
if ($showmode)
{
$classname="";
if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "members")
if (isset($_SESSION["mainmenu"]) && $_SESSION["mainmenu"] == "members")
{
$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']);
$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']))
{
$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
*
* @param string $type_user 0=We need backoffice menu, 1=We need frontoffice menu
* @param array &$menuentry Array for menu entry
* @param array &$listofmodulesforexternal Array with list of modules allowed to external users
* @return int 0=Hide, 1=Show, 2=Show gray
*/
function dol_eldy_showmenu($type_user, &$menuentry, &$listofmodulesforexternal)
{
//print 'type_user='.$type_user.' module='.$menuentry['module'].' enabled='.$menuentry['enabled'].' perms='.$menuentry['perms'];
//print 'ok='.in_array($menuentry['module'], $listofmodulesforexternal);
if (empty($menuentry['enabled'])) return 0; // Entry disabled by condition
if ($type_user && $menuentry['module'])
{
$tmploops=explode('|',$menuentry['module']);
$found=0;
foreach($tmploops as $tmploop)
{
if (in_array($tmploop, $listofmodulesforexternal)) {
$found++; break;
}
}
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'] && ! 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
return 1;
/**
* 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 array &$menuentry Array for menu entry
* @param array &$listofmodulesforexternal Array with list of modules allowed to external users
* @return int 0=Hide, 1=Show, 2=Show gray
*/
function dol_eldy_showmenu($type_user, &$menuentry, &$listofmodulesforexternal)
{
//print 'type_user='.$type_user.' module='.$menuentry['module'].' enabled='.$menuentry['enabled'].' perms='.$menuentry['perms'];
//print 'ok='.in_array($menuentry['module'], $listofmodulesforexternal);
if (empty($menuentry['enabled'])) return 0; // Entry disabled by condition
if ($type_user && $menuentry['module'])
{
$tmploops=explode('|',$menuentry['module']);
$found=0;
foreach($tmploops as $tmploop)
{
if (in_array($tmploop, $listofmodulesforexternal)) {
$found++; break;
}
}
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'] && ! 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
return 1;
}
?>

View File

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

View File

@ -355,7 +355,7 @@ class modSociete extends DolibarrModules
$this->import_label[$r]='ImportDataset_company_2';
$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_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");
// Add extra fields
$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
$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(
'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'),

View File

@ -43,6 +43,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode
var $prefixcustomer='CU';
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_null = 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 size.val('').attr('disabled','disabled');
}
init_typeoffields('');
init_typeoffields('<?php echo GETPOST('type'); ?>');
jQuery("#type").change(function() {
init_typeoffields($(this).val());
});

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2011 Dimitri Mouillard <dmouillard@teclib.com>
* Copyright (C) 2012 Laurent Destailleur <eldy@users.sourceforge.net>
* 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
* it under the terms of the GNU General Public License as published by
@ -296,7 +297,7 @@ if ($action == 'confirm_send')
// Content
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\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 = $delayForRequest * (60*60*24);
@ -309,7 +310,7 @@ if ($action == 'confirm_send')
if($cp->date_debut < $nextMonth)
{
$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))
{
$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
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\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("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n";
$message.= "\n";
@ -485,9 +486,9 @@ if ($action == 'confirm_refuse')
// Content
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\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.= $_POST['detail_refuse']."\n\n";
$message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n";
$message.= $langs->transnoentities("HolidaysRefusedBody", dol_print_date($cp->date_debut,'day'), dol_print_date($cp->date_fin,'day'))."\n";
$message.= GETPOST('detail_refuse','alpha')."\n\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.= "\n";
@ -562,7 +563,7 @@ if ($action == 'confirm_cancel' && $_GET['confirm'] == 'yes')
// Content
$message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\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("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n";
$message.= "\n";

View File

@ -1017,7 +1017,7 @@ if ($step == 4 && $datatoimport)
}
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
{
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>';
}

View File

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

View File

@ -307,7 +307,7 @@ class Mail_mimeDecode extends PEAR
break;
case 'message/rfc822':
$obj = &new Mail_mimeDecode($body);
$obj = new Mail_mimeDecode($body);
$return->parts[] = $obj->decode(array('include_bodies' => $this->_include_bodies,
'decode_bodies' => $this->_decode_bodies,
'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
nbJours=Number days
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
Permission20002=Read/modify all requests of holidays
Permission20003=Delete their holidays requests

View File

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

View File

@ -132,6 +132,20 @@ NoCPforMonth=Sin vacaciones este mes.
Jours=días
nbJours=Número de días
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
Permission20002=Consultar/modificar todas 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
Withdrawals=Reintegros
Withdrawal=Reintegro
WithdrawalsReceipts=Ordenes domiciliadas
WithdrawalsReceipts=Órdenes domiciliadas
WithdrawalReceipt=Orden domiciliación
WithdrawalReceiptShort=Orden
LastWithdrawalReceipts=Las %s últimas órdenes de domiciliación

View File

@ -130,6 +130,20 @@ NoCPforMonth=Aucun congé ce mois-ci.
Jours=jours
nbJours=Nombre jours
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
Permission20002=Lire / Modifier toutes les 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);
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)
{

View File

@ -431,7 +431,7 @@ class Product extends CommonObject
$this->ref = dol_string_nospecial(trim($this->ref));
$this->libelle = trim($this->libelle);
$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_units = trim($this->weight_units);
$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_line = 'projet_task';
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 $ref;
@ -51,6 +52,7 @@ class Project extends CommonObject
var $statuts_short;
var $statuts;
var $oldcopy;
/**
* Constructor

View File

@ -223,6 +223,7 @@ foreach ($listofreferent as $key => $value)
$date=$element->date;
if (empty($date)) $date=$element->datep;
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>';
// Third party

View File

@ -43,12 +43,6 @@ if ($id == '' && $ref == '' && ($action != "create" && $action != "add" && $acti
$mine = GETPOST('mode')=='mine' ? 1 : 0;
//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
include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php';
$hookmanager=new HookManager($db);
@ -61,6 +55,11 @@ if ($object->id > 0)
$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_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%">';
// List of actions on element
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
$formactions=new FormActions($db);
$somethingshown=$formactions->showactions($object,'project',$socid);
if (!empty($object->id))
{
// List of actions on element
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>';
}

View File

@ -326,7 +326,7 @@ class FilesLibTest extends PHPUnit_Framework_TestCase
// Again to test with overwriting=1
$result=dol_copy($file, $conf->admin->dir_temp.'/file.csv',0,1);
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
$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
$result=dol_delete_file($conf->admin->dir_temp.'/file2.csv');
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));
}
}
?>
?>