diff --git a/ChangeLog b/ChangeLog index 02e6d7ad382..3bae74a477a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -26,6 +26,8 @@ For users: For developers: - New: Add webservice to get or create a product, service. - New: Add webservice to get a user. +- New: Add hooks to change way of showing/editing lines into dictionnaries. +- New: Add webservice to get or create a prodcut or service. - New: Log module outputs can be setup with "or" rule (not only "xor"). - New: Add FirePHP output for logging module. - Qual: Data structure for supplier prices is simpler. @@ -112,6 +114,9 @@ For users: - Fix: Numbering module for invoices use same number for invoice and credit note if mask is same. - Fix: Debug and clean withdraw module. +- Fix: Allow access permission for point of sale module. +- Fix: Permissions issues with suppliers. +- Fix: Admin dict data is showing with active language For developers: - New: External modules can add tabs on agenda views. diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 88cce17f223..71a4c7169ab 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2010-2011 Juanjo Menent * Copyright (C) 2011 Philippe Grand + * Copyright (C) 2011 Remy Younes * * 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 @@ -35,12 +36,12 @@ $langs->load("other"); $langs->load("admin"); $langs->load("companies"); +$action=GETPOST('action')?GETPOST('action'):'view'; + if (!$user->admin) accessforbidden(); $acts[0] = "activate"; $acts[1] = "disable"; -//$actl[0] = $langs->trans("Activate"); -//$actl[1] = $langs->trans("Disable"); $actl[0] = img_picto($langs->trans("Disabled"),'switch_off'); $actl[1] = img_picto($langs->trans("Activated"),'switch_on'); @@ -56,14 +57,18 @@ $offset = $listlimit * $page ; $pageprev = $page - 1; $pagenext = $page + 1; +// 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); +$hookmanager->callHooks(array('admin')); -// Cette page est une page d'edition generique des dictionnaires de donnees -// Mettre ici tous les caracteristiques des dictionnaires +// Thi page is a generic page to edit dictionnaries +// Put here delacaration of dictionnaries properties -// Ordres d'affichage des dictionnaires (0 pour espace) +// Sort order to show dictionnary (0 is space). All other dictionnaries (added by modules) will be at end of this. $taborder=array(9,0,4,3,2,0,1,8,19,16,0,5,11,0,6,0,10,12,13,0,14,0,7,17,0,22,20,18,21,0,15); -// Nom des tables des dictionnaires +// Name of SQL tables of dictionnaries $tabname[1] = MAIN_DB_PREFIX."c_forme_juridique"; $tabname[2] = MAIN_DB_PREFIX."c_departements"; $tabname[3] = MAIN_DB_PREFIX."c_regions"; @@ -595,7 +600,7 @@ if ($_GET["id"]) $fieldlist=explode(',',$tabfield[$_GET["id"]]); - print '
'; + print ''; print ''; print ''; @@ -615,6 +620,7 @@ if ($_GET["id"]) // Determine le nom du champ par rapport aux noms possibles // dans les dictionnaires de donnees $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut + $valuetoshow=$langs->trans($valuetoshow); // try to translate if ($fieldlist[$field]=='source') { $valuetoshow=$langs->trans("Contact"); } if ($fieldlist[$field]=='price') { $valuetoshow=$langs->trans("PriceUHT"); } if ($fieldlist[$field]=='taux') { $valuetoshow=$langs->trans("Rate"); } @@ -663,8 +669,13 @@ if ($_GET["id"]) } } + + $tmpaction = 'create'; + $parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$_GET["id"]]); + $reshook=$hookmanager->executeHooks('createDictionaryFieldlist',$parameters, $obj, $tmpaction); // Note that $action and $object may have been modified by some hooks + $error=$hookmanager->error; $errors=$hookmanager->errors; - fieldList($fieldlist,$obj); + if (empty($reshook)) fieldList($fieldlist,$obj); print ''; print ""; @@ -703,6 +714,7 @@ if ($_GET["id"]) // dans les dictionnaires de donnees $showfield=1; // Par defaut $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut + $valuetoshow=$langs->trans($valuetoshow); // try to translate if ($fieldlist[$field]=='source') { $valuetoshow=$langs->trans("Contact"); } if ($fieldlist[$field]=='price') { $valuetoshow=$langs->trans("PriceUHT"); } if ($fieldlist[$field]=='taux') { $valuetoshow=$langs->trans("Rate"); } @@ -739,113 +751,127 @@ if ($_GET["id"]) $var=!$var; //print_r($obj); print ""; - if ($_GET["action"] == 'modify' && ($_GET["rowid"] == ($obj->rowid?$obj->rowid:$obj->code))) + + if ($action == 'edit' && ($_GET["rowid"] == ($obj->rowid?$obj->rowid:$obj->code))) { print ''; print ''; print ''; print ''; print ''; - fieldList($fieldlist,$obj); + + $tmpaction='edit'; + $parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$_GET["id"]]); + $reshook=$hookmanager->executeHooks('editDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks + $error=$hookmanager->error; $errors=$hookmanager->errors; + + if (empty($reshook)) fieldList($fieldlist,$obj); + print ''; } else { - foreach ($fieldlist as $field => $value) + $tmpaction = 'view'; + $parameters=array('fieldlist'=>$fieldlist, 'tabname'=>$tabname[$_GET["id"]]); + $reshook=$hookmanager->executeHooks('viewDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks + + $error=$hookmanager->error; $errors=$hookmanager->errors; + + if (empty($reshook)) { - $showfield=1; - $valuetoshow=$obj->$fieldlist[$field]; - if ($valuetoshow=='all') { - $valuetoshow=$langs->trans('All'); - } - else if ($fieldlist[$field]=='pays') { - if (empty($obj->pays_code)) - { - $valuetoshow='-'; + foreach ($fieldlist as $field => $value) + { + $showfield=1; + $valuetoshow=$obj->$fieldlist[$field]; + if ($valuetoshow=='all') { + $valuetoshow=$langs->trans('All'); } - else - { - $key=$langs->trans("Country".strtoupper($obj->pays_code)); - $valuetoshow=($key != "Country".strtoupper($obj->pays_code))?$obj->pays_code." - ".$key:$obj->pays; + else if ($fieldlist[$field]=='pays') { + if (empty($obj->pays_code)) + { + $valuetoshow='-'; + } + else + { + $key=$langs->trans("Country".strtoupper($obj->pays_code)); + $valuetoshow=($key != "Country".strtoupper($obj->pays_code))?$obj->pays_code." - ".$key:$obj->pays; + } } + else if ($fieldlist[$field]=='recuperableonly' || $fieldlist[$field]=='fdm') { + $valuetoshow=yn($valuetoshow); + } + else if ($fieldlist[$field]=='price') { + $valuetoshow=price($valuetoshow); + } + else if ($fieldlist[$field]=='libelle_facture') { + $langs->load("bills"); + $key=$langs->trans("PaymentCondition".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "PaymentCondition".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=nl2br($valuetoshow); + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_pays') { + $key=$langs->trans("Country".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='label' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_availability') { + $langs->load("propal"); + $key=$langs->trans("AvailabilityType".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_actioncomm') { + $key=$langs->trans("Action".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_currencies') { + $key=$langs->trans("Currency".strtoupper($obj->code_iso)); + $valuetoshow=($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_typent') { + $key=$langs->trans(strtoupper($obj->code)); + $valuetoshow=($key != strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_prospectlevel') { + $key=$langs->trans(strtoupper($obj->code)); + $valuetoshow=($key != strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_civilite') { + $key=$langs->trans("Civility".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "Civility".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_type_contact') { + $key=$langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_payment_term') { + $langs->load("bills"); + $key=$langs->trans("PaymentConditionShort".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_paiement') { + $langs->load("bills"); + $key=$langs->trans("PaymentType".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "PaymentType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='label' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_input_reason') { + $key=$langs->trans("DemandReasonType".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "DemandReasonType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_input_method') { + $langs->load("orders"); + $key=$langs->trans($obj->code); + $valuetoshow=($obj->code && $key != $obj->code)?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_shipment_mode') { + $langs->load("sendings"); + $key=$langs->trans("SendingMethod".strtoupper($obj->code)); + $valuetoshow=($obj->code && $key != "SendingMethod".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + } + else if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='pays_id') { + $showfield=0; + } + if ($showfield) print ''; } - else if ($fieldlist[$field]=='recuperableonly' || $fieldlist[$field]=='fdm') { - $valuetoshow=yn($valuetoshow); - } - else if ($fieldlist[$field]=='price') { - $valuetoshow=price($valuetoshow); - } - else if ($fieldlist[$field]=='price') { - $valuetoshow=price($valuetoshow); - } - else if ($fieldlist[$field]=='libelle_facture') { - $langs->load("bills"); - $key=$langs->trans("PaymentCondition".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "PaymentCondition".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - $valuetoshow=nl2br($valuetoshow); - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_pays') { - $key=$langs->trans("Country".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='label' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_availability') { - $langs->load("propal"); - $key=$langs->trans("AvailabilityType".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_actioncomm') { - $key=$langs->trans("Action".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_currencies') { - $key=$langs->trans("Currency".strtoupper($obj->code_iso)); - $valuetoshow=($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_typent') { - $key=$langs->trans(strtoupper($obj->code)); - $valuetoshow=($key != strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_prospectlevel') { - $key=$langs->trans(strtoupper($obj->code)); - $valuetoshow=($key != strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_civilite') { - $key=$langs->trans("Civility".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "Civility".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_type_contact') { - $key=$langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_payment_term') { - $langs->load("bills"); - $key=$langs->trans("PaymentConditionShort".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_paiement') { - $langs->load("bills"); - $key=$langs->trans("PaymentType".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "PaymentType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='label' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_input_reason') { - $key=$langs->trans("DemandReasonType".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "DemandReasonType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_input_method') { - $langs->load("orders"); - $key=$langs->trans($obj->code); - $valuetoshow=($obj->code && $key != $obj->code)?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_shipment_mode') { - $langs->load("sendings"); - $key=$langs->trans("SendingMethod".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "SendingMethod".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; - } - else if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='pays_id') { - $showfield=0; - } - if ($showfield) print ''; } print '"; // Modify link - if ($iserasable) { - print ''; - } else { - print ''; - } + if ($iserasable) print ''; + else print ''; + // Delete link - if ($iserasable) { - print ''; - } else { - print ''; - } + if ($iserasable) print ''; + else print ''; + print "\n"; } $i++; @@ -915,7 +934,7 @@ else print ''; continue; } // For region page, we do not show the country input + if ($fieldlist[$field] == 'pays') { + if (in_array('region_id',$fieldlist)) { print ''; continue; } // For region page, we do not show the country input print ''; } elseif ($fieldlist[$field] == 'pays_id') { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f8ae5c17155..f031e575b67 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -293,19 +293,23 @@ class Form $obj = $this->db->fetch_object($resql); $countryArray[$i]['rowid'] = $obj->rowid; $countryArray[$i]['code_iso'] = $obj->code_iso; - $countryArray[$i]['label'] = ($obj->code_iso && $langs->trans("Country".$obj->code_iso)!="Country".$obj->code_iso?$langs->trans("Country".$obj->code_iso):($obj->label!='-'?$obj->label:'')); + $countryArray[$i]['label'] = ($obj->code_iso && $langs->transnoentitiesnoconv("Country".$obj->code_iso)!="Country".$obj->code_iso?$langs->transnoentitiesnoconv("Country".$obj->code_iso):($obj->label!='-'?$obj->label:'')); $label[$i] = $countryArray[$i]['label']; $i++; } array_multisort($label, SORT_ASC, $countryArray); - + foreach ($countryArray as $row) { - if ($selected && $selected != '-1' && ($selected == $row['rowid'] || $selected == $row['code_iso'] || $selected == $row['label']) ) { - $foundselected=true; + //print 'rr'.$selected.'-'.$row['label'].'-'.$row['code_iso'].'
'; + if ($selected && $selected != '-1' && ($selected == $row['rowid'] || $selected == $row['code_iso'] || $selected == $row['label']) ) + { + $foundselected=true; $out.= '
 '; print ' '.$valuetoshow.''.$valuetoshow.''; @@ -856,25 +882,18 @@ if ($_GET["id"]) if (isset($obj->code) && $obj->code == 'EF0') $iserasable=0; if ($obj->type && $obj->type == 'system') $iserasable=0; - if ($iserasable) { - print ''.$actl[$obj->active].''; - } else { - print $langs->trans("AlwaysActive"); - } + if ($iserasable) print ''.$actl[$obj->active].''; + else print $langs->trans("AlwaysActive"); print "rowid?$obj->rowid:$obj->code).'">'.img_edit().' rowid?$obj->rowid:$obj->code).'">'.img_edit().' '.img_delete().' '.img_delete().' 
'; if (! empty($tabcond[$i])) { - print ''.$langs->trans($tablib[$i]).''; + print ''.$langs->trans($tablib[$i]).''; } else { @@ -970,11 +989,10 @@ function fieldList($fieldlist,$obj='') foreach ($fieldlist as $field => $value) { - - if ($fieldlist[$field] == 'pays') { - if (in_array('region_id',$fieldlist)) { print '  '; - $html->select_pays($obj->pays,'pays'); + print $html->select_country(($obj->pays_code?$obj->pays_code:$obj->pays),'pays'); print '