diff --git a/htdocs/categories/categorie.php b/htdocs/categories/categorie.php index 11f75c4f3e5b1575d67eff0b1f83d1eb94c0cbb0..294c11ca7b5e583b4aba72add049753510392b40 100644 --- a/htdocs/categories/categorie.php +++ b/htdocs/categories/categorie.php @@ -46,7 +46,7 @@ if ($_REQUEST["socid"]) else if ($_REQUEST["id"] || $_REQUEST["ref"]) { $type = 'produit'; - $objecttype = 'produit'; + $objecttype = 'produit|service'; $objectid = isset($_REQUEST["id"])?$_REQUEST["id"]:(isset($_REQUEST["ref"])?$_REQUEST["ref"]:''); $dbtablename = 'product'; $fieldid = isset($_REQUEST["ref"])?'ref':'rowid'; @@ -68,7 +68,7 @@ if ($_REQUEST["removecat"]) $object = new Societe($db); $result = $object->fetch($_REQUEST["socid"]); } - else if (($_REQUEST["id"] || $_REQUEST["ref"]) && $user->rights->produit->creer) + else if (($_REQUEST["id"] || $_REQUEST["ref"]) && ($user->rights->produit->creer || $user->rights->service->creer)) { $object = new Product($db); if ($_REQUEST["ref"]) $result = $object->fetch('',$_REQUEST["ref"]); @@ -87,7 +87,7 @@ if (isset($_REQUEST["catMere"]) && $_REQUEST["catMere"]>=0) $object = new Societe($db); $result = $object->fetch($_REQUEST["socid"]); } - else if (($_REQUEST["id"] || $_REQUEST["ref"]) && $user->rights->produit->creer) + else if (($_REQUEST["id"] || $_REQUEST["ref"]) && ($user->rights->produit->creer || $user->rights->service->creer)) { $object = new Product($db); if ($_REQUEST["ref"]) $result = $object->fetch('',$_REQUEST["ref"]); @@ -333,7 +333,7 @@ function formCategory($db,$object,$type,$typeid) $permission=0; if ($type == 'fournisseur') $permission=$user->rights->societe->creer; if ($type == 'societe') $permission=$user->rights->societe->creer; - if ($type == 'product') $permission=$user->rights->produit->creer; + if ($type == 'product') $permission=($user->rights->produit->creer || $user->rights->service->creer); if ($permission) { print "<a href= '".DOL_URL_ROOT."/categories/categorie.php?".$nameId."=".$object->id."&typeid=".$typeid."&removecat=".$cat->id."'>"; diff --git a/htdocs/comm/pre.inc.php b/htdocs/comm/pre.inc.php index 0d72f3232ddfea291cc265b72df24ddb5d7d9f13..efca3294bf82dc77cfbd2aa3c9dbbde8c3931a06 100644 --- a/htdocs/comm/pre.inc.php +++ b/htdocs/comm/pre.inc.php @@ -18,98 +18,98 @@ */ /** - \file htdocs/comm/pre.inc.php - \ingroup commercial - \brief Fichier de gestion du menu gauche de l'espace commercial - \version $Id$ -*/ + \file htdocs/comm/pre.inc.php + \ingroup commercial + \brief Fichier de gestion du menu gauche de l'espace commercial + \version $Id$ + */ require("../main.inc.php"); function llxHeader($head = '', $title='', $help_url='') { - global $user, $conf, $langs; - - $langs->load("companies"); - $langs->load("commercial"); - - top_menu($head, $langs->trans($title)); - - $menu = new Menu(); - - // Clients - $menu->add(DOL_URL_ROOT."/comm/clients.php", $langs->trans("Customers")); - if ($user->rights->societe->creer) - { - $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=c", $langs->trans("MenuNewCustomer")); - } - - $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=c", $langs->trans("Contacts")); - - - // Prospects - $menu->add(DOL_URL_ROOT."/comm/prospect/index.php", $langs->trans("Prospects")); - if ($user->rights->societe->creer) - { - $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=p", $langs->trans("MenuNewProspect")); - } - - $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=p", $langs->trans("Contacts")); - - - $menu->add(DOL_URL_ROOT."/comm/action/index.php", $langs->trans("Actions")); - - // Propal - if ($conf->propal->enabled && $user->rights->propale->lire) - { - $langs->load("propal"); - $menu->add(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=0", $langs->trans("PropalsDraft")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=1", $langs->trans("PropalsOpened")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal/stats/", $langs->trans("Statistics")); - } - - if ($conf->contrat->enabled && $user->rights->contrat->lire) - { - $langs->load("contracts"); - $menu->add(DOL_URL_ROOT."/contrat/index.php", $langs->trans("Contracts")); - } - - if ($conf->commande->enabled && $user->rights->commande->lire) - { - $langs->load("orders"); - $menu->add(DOL_URL_ROOT."/commande/index.php", $langs->trans("Orders")); - } - - if ($user->mailing->enabled && $user->rights->mailing->lire) - { - $langs->load("mails"); - $menu->add(DOL_URL_ROOT."/comm/mailing/", $langs->trans("EMailings")); - } - - if ($conf->ficheinter->enabled && $user->rights->ficheinter->lire) - { - $langs->load("interventions"); - $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); - } - - if (($conf->produit->enabled || $conf->service->enabled) && $user->rights->produit->lire) - { - $langs->load("products"); - $chaine=""; - if ($conf->produit->enabled) { $chaine.=$langs->trans("Products"); } - if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; } - if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } - $menu->add(DOL_URL_ROOT."/product/index.php", "$chaine"); - } - - if ($conf->projet->enabled && $user->rights->projet->lire) - { - $langs->load("projects"); - $menu->add(DOL_URL_ROOT."/projet/index.php", $langs->trans("Projects")); - } - - left_menu($menu->liste, $help_url); + global $user, $conf, $langs; + + $langs->load("companies"); + $langs->load("commercial"); + + top_menu($head, $langs->trans($title)); + + $menu = new Menu(); + + // Clients + $menu->add(DOL_URL_ROOT."/comm/clients.php", $langs->trans("Customers")); + if ($user->rights->societe->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=c", $langs->trans("MenuNewCustomer")); + } + + $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=c", $langs->trans("Contacts")); + + + // Prospects + $menu->add(DOL_URL_ROOT."/comm/prospect/index.php", $langs->trans("Prospects")); + if ($user->rights->societe->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=p", $langs->trans("MenuNewProspect")); + } + + $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=p", $langs->trans("Contacts")); + + + $menu->add(DOL_URL_ROOT."/comm/action/index.php", $langs->trans("Actions")); + + // Propal + if ($conf->propal->enabled && $user->rights->propale->lire) + { + $langs->load("propal"); + $menu->add(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=0", $langs->trans("PropalsDraft")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=1", $langs->trans("PropalsOpened")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal/stats/", $langs->trans("Statistics")); + } + + if ($conf->contrat->enabled && $user->rights->contrat->lire) + { + $langs->load("contracts"); + $menu->add(DOL_URL_ROOT."/contrat/index.php", $langs->trans("Contracts")); + } + + if ($conf->commande->enabled && $user->rights->commande->lire) + { + $langs->load("orders"); + $menu->add(DOL_URL_ROOT."/commande/index.php", $langs->trans("Orders")); + } + + if ($user->mailing->enabled && $user->rights->mailing->lire) + { + $langs->load("mails"); + $menu->add(DOL_URL_ROOT."/comm/mailing/", $langs->trans("EMailings")); + } + + if ($conf->ficheinter->enabled && $user->rights->ficheinter->lire) + { + $langs->load("interventions"); + $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); + } + + if (($conf->produit->enabled && $user->rights->produit->lire) || ($conf->service->enabled && $user->rights->service->lire)) + { + $langs->load("products"); + $chaine=""; + if ($conf->produit->enabled) { $chaine.=$langs->trans("Products"); } + if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; } + if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } + $menu->add(DOL_URL_ROOT."/product/index.php", "$chaine"); + } + + if ($conf->projet->enabled && $user->rights->projet->lire) + { + $langs->load("projects"); + $menu->add(DOL_URL_ROOT."/projet/index.php", $langs->trans("Projects")); + } + + left_menu($menu->liste, $help_url); } ?> diff --git a/htdocs/comm/propal/pre.inc.php b/htdocs/comm/propal/pre.inc.php index d8ffda73af12444fc69a2ef883f4eb0c2b00cef8..a8ce30107c2d448bc1a782c3c7042a007af7a3d5 100644 --- a/htdocs/comm/propal/pre.inc.php +++ b/htdocs/comm/propal/pre.inc.php @@ -22,88 +22,88 @@ */ /** - \file htdocs/comm/propal/pre.inc.php - \ingroup propale - \brief Fichier de gestion du menu gauche du module propale - \version $Revision$ -*/ + \file htdocs/comm/propal/pre.inc.php + \ingroup propale + \brief Fichier de gestion du menu gauche du module propale + \version $Revision$ + */ require("../../main.inc.php"); function llxHeader($head = "", $urlp = "") { - global $user, $conf, $langs; - - $langs->load("companies"); - - top_menu($head); - - $menu = new Menu(); - - // Clients - $menu->add(DOL_URL_ROOT."/comm/clients.php", $langs->trans("Customers")); - if ($user->rights->societe->creer) - { - $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=c", $langs->trans("MenuNewCustomer")); - } - $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=c", $langs->trans("Contacts")); - - // Prospects - $menu->add(DOL_URL_ROOT."/comm/prospect/prospects.php", $langs->trans("Prospects")); - if ($user->rights->societe->creer) - { - $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=p", $langs->trans("MenuNewProspect")); - } - $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=p", $langs->trans("Contacts")); - - - $menu->add(DOL_URL_ROOT."/comm/action/index.php", $langs->trans("Actions")); - - - if ($conf->propal->enabled && $user->rights->propale->lire) - { - $langs->load("propal"); - $menu->add(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=0", $langs->trans("PropalsDraft")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=1", $langs->trans("PropalsOpened")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal/stats/", $langs->trans("Statistics")); - } - - if ($conf->contrat->enabled) - { - $langs->load("contracts"); - $menu->add(DOL_URL_ROOT."/contrat/index.php", $langs->trans("Contracts")); - } - - if ($conf->commande->enabled ) - { - $langs->load("orders"); - $menu->add(DOL_URL_ROOT."/commande/index.php", $langs->trans("Orders")); - } - - if ($conf->ficheinter->enabled) - { - $langs->load("interventions"); - $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); - } - - if ($conf->produit->enabled || $conf->service->enabled) - { - $langs->load("products"); - $chaine=""; - if ($conf->produit->enabled) { $chaine.=$langs->trans("Products"); } - if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; } - if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } - $menu->add(DOL_URL_ROOT."/product/index.php", "$chaine"); - } - - if ($conf->projet->enabled ) - { - $langs->load("projects"); - $menu->add(DOL_URL_ROOT."/projet/index.php", $langs->trans("Projects")); + global $user, $conf, $langs; + + $langs->load("companies"); + + top_menu($head); + + $menu = new Menu(); + + // Clients + $menu->add(DOL_URL_ROOT."/comm/clients.php", $langs->trans("Customers")); + if ($user->rights->societe->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=c", $langs->trans("MenuNewCustomer")); + } + $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=c", $langs->trans("Contacts")); + + // Prospects + $menu->add(DOL_URL_ROOT."/comm/prospect/prospects.php", $langs->trans("Prospects")); + if ($user->rights->societe->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=p", $langs->trans("MenuNewProspect")); + } + $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=p", $langs->trans("Contacts")); + + + $menu->add(DOL_URL_ROOT."/comm/action/index.php", $langs->trans("Actions")); + + + if ($conf->propal->enabled && $user->rights->propale->lire) + { + $langs->load("propal"); + $menu->add(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=0", $langs->trans("PropalsDraft")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=1", $langs->trans("PropalsOpened")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal/stats/", $langs->trans("Statistics")); } - - left_menu($menu->liste); + + if ($conf->contrat->enabled) + { + $langs->load("contracts"); + $menu->add(DOL_URL_ROOT."/contrat/index.php", $langs->trans("Contracts")); + } + + if ($conf->commande->enabled ) + { + $langs->load("orders"); + $menu->add(DOL_URL_ROOT."/commande/index.php", $langs->trans("Orders")); + } + + if ($conf->ficheinter->enabled) + { + $langs->load("interventions"); + $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); + } + + if ($conf->produit->enabled || $conf->service->enabled) + { + $langs->load("products"); + $chaine=""; + if ($conf->produit->enabled) { $chaine.=$langs->trans("Products"); } + if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; } + if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } + $menu->add(DOL_URL_ROOT."/product/index.php", "$chaine"); + } + + if ($conf->projet->enabled ) + { + $langs->load("projects"); + $menu->add(DOL_URL_ROOT."/projet/index.php", $langs->trans("Projects")); + } + + left_menu($menu->liste); } diff --git a/htdocs/comm/propal/stats/pre.inc.php b/htdocs/comm/propal/stats/pre.inc.php index 9e93f2ea0c18016b41da35e130bd067190be3e2b..7d73113d906beefc363812904ac6deacd8416733 100644 --- a/htdocs/comm/propal/stats/pre.inc.php +++ b/htdocs/comm/propal/stats/pre.inc.php @@ -22,94 +22,94 @@ */ /** - \file htdocs/comm/propal/stats/pre.inc.php - \ingroup propale - \brief Fichier de gestion du menu gauche du module propale stats - \version $Revision$ -*/ + \file htdocs/comm/propal/stats/pre.inc.php + \ingroup propale + \brief Fichier de gestion du menu gauche du module propale stats + \version $Revision$ + */ require("../../../main.inc.php"); function llxHeader($head = "", $urlp = "") { - global $user, $conf, $langs; - - $langs->load("companies"); - - top_menu($head); - - $menu = new Menu(); - - // Clients - $menu->add(DOL_URL_ROOT."/comm/clients.php", $langs->trans("Customers")); - if ($user->rights->societe->creer) - { - $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=c", $langs->trans("MenuNewCustomer")); - } - $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=c", $langs->trans("Contacts")); - - // Prospects - $menu->add(DOL_URL_ROOT."/comm/prospect/prospects.php", $langs->trans("Prospects")); - if ($user->rights->societe->creer) - { - $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=p", $langs->trans("MenuNewProspect")); - } - $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=p", $langs->trans("Contacts")); - - - $menu->add(DOL_URL_ROOT."/comm/action/index.php", $langs->trans("Actions")); - - - if ($conf->propal->enabled && $user->rights->propale->lire) - { - $langs->load("propal"); - $menu->add(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=0", $langs->trans("PropalsDraft")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=1", $langs->trans("PropalsOpened")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort")); - $menu->add_submenu(DOL_URL_ROOT."/comm/propal/stats/", $langs->trans("Statistics")); - } - - if ($conf->contrat->enabled) - { - $langs->load("contracts"); - $menu->add(DOL_URL_ROOT."/contrat/index.php", $langs->trans("Contracts")); - } - - if ($conf->commande->enabled ) - { - $langs->load("orders"); - $menu->add(DOL_URL_ROOT."/commande/index.php", $langs->trans("Orders")); - } - - if ($user->rights->mailing->lire) - { - $langs->load("mails"); - $menu->add(DOL_URL_ROOT."/comm/mailing/", $langs->trans("EMailings")); - } - - if ($conf->ficheinter->enabled) - { - $langs->load("interventions"); - $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); - } - - if ($conf->produit->enabled || $conf->service->enabled) - { - $langs->load("products"); - $chaine=""; - if ($conf->produit->enabled) { $chaine.=$langs->trans("Products"); } - if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; } - if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } - $menu->add(DOL_URL_ROOT."/product/index.php", "$chaine"); - } - - if ($conf->projet->enabled ) - { - $langs->load("projects"); - $menu->add(DOL_URL_ROOT."/projet/index.php", $langs->trans("Projects")); + global $user, $conf, $langs; + + $langs->load("companies"); + + top_menu($head); + + $menu = new Menu(); + + // Clients + $menu->add(DOL_URL_ROOT."/comm/clients.php", $langs->trans("Customers")); + if ($user->rights->societe->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=c", $langs->trans("MenuNewCustomer")); + } + $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=c", $langs->trans("Contacts")); + + // Prospects + $menu->add(DOL_URL_ROOT."/comm/prospect/prospects.php", $langs->trans("Prospects")); + if ($user->rights->societe->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=p", $langs->trans("MenuNewProspect")); } - - left_menu($menu->liste); + $menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=p", $langs->trans("Contacts")); + + + $menu->add(DOL_URL_ROOT."/comm/action/index.php", $langs->trans("Actions")); + + + if ($conf->propal->enabled && $user->rights->propale->lire) + { + $langs->load("propal"); + $menu->add(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=0", $langs->trans("PropalsDraft")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=1", $langs->trans("PropalsOpened")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php?viewstatut=2,3,4", $langs->trans("PropalStatusClosedShort")); + $menu->add_submenu(DOL_URL_ROOT."/comm/propal/stats/", $langs->trans("Statistics")); + } + + if ($conf->contrat->enabled) + { + $langs->load("contracts"); + $menu->add(DOL_URL_ROOT."/contrat/index.php", $langs->trans("Contracts")); + } + + if ($conf->commande->enabled ) + { + $langs->load("orders"); + $menu->add(DOL_URL_ROOT."/commande/index.php", $langs->trans("Orders")); + } + + if ($user->rights->mailing->lire) + { + $langs->load("mails"); + $menu->add(DOL_URL_ROOT."/comm/mailing/", $langs->trans("EMailings")); + } + + if ($conf->ficheinter->enabled) + { + $langs->load("interventions"); + $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); + } + + if ($conf->produit->enabled || $conf->service->enabled) + { + $langs->load("products"); + $chaine=""; + if ($conf->produit->enabled) { $chaine.=$langs->trans("Products"); } + if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; } + if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } + $menu->add(DOL_URL_ROOT."/product/index.php", "$chaine"); + } + + if ($conf->projet->enabled ) + { + $langs->load("projects"); + $menu->add(DOL_URL_ROOT."/projet/index.php", $langs->trans("Projects")); + } + + left_menu($menu->liste); } ?> diff --git a/htdocs/docs/pre.inc.php b/htdocs/docs/pre.inc.php index f3b9b7cf72a649feeece8b06cf771acbea967761..efb2469e5b263e39de020c57898ae4a722912da7 100644 --- a/htdocs/docs/pre.inc.php +++ b/htdocs/docs/pre.inc.php @@ -62,7 +62,7 @@ function llxHeader($head = "", $title="", $help_url='') $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); } - if (($conf->produit->enabled || $conf->service->enabled) && $user->rights->produit->lire) + if (($conf->produit->enabled && $user->rights->produit->lire) || ($conf->service->enabled && $user->rights->service->lire)) { $langs->load("products"); $chaine=""; diff --git a/htdocs/document.php b/htdocs/document.php index 44abced1b35c1abea8eb0c30d387ad58857609fe..d2babbac6a93cedabcaa70b1d46fbe4efc559cc8 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -304,7 +304,8 @@ if ($modulepart) if ($modulepart == 'produit') { $user->getrights('produit'); - if ($user->rights->produit->lire || eregi('^specimen',$original_file)) + $user->getrights('service'); + if (($user->rights->produit->lire || $user->rights->service->lire) || eregi('^specimen',$original_file)) { $accessallowed=1; } diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 197c7e88ebd9a0c95af8bbb9410fdcced163ce15..5bb3b44a948bcec447341588357652c843d4681c 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -199,7 +199,7 @@ $userstatic = new User($db); // Ajout rubriques automatiques $rowspan=0; $sectionauto=array(); -if ($conf->produit->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'product', 'test'=>$conf->produit->enabled, 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } +if ($conf->produit->enabled || $conf->service->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'product', 'test'=>$conf->produit->enabled, 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } if ($conf->societe->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'company', 'test'=>$conf->societe->enabled, 'label'=>$langs->trans("ThirdParties"), 'desc'=>$langs->trans("ECMDocsByThirdParties")); } if ($conf->propal->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'propal', 'test'=>$conf->propal->enabled, 'label'=>$langs->trans("Prop"), 'desc'=>$langs->trans("ECMDocsByProposals")); } if ($conf->contrat->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'contract','test'=>$conf->contrat->enabled, 'label'=>$langs->trans("Contracts"), 'desc'=>$langs->trans("ECMDocsByContracts")); } diff --git a/htdocs/ecm/search.php b/htdocs/ecm/search.php index c1203a1c841dbb420fdfafc5c07948171d7599ef..3c020f9f00f22f7c6993d98099cf7d1023409535 100644 --- a/htdocs/ecm/search.php +++ b/htdocs/ecm/search.php @@ -104,7 +104,7 @@ $userstatic = new User($db); // Ajout rubriques automatiques $rowspan=0; $sectionauto=array(); -if ($conf->produit->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'product', 'test'=>$conf->produit->enabled, 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } +if ($conf->produit->enabled || $conf->service->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'product', 'test'=>$conf->produit->enabled, 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } if ($conf->societe->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'company', 'test'=>$conf->societe->enabled, 'label'=>$langs->trans("ThirdParties"), 'desc'=>$langs->trans("ECMDocsByThirdParties")); } if ($conf->propal->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'propal', 'test'=>$conf->propal->enabled, 'label'=>$langs->trans("Prop"), 'desc'=>$langs->trans("ECMDocsByProposals")); } if ($conf->contrat->enabled) { $rowspan++; $sectionauto[]=array('level'=>1, 'module'=>'contract','test'=>$conf->contrat->enabled, 'label'=>$langs->trans("Contracts"), 'desc'=>$langs->trans("ECMDocsByContracts")); } diff --git a/htdocs/expedition/fiche.php b/htdocs/expedition/fiche.php index 35c744c34bf3a9d1258f8fa042bfd07a1b9bd1ce..7e1f97a9e1d0ebfd350e0062e0703d0b0570a564 100644 --- a/htdocs/expedition/fiche.php +++ b/htdocs/expedition/fiche.php @@ -32,7 +32,7 @@ require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/html.formproduct.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/product.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/sendings.lib.php"); -if ($conf->produit->enabled) require_once(DOL_DOCUMENT_ROOT."/product.class.php"); +if ($conf->produit->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product.class.php"); if ($conf->propal->enabled) require_once(DOL_DOCUMENT_ROOT."/propal.class.php"); if ($conf->commande->enabled) require_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php"); if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/entrepot.class.php"); diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index 3073c8b9be44600826d3109058d7bf2ce8d82fcc..a22d835ef6601c905b92d47b27bb551551d539ae 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -797,7 +797,7 @@ if ($id > 0 || ! empty($ref)) print '<tr '.$bc[$var].'>'; print '<td>'; print '<a name="'.$commandline->id.'"></a>'; // ancre pour retourner sur la ligne - if ($conf->produit->enabled && $commandline->fk_product > 0) + if (($conf->produit->enabled || $conf->service->enabled) && $commandline->fk_product > 0) { print '<a href="'.DOL_URL_ROOT.'/product/fournisseurs.php?id='.$commandline->product_id.'">'; print img_object($langs->trans('ShowProduct'),'product'); @@ -894,7 +894,7 @@ if ($id > 0 || ! empty($ref)) print '</form>'; // Ajout de produits/services predefinis - if ($conf->produit->enabled) + if ($conf->produit->enabled || $conf->service->enabled) { print '<tr class="liste_titre">'; print '<td colspan="3">'; diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php index cb07cd08935fbce2b7066ec301b282139fd9b7f7..f654fd2c184d0795ff11a9f998b653263dac804b 100644 --- a/htdocs/fourn/facture/fiche.php +++ b/htdocs/fourn/facture/fiche.php @@ -846,7 +846,7 @@ else // Show product and description print '<td>'; - if ($conf->produit->enabled && $fac->lignes[$i]->fk_product) + if (($conf->produit->enabled || $conf->service->enabled) && $fac->lignes[$i]->fk_product) { print '<input type="hidden" name="idprod" value="'.$fac->lignes[$i]->fk_product.'">'; $product_static=new ProductFournisseur($db); @@ -1029,7 +1029,7 @@ else print '</form>'; // Ajout de produits/services predefinis - if ($conf->produit->enabled) + if ($conf->produit->enabled || $conf->service->enabled) { print '<tr class="liste_titre">'; print '<td colspan="4">'; diff --git a/htdocs/fourn/pre.inc.php b/htdocs/fourn/pre.inc.php index 0bf349d652e232124ff9f49f2b4e123e6a9f117d..31efe8c3bce0b0f45e18e4b8ec051f3153b88033 100644 --- a/htdocs/fourn/pre.inc.php +++ b/htdocs/fourn/pre.inc.php @@ -46,7 +46,7 @@ function llxHeader($head = '', $title='', $help_url='') { $menu->add(DOL_URL_ROOT."/fourn/index.php", $langs->trans("Suppliers")); - // S�curit� acc�s client + // S�curit� acc�s client if ($user->societe_id == 0 && $user->rights->societe->creer) { $menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&type=f",$langs->trans("NewSupplier")); @@ -80,18 +80,15 @@ function llxHeader($head = '', $title='', $help_url='') { $menu->add(DOL_URL_ROOT."/fourn/commande/",$langs->trans("Orders")); } - if ($conf->produit->enabled || $conf->service->enabled) + if (($conf->produit->enabled && $user->rights->produit->lire) || ($conf->service->enabled && $user->rights->service->lire)) { - if ($user->rights->produit->lire) - { - $menu->add(DOL_URL_ROOT."/product/", $langs->trans("Products")); - } + $menu->add(DOL_URL_ROOT."/product/", $langs->trans("Products")); } if ($conf->categorie->enabled) { $langs->load("categories"); - // Cat�gories fournisseurs + // Cat�gories fournisseurs $menu->add(DOL_URL_ROOT."/categories/index.php?leftmenu=cat&type=1", $langs->trans("SuppliersCategoriesShort"), 0); } diff --git a/htdocs/fourn/product/categorie.php b/htdocs/fourn/product/categorie.php index 9898005e0d2b40d7b98aa646b30a18e249ee96a7..b964930dad4137199178574d14793ae8ce1a7399 100644 --- a/htdocs/fourn/product/categorie.php +++ b/htdocs/fourn/product/categorie.php @@ -26,15 +26,15 @@ $langs->load("categories"); $mesg = ''; -if (!$user->rights->produit->lire) accessforbidden(); +if (!$user->rights->produit->lire && !$user->rights->service->lire) accessforbidden(); /* - * Creation de l'objet produit correspondant � l'id - */ + * Creation de l'objet produit correspondant a l'id + */ if ($_GET["id"]) -{ +{ $product = new Product($db); - $result = $product->fetch($_GET["id"]); + $result = $product->fetch($_GET["id"]); } llxHeader("","",$langs->trans("CardProduct0")); @@ -44,61 +44,61 @@ llxHeader("","",$langs->trans("CardProduct0")); */ if ($_GET["id"]) { - //on veut supprimer une cat�gorie + //on veut supprimer une cat�gorie if ($_REQUEST["cat"]) { $cat = new Categorie($db,$_REQUEST["cat"]); $cat->del_product($product); } - //on veut ajouter une cat�gorie + //on veut ajouter une cat�gorie if (isset($_REQUEST["add_cat"]) && $_REQUEST["add_cat"]>=0) { $cat = new Categorie($db,$_REQUEST["add_cat"]); $cat->add_product($product); } - + if ( $result ) - { + { /* * En mode visu */ - + $h=0; - + $head[$h][0] = DOL_URL_ROOT."/fourn/product/fiche.php?id=".$product->id; $head[$h][1] = $langs->trans("Card"); $h++; - - + + if ($conf->stock->enabled) { $head[$h][0] = DOL_URL_ROOT."/product/stock/product.php?id=".$product->id; $head[$h][1] = $langs->trans("Stock"); $h++; } - + if ($conf->fournisseur->enabled) { $head[$h][0] = DOL_URL_ROOT."/product/fournisseurs.php?id=".$product->id; $head[$h][1] = $langs->trans("Suppliers"); $h++; } - + $head[$h][0] = DOL_URL_ROOT."/product/photos.php?id=".$product->id; $head[$h][1] = $langs->trans("Photos"); $h++; - + $head[$h][0] = DOL_URL_ROOT."/product/stats/fiche.php?id=".$product->id; $head[$h][1] = $langs->trans('Statistics'); $h++; - - //affichage onglet cat�gorie + + //affichage onglet cat�gorie if ($conf->categorie->enabled){ $head[$h][0] = DOL_URL_ROOT."/fourn/product/categorie.php?id=".$product->id; $head[$h][1] = $langs->trans('Categories'); - $hselected = $h; + $hselected = $h; $h++; } @@ -109,47 +109,47 @@ if ($_GET["id"]) print '<table class="border" width="100%">'; print "<tr>"; print '<td>'.$langs->trans("Ref").'</td><td>'.$product->ref.'</td>'; - + print '<tr><td>'.$langs->trans("Label").'</td><td>'.$product->libelle.'</td>'; print "</table><br>\n"; $c = new Categorie($db); $cats = $c->containing($_REQUEST['id'],"product"); - + if (sizeof($cats) > 0) { - print "Vous avez stock� le produit dans les cat�gorie suivantes:<br/><br/>"; + print "Vous avez stock� le produit dans les cat�gorie suivantes:<br/><br/>"; print '<table class="noborder" width="100%">'; print '<tr class="liste_titre"><td colspan="2">'.$langs->trans("AllWays").'</td></tr>'; - - + + foreach ($cats as $cat) { - + $ways = $cat->print_all_ways (); foreach ($ways as $way) { $i = !$i; print "<tr ".$bc[$i]."><td>".$way."</td>"; print "<td><a href= '".DOL_URL_ROOT."/fourn/product/categorie.php?id=".$product->id."&cat=".$cat->id."'>".$langs->trans("DeleteFromCat")."</a></td></tr>\n"; - + } - + } print "</table><br/><br/>\n"; - } + } else if($cats < 0) { print $langs->trans("ErrorUnknown"); } - + else { print $langs->trans("NoCat")."<br/><br/>"; } - + } - + print $langs->trans("AddProductToCat")."<br/><br/>"; print '<table class="border" width="100%">'; print '<form method="POST" action="'.DOL_URL_ROOT.'/fourn/product/categorie.php?id='.$product->id.'">'; @@ -162,7 +162,7 @@ if ($_GET["id"]) } print "</select></td><td><input type='submit' value='".$langs->trans("Select")."'></td></tr>"; print "</form></table><br/>"; - + } $db->close(); diff --git a/htdocs/fourn/product/fourn.php b/htdocs/fourn/product/fourn.php index 44629d2eb6707e53677423f8ae363f24da456cab..6f73727d160afbcbf79b8c73e6a854926a7e06bc 100644 --- a/htdocs/fourn/product/fourn.php +++ b/htdocs/fourn/product/fourn.php @@ -21,30 +21,30 @@ */ /*! - \file htdocs/fourn/product/fourn.php - \ingroup product - \brief Page de la fiche produit fournisseur - \version $Revision$ -*/ + \file htdocs/fourn/product/fourn.php + \ingroup product + \brief Page de la fiche produit fournisseur + \version $Revision$ + */ require("./pre.inc.php"); require_once DOL_DOCUMENT_ROOT."/fourn/fournisseur.product.class.php"; -if (!$user->rights->produit->lire) accessforbidden(); +if (!$user->rights->produit->lire && !$user->rights->service->lire) accessforbidden(); if ($_POST["action"] == 'update' && $_POST["cancel"] <> $langs->trans("Cancel")) { - $product = new ProductFournisseur($db); - $result = $product->fetch($_GET["id"], $_GET["id_fourn"]); + $product = new ProductFournisseur($db); + $result = $product->fetch($_GET["id"], $_GET["id_fourn"]); - if( $result == 0 ) - { - $product->update($_POST["fourn_ref"], '1', $_POST["price"], $user); - } + if( $result == 0 ) + { + $product->update($_POST["fourn_ref"], '1', $_POST["price"], $user); + } - Header('Location :fourn.php?id='.$product->id.'&id_fourn='.$_GET["id_fourn"]); + Header('Location :fourn.php?id='.$product->id.'&id_fourn='.$_GET["id_fourn"]); } @@ -56,119 +56,119 @@ llxHeader("","",$langs->trans("CardProduct0")); */ if ($_GET["id"]) { - if ($_GET["action"] <> 're-edit') - { - $product = new ProductFournisseur($db); - $result = $product->fetch($_GET["id"], $_GET["id_fourn"]); - $product->get_buyprice($_GET["id_fourn"],1); - } - - if ( $result == 0) - { - - - /* - * En mode visu - */ - - $h=0; - - $head[$h][0] = DOL_URL_ROOT."/fourn/product/fiche.php?id=".$product->id; - $head[$h][1] = $langs->trans("ProductCard"); - $h++; - - $head[$h][0] = DOL_URL_ROOT."/fourn/product/fourn.php?id=".$product->id.'&id_fourn='.$_GET["id_fourn"]; - $head[$h][1] = $langs->trans("SupplierCard"); - $hselected = $h; - $h++; - - dol_fiche_head($head, $hselected, $langs->trans("CardProduct".$product->type).' : '.$product->ref); - - print '<table class="border" width="100%">'; - - if ($conf->categorie->enabled) - { + if ($_GET["action"] <> 're-edit') + { + $product = new ProductFournisseur($db); + $result = $product->fetch($_GET["id"], $_GET["id_fourn"]); + $product->get_buyprice($_GET["id_fourn"],1); + } + + if ( $result == 0) + { + + + /* + * En mode visu + */ + + $h=0; + + $head[$h][0] = DOL_URL_ROOT."/fourn/product/fiche.php?id=".$product->id; + $head[$h][1] = $langs->trans("ProductCard"); + $h++; + + $head[$h][0] = DOL_URL_ROOT."/fourn/product/fourn.php?id=".$product->id.'&id_fourn='.$_GET["id_fourn"]; + $head[$h][1] = $langs->trans("SupplierCard"); + $hselected = $h; + $h++; + + dol_fiche_head($head, $hselected, $langs->trans("CardProduct".$product->type).' : '.$product->ref); + + print '<table class="border" width="100%">'; + + if ($conf->categorie->enabled) + { print '<tr id="ways">'; print '<td colspan="3">'; $cat = new Categorie ($db); $way = $cat->print_primary_way($product->id," > ",'fourn/product/liste.php'); if ($way == "") - { - print "Ce produit n'appartient � aucune cat�gorie"; - } + { + print "Ce produit n'appartient � aucune cat�gorie"; + } else - { + { print $langs->trans("Category")." : "; - print $way; - } + print $way; + } print '</td></tr>'; - } + } - print '<tr><td>'.$langs->trans("Label").'</td><td colspan="2">'.$product->libelle.'</td></tr>'; - - print '<tr><td width="20%">'.$langs->trans("InternalRef").'</td><td width="40%">'.$product->ref.'</td>'; - - print '<td class="photo" valign="top" rowspan="6">'; - $product->show_photos($conf->produit->dir_output,1,1,0); - print '</td></tr>'; - - print "<tr>"; - print '<td width="20%">'.$langs->trans("Supplier").'</td><td width="40%">'.$product->fourn->getNomUrl(1).'</td>'; - print '</tr><tr>'; - print '<td width="20%">'.$langs->trans("SupplierRef").'</td><td width="40%">'.$product->fourn_ref.'</td>'; - print '</tr><tr>'; - print '<td width="20%">'.$langs->trans("BuiingPrice").'</td><td width="40%">'.price($product->buyprice).'</td>'; - print '</tr>'; - - print '<tr><td colspan="2">'.$langs->trans("Description").'</td></tr>'; - print '<tr><td valign="top" colspan="2">'.nl2br($product->description).' </td></tr>'; - - print "</table><br>\n"; - - print '<table class="border" width="100%">'; - print '<tr class="liste_titre"><td>'; - print $langs->trans("Date").'</td>'; - print '<td align="right">'.$langs->trans("Price").'</td>'; - print '<td align="center">'.$langs->trans("Quantity").'</td>'; - print '</tr>'; - - /* - * Prix - */ - - $sql = "SELECT p.price, p.quantity,".$db->pdate("tms") ." as date_releve"; - $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as p"; - $sql .=" WHERE p.fk_soc = ".$product->fourn->id; - $sql .= " AND p.fk_product = ".$product->id; - $sql .= " ORDER BY p.quantity ASC"; - $resql= $db->query($sql) ; - if ($resql) - { + print '<tr><td>'.$langs->trans("Label").'</td><td colspan="2">'.$product->libelle.'</td></tr>'; + + print '<tr><td width="20%">'.$langs->trans("InternalRef").'</td><td width="40%">'.$product->ref.'</td>'; + + print '<td class="photo" valign="top" rowspan="6">'; + $product->show_photos($conf->produit->dir_output,1,1,0); + print '</td></tr>'; + + print "<tr>"; + print '<td width="20%">'.$langs->trans("Supplier").'</td><td width="40%">'.$product->fourn->getNomUrl(1).'</td>'; + print '</tr><tr>'; + print '<td width="20%">'.$langs->trans("SupplierRef").'</td><td width="40%">'.$product->fourn_ref.'</td>'; + print '</tr><tr>'; + print '<td width="20%">'.$langs->trans("BuiingPrice").'</td><td width="40%">'.price($product->buyprice).'</td>'; + print '</tr>'; + + print '<tr><td colspan="2">'.$langs->trans("Description").'</td></tr>'; + print '<tr><td valign="top" colspan="2">'.nl2br($product->description).' </td></tr>'; + + print "</table><br>\n"; + + print '<table class="border" width="100%">'; + print '<tr class="liste_titre"><td>'; + print $langs->trans("Date").'</td>'; + print '<td align="right">'.$langs->trans("Price").'</td>'; + print '<td align="center">'.$langs->trans("Quantity").'</td>'; + print '</tr>'; + + /* + * Prix + */ + + $sql = "SELECT p.price, p.quantity,".$db->pdate("tms") ." as date_releve"; + $sql .= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as p"; + $sql .=" WHERE p.fk_soc = ".$product->fourn->id; + $sql .= " AND p.fk_product = ".$product->id; + $sql .= " ORDER BY p.quantity ASC"; + $resql= $db->query($sql) ; + if ($resql) + { $num_fournisseur = $db->num_rows($resql); $i = 0; - $var=True; + $var=True; while ($i < $num_fournisseur) - { - $objp = $db->fetch_object($resql); - $var=!$var; - print "<tr $bc[$var]>"; - print '<td>'.dol_print_date($objp->date_releve).'</td>'; - print '<td align="right">'.price($objp->price).'</td>'; - print '<td align="center">'.$objp->quantity.'</td></tr>'; - - $i++; - } + { + $objp = $db->fetch_object($resql); + $var=!$var; + print "<tr $bc[$var]>"; + print '<td>'.dol_print_date($objp->date_releve).'</td>'; + print '<td align="right">'.price($objp->price).'</td>'; + print '<td align="center">'.$objp->quantity.'</td></tr>'; + + $i++; + } $db->free($resql); - } - print '</table>'; - - /* - * - * Fiche en mode edition - * - */ - if (($_GET["action"] == 'edit' || $_GET["action"] == 're-edit') && $user->rights->produit->creer) - { + } + print '</table>'; + + /* + * + * Fiche en mode edition + * + */ + if (($_GET["action"] == 'edit' || $_GET["action"] == 're-edit') && ($user->rights->produit->creer || $user->rights->service->creer)) + { $action = 'fourn.php?id='.$product->id.'&id_fourn='.$product->fourn->id; @@ -191,36 +191,35 @@ if ($_GET["id"]) print '<input type="submit" name="cancel" value="'.$langs->trans("Cancel").'"></td></tr>'; print '</table>'; print '</form>'; - } + } + + print "</div>\n"; + /* ************************************************************************** */ + /* */ + /* Barre d'action */ + /* */ + /* ************************************************************************** */ + + print "\n<div class=\"tabsAction\">\n"; + + if ($_GET["action"] == '') + { + if ($user->rights->produit->creer || $user->rights->service->creer) + { + print '<a class="butAction" href="fourn.php?action=edit&id='.$product->id.'&id_fourn='.$product->fourn->id.'">'.$langs->trans("Modify").'</a>'; + } + } + + print "\n</div>\n"; - print "</div>\n"; - /* ************************************************************************** */ - /* */ - /* Barre d'action */ - /* */ - /* ************************************************************************** */ - - print "\n<div class=\"tabsAction\">\n"; - - if ($_GET["action"] == '') - { - - if ( $user->rights->produit->creer) - { - print '<a class="butAction" href="fourn.php?action=edit&id='.$product->id.'&id_fourn='.$product->fourn->id.'">'.$langs->trans("Modify").'</a>'; - } } - - print "\n</div>\n"; - - } } else { - print $langs->trans("ErrorUnknown"); + print $langs->trans("ErrorUnknown"); } $db->close(); llxFooter("<em>Dernière modification $Date$ révision $Revision$</em>"); ?> - + diff --git a/htdocs/fourn/product/index.php b/htdocs/fourn/product/index.php index 31f4148213f1ef02df92d7c9013859c0e39ab03c..9260cef3b6ec378ec693b0406fc026ebae1f6fcb 100644 --- a/htdocs/fourn/product/index.php +++ b/htdocs/fourn/product/index.php @@ -30,11 +30,11 @@ require("./pre.inc.php"); -if (!$user->rights->produit->lire) accessforbidden(); +if (!$user->rights->produit->lire && !$user->rights->service->lire) accessforbidden(); + /* - * Affichage page accueil - * + * View */ llxHeader("","",$langs->trans("ProductsAndServices")); diff --git a/htdocs/fourn/product/liste.php b/htdocs/fourn/product/liste.php index c1abf85fcb90c4b1ff2517edd0dfe2a280c56966..083e7ef3aa68aed7500b66d1095075d01d1689db 100644 --- a/htdocs/fourn/product/liste.php +++ b/htdocs/fourn/product/liste.php @@ -32,7 +32,7 @@ require_once(DOL_DOCUMENT_ROOT."/societe.class.php"); $langs->load("products"); $langs->load("suppliers"); -if (!$user->rights->produit->lire) accessforbidden(); +if (!$user->rights->produit->lire && !$user->rights->service->lire) accessforbidden(); $sref=isset($_GET["sref"])?$_GET["sref"]:$_POST["sref"]; $sRefSupplier=isset($_GET["srefsupplier"])?$_GET["srefsupplier"]:$_POST["srefsupplier"]; @@ -52,7 +52,7 @@ $offset = $limit * $page ; if (! $sortfield) $sortfield="p.ref"; if (! $sortorder) $sortorder="DESC"; -if (! empty($_POST["button_removefilter"])) +if (! empty($_POST["button_removefilter"])) { $sref=""; $sRefSupplier=""; @@ -155,11 +155,11 @@ if ($resql) } if (! empty($supplier->id)) $texte = $langs->trans("ListOfSupplierProductForSupplier",$supplier->nom); - else $texte = $langs->trans("List"); + else $texte = $langs->trans("List"); llxHeader("","",$texte); - + $param="&envente=$envente&sref=$sref&snom=$snom&fourn_id=$fourn_id".(isset($type)?"&type=$type":""); print_barre_liste($texte, $page, "liste.php", $param, $sortfield, $sortorder,'',$num); @@ -225,21 +225,21 @@ if ($resql) $productstatic->type=$objp->fk_product_type; print $productstatic->getNomUrl(1,'supplier'); print '</td>'; - + print '<td>'.$objp->ref_fourn.'</td>'; - + print '<td>'.$objp->label.'</td>'."\n"; - + $companystatic->nom=$objp->nom; $companystatic->id=$objp->socid; print '<td>'.$companystatic->getNomUrl(1,'supplier').'</td>'; - + print '<td align="right">'.price($objp->price).'</td>'; - + print '<td align="right">'.$objp->qty.'</td>'; - + print '<td align="right">'.price($objp->unitprice).'</td>'; - + print "</tr>\n"; $i++; } diff --git a/htdocs/fourn/product/photos.php b/htdocs/fourn/product/photos.php index e6528dc915bb8ac8477648d12e609f9e838bdf6e..316093ead9fead1b407e467b7a94ec96556b5564 100644 --- a/htdocs/fourn/product/photos.php +++ b/htdocs/fourn/product/photos.php @@ -28,11 +28,11 @@ require("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT."/product.class.php"); -if (!$user->rights->produit->lire) accessforbidden(); +if (!$user->rights->produit->lire && !$user->rights->service->lire) accessforbidden(); /* - * + * View */ if ( $_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) @@ -83,7 +83,7 @@ if ($_GET["id"]) $hselected = $h; $h++; - //Affichage onglet Cat�gories + //Affichage onglet Cat�gories if ($conf->categorie->enabled){ $head[$h][0] = DOL_URL_ROOT."/fourn/product/categorie.php?id=".$product->id; $head[$h][1] = $langs->trans('Categories'); @@ -111,7 +111,7 @@ if ($_GET["id"]) * Ajouter une photo * */ - if ($_GET["action"] == 'ajout_photo' && $user->rights->produit->creer && ! empty($conf->global->MAIN_UPLOAD_DOC)) + if ($_GET["action"] == 'ajout_photo' && ($user->rights->produit->creer || $user->rights->service->creer) && ! empty($conf->global->MAIN_UPLOAD_DOC)) { print_titre($langs->trans("AddPhoto")); @@ -162,7 +162,7 @@ if ($_GET["id"]) print '</a>'; print '<br>'.$langs->trans("File").': '.dol_trunc($filename,16); - if ($user->rights->produit->creer) + if ($user->rights->produit->creer || $user->rights->service->creer) { print '<br>'.'<a href="'.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'&action=delete&file='.urlencode($pdir.$filename).'">'.img_delete().'</a>'; } @@ -196,17 +196,15 @@ if ($_GET["id"]) if ($_GET["action"] == '') { - if ( $user->rights->produit->creer && ! empty($conf->global->MAIN_UPLOAD_DOC)) + if (($user->rights->produit->creer || $user->rights->service->creer) && ! empty($conf->global->MAIN_UPLOAD_DOC)) { - print '<a class="butAction" href="photos.php?action=ajout_photo&id='.$product->id.'">'; - print $langs->trans("AddPhoto").'</a>'; + print '<a class="butAction" href="photos.php?action=ajout_photo&id='.$product->id.'">'; + print $langs->trans("AddPhoto").'</a>'; } } print "\n</div>\n"; - - } else { @@ -215,11 +213,7 @@ else - - - - $db->close(); -llxFooter("<em>Dernière modification $Date$ révision $Revision$</em>"); +llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/fourn/product/pre.inc.php b/htdocs/fourn/product/pre.inc.php index bae4783edf944d62b9c563820fb12d73ddeab1a1..89b5a55bc67553f5432fa91e777f580a8a7df293 100644 --- a/htdocs/fourn/product/pre.inc.php +++ b/htdocs/fourn/product/pre.inc.php @@ -55,7 +55,7 @@ function llxHeader($head = "", $title="", $help_url='',$addons='') $menu->add(DOL_URL_ROOT."/fourn/product/", $langs->trans("Products")); $menu->add_submenu(DOL_URL_ROOT."/fourn/product/liste.php?type=0", $langs->trans("List")); - if ($user->societe_id == 0 && $user->rights->produit->creer) + if ($user->societe_id == 0 && ($user->rights->produit->creer || $user->rights->service->creer)) { $menu->add_submenu(DOL_URL_ROOT."/fourn/product/fiche.php?action=create&type=0", $langs->trans("NewProduct")); } diff --git a/htdocs/imports/import.class.php b/htdocs/imports/import.class.php index ae4df7d89d20375bc729c9e0652b7b76c233a778..4bae0ea48462ee17890c14866cf83a664803036d 100644 --- a/htdocs/imports/import.class.php +++ b/htdocs/imports/import.class.php @@ -121,7 +121,7 @@ class Import // Permission $this->array_import_perms[$i]=$user->admin; // Icon - $this->array_import_icon[$i]=(isset($module->export_icon[$r])?$module->export_icon[$r]:$module->picto); + $this->array_import_icon[$i]=(isset($module->import_icon[$r])?$module->import_icon[$r]:$module->picto); // Code du dataset export $this->array_import_code[$i]=$module->import_code[$r]; // Libelle du dataset export @@ -138,9 +138,9 @@ class Import // Requete sql du dataset $this->array_import_sql_start[$i]=$module->import_sql_start[$r]; $this->array_import_sql_end[$i]=$module->import_sql_end[$r]; - //$this->array_import_sql[$i]=$module->export_sql[$r]; + //$this->array_import_sql[$i]=$module->import_sql[$r]; - dol_syslog("Import loaded for module ".$modulename." with index ".$i.", dataset=".$module->export_code[$r].", nb of fields=".sizeof($module->export_fields_code[$r])); + dol_syslog("Import loaded for module ".$modulename." with index ".$i.", dataset=".$module->import_code[$r].", nb of fields=".sizeof($module->import_fields_code[$r])); $i++; // } } diff --git a/htdocs/includes/barcode/html.formbarcode.class.php b/htdocs/includes/barcode/html.formbarcode.class.php index dfd0c6673db30fdeb98a68a8feb141fed6620ef6..1cd74ca2ccf299a77b255cfbfa5874e675b05f2c 100644 --- a/htdocs/includes/barcode/html.formbarcode.class.php +++ b/htdocs/includes/barcode/html.formbarcode.class.php @@ -21,14 +21,14 @@ /** \file htdocs/html.form.class.php - \brief Fichier de la classe des fonctions pr�d�finie de composants html + \brief Fichier de la classe des fonctions pr�d�finie de composants html \version $Revision$ */ /** \class Form - \brief Classe permettant la g�n�ration de composants html + \brief Classe permettant la g�n�ration de composants html */ class FormBarCode @@ -39,35 +39,35 @@ class FormBarCode /** \brief Constructeur - \param DB handler d'acc�s base de donn�e + \param DB handler d'acc�s base de donn�e */ function FormBarCode($DB) { $this->db = $DB; - + return 1; } /** - * \brief Liste de s�lection du g�n�rateur de codes barres - * \param selected Id code pr�-s�lectionn� + * \brief Liste de s�lection du g�n�rateur de codes barres + * \param selected Id code pr�-s�lectionn� * \param code_id Id du code barre * \param idForm Id du formulaire */ function setBarcodeEncoder($selected=0,$barcodelist,$code_id,$idForm='formbarcode') { global $conf, $langs; - + $disable = ''; - - // On v�rifie si le code de barre est d�j� s�lectionn� par d�faut dans le module produit - if (($conf->produit->enabled && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id) || + + // We check if barcode is already selected by default + if ((($conf->produit->enabled || $conf->service->enabled) && $conf->global->PRODUIT_DEFAULT_BARCODE_TYPE == $code_id) || ($conf->societe->enabled && $conf->global->GENBARCODE_BARCODETYPE_THIRDPARTY == $code_id)) { $disable = 'disabled="disabled"'; } - + $select_encoder = '<form action="barcode.php" method="post" id="'.$idForm.'">'; $select_encoder.= '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; $select_encoder.= '<input type="hidden" name="action" value="update">'; @@ -83,30 +83,30 @@ class FormBarCode return $select_encoder; } - + /** * \brief Retourne la liste des types de codes barres - * \param selected Id code pr�-s�lectionn� + * \param selected Id code pr�-s�lectionn� * \param htmlname Nom de la zone select * \param useempty Affiche valeur vide dans liste */ function select_barcode_type($selected='',$htmlname='coder_id',$useempty=0) { global $langs,$conf; - + $sql = "SELECT rowid, code, libelle"; $sql.= " FROM ".MAIN_DB_PREFIX."c_barcode_type"; $sql.= " WHERE coder <> '0'"; $sql.= " AND entity = ".$conf->entity; $sql.= " ORDER BY rowid"; - + $result = $this->db->query($sql); if ($result) { $num = $this->db->num_rows($result); $i = 0; - - if ($useempty && $num > 0) + + if ($useempty && $num > 0) { print '<select class="flat" name="'.$htmlname.'">'; print '<option value="0"> </option>'; @@ -116,7 +116,7 @@ class FormBarCode print '<select disabled="disabled" class="flat" name="'.$htmlname.'">'; print '<option value="0" selected="true">'.$langs->trans('NoActivatedBarcode').'</option>'; } - + while ($i < $num) { $obj = $this->db->fetch_object($result); @@ -138,11 +138,11 @@ class FormBarCode dol_print_error($this->db); } } - + /** * \brief Affiche formulaire de selection du type de code barre * \param page Page - * \param selected Id condition pr�-s�lectionn�e + * \param selected Id condition pr�-s�lectionn�e * \param htmlname Nom du formulaire select */ function form_barcode_type($page, $selected='', $htmlname='barcodetype_id') diff --git a/htdocs/includes/boxes/box_produits.php b/htdocs/includes/boxes/box_produits.php index 68ae85cb8ad4bee39546ff45e029e9e01ab3385a..403576ffec670db81e0350e23cc9e5df5747ba16 100644 --- a/htdocs/includes/boxes/box_produits.php +++ b/htdocs/includes/boxes/box_produits.php @@ -63,16 +63,16 @@ class box_produits extends ModeleBoxes { global $user, $langs, $db, $conf; $this->max=$max; - + include_once(DOL_DOCUMENT_ROOT."/product.class.php"); $productstatic=new Product($db); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastProducts",$max)); - if ($user->rights->produit->lire) + if ($user->rights->produit->lire || $user->rights->service->lire) { $clause = " WHERE"; - + $sql = "SELECT p.rowid, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.envente"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; if ($conf->categorie->enabled && !$user->rights->categorie->voir) @@ -83,6 +83,8 @@ class box_produits extends ModeleBoxes { $clause = " AND"; } $sql.= $clause." p.entity = ".$conf->entity; + if (empty($user->rights->produit->lire)) $sql.=' AND p.fk_product_type != 0'; + if (empty($user->rights->service->lire)) $sql.=' AND p.fk_product_type != 1'; $sql.= " ORDER BY p.datec DESC"; $sql.= $db->plimit($max, 0); @@ -120,7 +122,7 @@ class box_produits extends ModeleBoxes { $this->info_box_contents[$i][1] = array('td' => 'align="left"', 'text' => $objp->label, 'url' => DOL_URL_ROOT."/product/fiche.php?id=".$objp->rowid); - + if ($objp->price_base_type == 'HT') { $price=price($objp->price); @@ -164,7 +166,7 @@ class box_produits extends ModeleBoxes { { parent::showBox($this->info_box_head, $this->info_box_contents); } - + } ?> diff --git a/htdocs/includes/boxes/box_services_vendus.php b/htdocs/includes/boxes/box_services_vendus.php index 87338956d9ad83dd1f40ce79ec2ddb959c5d9143..3a3eb94211d75bfb4761cf4f0ec93b5ab53a22e3 100644 --- a/htdocs/includes/boxes/box_services_vendus.php +++ b/htdocs/includes/boxes/box_services_vendus.php @@ -61,13 +61,13 @@ class box_services_vendus extends ModeleBoxes { global $user, $langs, $db, $conf; $this->max=$max; - + include_once(DOL_DOCUMENT_ROOT."/contrat/contrat.class.php"); $contratlignestatic=new ContratLigne($db); $this->info_box_head = array('text' => $langs->trans("BoxLastProductsInContract",$max)); - if ($user->rights->produit->lire && $user->rights->contrat->lire) + if ($user->rights->service->lire && $user->rights->contrat->lire) { $sql = "SELECT s.nom, s.rowid as socid,"; $sql.= " c.rowid,"; @@ -101,14 +101,14 @@ class box_services_vendus extends ModeleBoxes { { $num = $db->num_rows($result); $now=gmmktime(); - + $i = 0; while ($i < $num) { $objp = $db->fetch_object($result); $datem=$db->jdate($objp->datem); - + // Multilangs if ($conf->global->MAIN_MULTILANGS) // si l'option est active { @@ -132,7 +132,7 @@ class box_services_vendus extends ModeleBoxes { 'text' => $objp->label, 'maxlength' => 16, 'url' => DOL_URL_ROOT."/contrat/fiche.php?id=".$objp->rowid); - + $this->info_box_contents[$i][2] = array('td' => 'align="left"', 'text' => $objp->nom, 'maxlength' => 28, @@ -144,12 +144,12 @@ class box_services_vendus extends ModeleBoxes { $this->info_box_contents[$i][4] = array('td' => 'align="right" width="18"', 'text' => $contratlignestatic->LibStatut($objp->statut,3) ); - + $i++; } if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoContractedProducts")); } - else + else { $this->info_box_contents[0][0] = array( 'td' => 'align="left"', 'maxlength'=>500, diff --git a/htdocs/includes/menus/barre_left/eldy_backoffice.php b/htdocs/includes/menus/barre_left/eldy_backoffice.php index a9a178799a9f38c687db5ae376c85b03a0bf6446..37e3dcd4467b6034c5a5c3ac77ec52a59e1fb15c 100644 --- a/htdocs/includes/menus/barre_left/eldy_backoffice.php +++ b/htdocs/includes/menus/barre_left/eldy_backoffice.php @@ -606,26 +606,26 @@ class MenuLeft { } if ($conf->propal->enabled) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=0", $langs->trans("Popularity"), 1, $user->rights->propale->lire); + $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=0", $langs->trans("Popularity"), 1, $user->rights->produit->lire && $user->rights->propale->lire); } if ($conf->stock->enabled) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/reassort.php?type=0", $langs->trans("Stocks"), 1, $user->rights->stock->lire); + $newmenu->add_submenu(DOL_URL_ROOT."/product/reassort.php?type=0", $langs->trans("Stocks"), 1, $user->rights->produit->lire && $user->rights->stock->lire); } } // Services if ($conf->service->enabled) { - $newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=service&type=1", $langs->trans("Services"), 0, $user->rights->produit->lire); + $newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=service&type=1", $langs->trans("Services"), 0, $user->rights->service->lire); if ($user->societe_id == 0) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/fiche.php?leftmenu=service&action=create&type=1", $langs->trans("NewService"), 1, $user->rights->produit->creer); + $newmenu->add_submenu(DOL_URL_ROOT."/product/fiche.php?leftmenu=service&action=create&type=1", $langs->trans("NewService"), 1, $user->rights->service->creer); } - $newmenu->add_submenu(DOL_URL_ROOT."/product/liste.php?leftmenu=service&type=1", $langs->trans("List"), 1, $user->rights->produit->lire); + $newmenu->add_submenu(DOL_URL_ROOT."/product/liste.php?leftmenu=service&type=1", $langs->trans("List"), 1, $user->rights->service->lire); if ($conf->propal->enabled) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=1", $langs->trans("Popularity"), 1, $user->rights->propale->lire); + $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=1", $langs->trans("Popularity"), 1, $user->rights->service->lire && $user->rights->propale->lire); } } diff --git a/htdocs/includes/menus/barre_left/eldy_frontoffice.php b/htdocs/includes/menus/barre_left/eldy_frontoffice.php index 782ba4b7adc5589ad6ed302d3e22dc5ff7efe25f..a3a742e87c2e8e4be8f2a35c7c6d4ed755ee4297 100644 --- a/htdocs/includes/menus/barre_left/eldy_frontoffice.php +++ b/htdocs/includes/menus/barre_left/eldy_frontoffice.php @@ -588,27 +588,27 @@ class MenuLeft { } if ($conf->propal->enabled) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=0", $langs->trans("Popularity"), 1, $user->rights->propale->lire); + $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=0", $langs->trans("Popularity"), 1, $user->rights->produit->lire && $user->rights->propale->lire); } if ($conf->stock->enabled) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/reassort.php?type=0", $langs->trans("Stocks"), 1, $user->rights->stock->lire); + $newmenu->add_submenu(DOL_URL_ROOT."/product/reassort.php?type=0", $langs->trans("Stocks"), 1, $user->rights->produit->lire && $user->rights->stock->lire); } } // Services if ($conf->service->enabled) { - $newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=service&type=1", $langs->trans("Services"), 0, $user->rights->produit->lire); + $newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=service&type=1", $langs->trans("Services"), 0, $user->rights->service->lire); if ($user->societe_id == 0) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/fiche.php?leftmenu=service&action=create&type=1", $langs->trans("NewService"), 1, $user->rights->produit->creer); + $newmenu->add_submenu(DOL_URL_ROOT."/product/fiche.php?leftmenu=service&action=create&type=1", $langs->trans("NewService"), 1, $user->rights->service->creer); } + $newmenu->add_submenu(DOL_URL_ROOT."/product/liste.php?leftmenu=service&type=1", $langs->trans("List"), 1, $user->rights->service->lire); if ($conf->propal->enabled) { - $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=1", $langs->trans("Popularity"), 1, $user->rights->propale->lire); + $newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&type=1", $langs->trans("Popularity"), 1, $user->rights->service->lire && $user->rights->propale->lire); } - $newmenu->add_submenu(DOL_URL_ROOT."/product/liste.php?leftmenu=service&type=1", $langs->trans("List"), 1, $user->rights->produit->lire); } // Categories diff --git a/htdocs/includes/menus/barre_top/eldy_backoffice.php b/htdocs/includes/menus/barre_top/eldy_backoffice.php index fbc842ae19f133cd3b6a1574d478ea435473fff2..22020508df422dfafa6fc7ba56da3c7af57d590d 100644 --- a/htdocs/includes/menus/barre_top/eldy_backoffice.php +++ b/htdocs/includes/menus/barre_top/eldy_backoffice.php @@ -137,7 +137,7 @@ class MenuTop { if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } $idsel='id="mainmenu_products" '; - if ($user->rights->produit->lire) + if ($user->rights->produit->lire || $user->rights->service->lire) { print '<td class="tmenu">'; print '<a '.$class.' '.$idsel.'href="'.DOL_URL_ROOT.'/product/index.php?mainmenu=products&leftmenu="'.($this->atarget?" target=$this->atarget":"").'>'.$chaine.'</a>'; diff --git a/htdocs/includes/menus/barre_top/eldy_frontoffice.php b/htdocs/includes/menus/barre_top/eldy_frontoffice.php index d23861c87897d6d0fd0d5423a11a774048baaa8a..5ff062535ae3e88ba9115ef7038d95d6ded973e1 100644 --- a/htdocs/includes/menus/barre_top/eldy_frontoffice.php +++ b/htdocs/includes/menus/barre_top/eldy_frontoffice.php @@ -137,7 +137,7 @@ class MenuTop { if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } $idsel='id="mainmenu_products" '; - if ($user->rights->produit->lire) + if ($user->rights->produit->lire || $user->service->lire) { print '<td class="tmenu">'; print '<a '.$class.' '.$idsel.'href="'.DOL_URL_ROOT.'/product/index.php?mainmenu=products&leftmenu="'.($this->atarget?" target=$this->atarget":"").'>'.$chaine.'</a>'; @@ -452,7 +452,7 @@ class MenuTop { print '</tr></table>'; } - + } ?> diff --git a/htdocs/includes/menus/barre_top/rodolphe.php b/htdocs/includes/menus/barre_top/rodolphe.php index b5cadb4be9c3c7b4a7b8ebb4dd521e12699afb09..074aa1e6fe025ad4f7d0b6e08a620515a67908a4 100644 --- a/htdocs/includes/menus/barre_top/rodolphe.php +++ b/htdocs/includes/menus/barre_top/rodolphe.php @@ -129,7 +129,7 @@ class MenuTop { if ($conf->service->enabled) { $chaine.=$langs->trans("Services"); } $idsel='id="products" '; - if ($user->rights->produit->lire) + if ($user->rights->produit->lire || $user->rights->service->lire) { print '<td class="tmenu"><a '.$class.' '.$idsel.'href="'.DOL_URL_ROOT.'/product/index.php?mainmenu=products&leftmenu="'.($this->atarget?" target=$this->atarget":"").'>'.$chaine.'</a></td>'; } diff --git a/htdocs/includes/menus/init_menu_auguria.sql b/htdocs/includes/menus/init_menu_auguria.sql index db83942acd274df0ccfcda9265e9fd8f24ea860d..4e5b2aa5f6d73fb6eef6dadbe26cdf794896a05e 100644 --- a/htdocs/includes/menus/init_menu_auguria.sql +++ b/htdocs/includes/menus/init_menu_auguria.sql @@ -15,7 +15,7 @@ delete from llx_menu where menu_handler='auguria'; -- insert into `llx_menu` (`enabled`, `rowid`, `menu_handler`, `type`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('1', 1__+MAX_llx_menu__, 'auguria', 'top', 'home', '', 0, '/index.php?mainmenu=home&leftmenu=', 'Home', -1, '', '', '', 2, 1, __ENTITY__); insert into `llx_menu` (`enabled`, `rowid`, `menu_handler`, `type`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->societe->enabled || $conf->fournisseur->enabled', 2__+MAX_llx_menu__, 'auguria', 'top', 'companies', '', 0, '/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '', '', 2, 2, __ENTITY__); -insert into `llx_menu` (`enabled`, `rowid`, `menu_handler`, `type`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled || $conf->service->enabled', 3__+MAX_llx_menu__, 'auguria', 'top', 'products', '', 0, '/product/index.php?mainmenu=products&leftmenu=', 'Products/Services', -1, 'products', '$user->rights->produit->lire', '', 0, 3, __ENTITY__); +insert into `llx_menu` (`enabled`, `rowid`, `menu_handler`, `type`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled || $conf->service->enabled', 3__+MAX_llx_menu__, 'auguria', 'top', 'products', '', 0, '/product/index.php?mainmenu=products&leftmenu=', 'Products/Services', -1, 'products', '$user->rights->produit->lire||$user->rights->service->lire', '', 0, 3, __ENTITY__); insert into `llx_menu` (`enabled`, `rowid`, `menu_handler`, `type`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->fournisseur->enabled', 4__+MAX_llx_menu__, 'auguria', 'top', 'suppliers', '', 0, '/fourn/index.php?mainmenu=suppliers&leftmenu=', 'Suppliers', -1, 'suppliers', '$user->rights->fournisseur->lire', '', 0, 4, __ENTITY__); insert into `llx_menu` (`enabled`, `rowid`, `menu_handler`, `type`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->societe->enabled', 5__+MAX_llx_menu__, 'auguria', 'top', 'commercial', '', 0, '/comm/index.php?mainmenu=commercial&leftmenu=', 'Commercial', -1, 'commercial', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 5, __ENTITY__); insert into `llx_menu` (`enabled`, `rowid`, `menu_handler`, `type`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->compta->enabled || $conf->comptaexpert->enabled || $conf->banque->enabled || $conf->facture->enabled', 6__+MAX_llx_menu__, 'auguria', 'top', 'accountancy', '', 0, '/compta/index.php?mainmenu=accountancy&leftmenu=', 'MenuFinancial', -1, 'compta', '$user->rights->compta->resultat->lire || $user->rights->comptaexpert->plancompte->lire || $user->rights->commande->lire || $user->rights->facture->lire || $user->rights->banque->lire', '', 2, 6, __ENTITY__); @@ -82,14 +82,14 @@ insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled', 'auguria', 'left', 2800__+MAX_llx_menu__, 'products', '', 3__+MAX_llx_menu__, '/product/index.php?leftmenu=product&type=0', 'Products', 0, 'products', '$user->rights->produit->lire', '', 2, 0, __ENTITY__); insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled', 'auguria', 'left', 2801__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/fiche.php?leftmenu=product&action=create&type=0', 'NewProduct', 1, 'products', '$user->rights->produit->creer', '', 2, 0, __ENTITY__); insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled', 'auguria', 'left', 2802__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/liste.php?leftmenu=product&type=0', 'ProductList', 1, 'products', '$user->rights->produit->lire', '', 2, 1, __ENTITY__); -insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled', 'auguria', 'left', 2803__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/reassort.php?type=0', 'Stocks', 1, 'products', '$user->rights->stock->lire', '', 2, 4, __ENTITY__); +insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled', 'auguria', 'left', 2803__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/reassort.php?type=0', 'Stocks', 1, 'products', '$user->rights->produit->lire && $user->rights->stock->lire', '', 2, 4, __ENTITY__); insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled', 'auguria', 'left', 2804__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/fiche.php?leftmenu=product&action=create&type=0&canvas=livre', 'NewBook', 1, 'products', '$user->rights->produit->creer', '', 2, 2, __ENTITY__); insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled', 'auguria', 'left', 2805__+MAX_llx_menu__, 'products', '', 2800__+MAX_llx_menu__, '/product/liste.php?leftmenu=product&type=0&canvas=livre', 'BookList', 1, 'products', '$user->rights->produit->lire', '', 2, 3, __ENTITY__); -insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->service->enabled', 'auguria', 'left', 2900__+MAX_llx_menu__, 'products', '', 3__+MAX_llx_menu__, '/product/index.php?leftmenu=service&type=1', 'Services', 0, 'products', '$user->rights->produit->lire', '', 2, 1, __ENTITY__); -insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->service->enabled', 'auguria', 'left', 2901__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/fiche.php?leftmenu=service&action=create&type=1', 'NewService', 1, 'products', '$user->rights->produit->creer', '', 2, 0, __ENTITY__); -insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->service->enabled', 'auguria', 'left', 2902__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/liste.php?leftmenu=service&type=1', 'List', 1, 'products', '$user->rights->produit->lire', '', 2, 1, __ENTITY__); -insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled || $conf->service->enabled', 'auguria', 'left', 3000__+MAX_llx_menu__, 'products', '', 3__+MAX_llx_menu__, '/product/stats/index.php?leftmenu=stats', 'Statistics', 0, 'main', '$user->rights->produit>lire', '', 2, 2, __ENTITY__); -insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->propal->enabled', 'auguria', 'left', 3001__+MAX_llx_menu__, 'products', '', 3000__+MAX_llx_menu__, '/product/popuprop.php?leftmenu=stats', 'Popularity', 1, 'main', '$user->rights->produit>lire', '', 2, 0, __ENTITY__); +insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->service->enabled', 'auguria', 'left', 2900__+MAX_llx_menu__, 'products', '', 3__+MAX_llx_menu__, '/product/index.php?leftmenu=service&type=1', 'Services', 0, 'products', '$user->rights->service->lire', '', 2, 1, __ENTITY__); +insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->service->enabled', 'auguria', 'left', 2901__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/fiche.php?leftmenu=service&action=create&type=1', 'NewService', 1, 'products', '$user->rights->service->creer', '', 2, 0, __ENTITY__); +insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->service->enabled', 'auguria', 'left', 2902__+MAX_llx_menu__, 'products', '', 2900__+MAX_llx_menu__, '/product/liste.php?leftmenu=service&type=1', 'List', 1, 'products', '$user->rights->service->lire', '', 2, 1, __ENTITY__); +insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->produit->enabled || $conf->service->enabled', 'auguria', 'left', 3000__+MAX_llx_menu__, 'products', '', 3__+MAX_llx_menu__, '/product/stats/index.php?leftmenu=stats', 'Statistics', 0, 'main', '$user->rights->service->lire', '', 2, 2, __ENTITY__); +insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->propal->enabled', 'auguria', 'left', 3001__+MAX_llx_menu__, 'products', '', 3000__+MAX_llx_menu__, '/product/popuprop.php?leftmenu=stats', 'Popularity', 1, 'main', '$user->rights->produit->lire && $user->rights->produit>lire', '', 2, 0, __ENTITY__); insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->stock->enabled', 'auguria', 'left', 3100__+MAX_llx_menu__, 'products', '', 3__+MAX_llx_menu__, '/product/stock/index.php?leftmenu=stock', 'Stock', 0, 'stocks', '$user->rights->stock->lire', '', 2, 3, __ENTITY__); insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->stock->enabled', 'auguria', 'left', 3101__+MAX_llx_menu__, 'products', '', 3100__+MAX_llx_menu__, '/product/stock/fiche.php?action=create', 'MenuNewWarehouse', 1, 'stocks', '$user->rights->stock->creer', '', 2, 0, __ENTITY__); insert into `llx_menu` (`enabled`, `menu_handler`, `type`, `rowid`, `mainmenu`, `leftmenu`, `fk_menu`, `url`, `titre`, `level`, `langs`, perms, `target`, `user`, position, entity) values ('$conf->stock->enabled', 'auguria', 'left', 3102__+MAX_llx_menu__, 'products', '', 3100__+MAX_llx_menu__, '/product/stock/liste.php', 'List', 1, 'stocks', '$user->rights->stock->lire', '', 2, 1, __ENTITY__); diff --git a/htdocs/includes/modules/modProduit.class.php b/htdocs/includes/modules/modProduit.class.php index affa8377b894d7e118173829a9f45b1699c29814..0ee645177acc90839897d5a9b8aadbf4fc66aa8f 100644 --- a/htdocs/includes/modules/modProduit.class.php +++ b/htdocs/includes/modules/modProduit.class.php @@ -70,7 +70,7 @@ class modProduit extends DolibarrModules // Dependencies $this->depends = array(); - $this->requiredby = array("modStock","modService","modBarcode"); + $this->requiredby = array("modStock","modBarcode"); // Config pages $this->config_page_url = array("produit.php"); @@ -98,34 +98,27 @@ class modProduit extends DolibarrModules $r++; $this->rights[$r][0] = 31; // id de la permission - $this->rights[$r][1] = 'Lire les produits/services'; // libelle de la permission + $this->rights[$r][1] = 'Lire les produits'; // libelle de la permission $this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'lire'; $r++; $this->rights[$r][0] = 32; // id de la permission - $this->rights[$r][1] = 'Creer modifier les produits/services'; // libelle de la permission + $this->rights[$r][1] = 'Creer/modifier les produits'; // libelle de la permission $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'creer'; - $r++; - $this->rights[$r][0] = 33; // id de la permission - $this->rights[$r][1] = 'Commander les produits/services'; // libelle de la permission - $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) - $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut - $this->rights[$r][4] = 'commander'; - $r++; $this->rights[$r][0] = 34; // id de la permission - $this->rights[$r][1] = 'Supprimer les produits/services'; // libelle de la permission + $this->rights[$r][1] = 'Supprimer les produits'; // libelle de la permission $this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour) $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][4] = 'supprimer'; $r++; - $this->rights[$r][0] = 38; + $this->rights[$r][0] = 38; // Must be same permission than in service module $this->rights[$r][1] = 'Exporter les produits'; $this->rights[$r][2] = 'r'; $this->rights[$r][3] = 0; diff --git a/htdocs/includes/modules/modService.class.php b/htdocs/includes/modules/modService.class.php index 240aae9ccbcbd5c039419fb0edf8806fc7c3c903..98ec01fc0336332ccef0e8240152b5a54a34cf22 100644 --- a/htdocs/includes/modules/modService.class.php +++ b/htdocs/includes/modules/modService.class.php @@ -23,23 +23,22 @@ */ /** - \defgroup service Module service - \brief Module pour gerer le suivi de services predefinis + * \defgroup service Module service + * \brief Module pour gerer le suivi de services predefinis */ /** - \file htdocs/includes/modules/modService.class.php - \ingroup service - \brief Fichier de description et activation du module Service + * \file htdocs/includes/modules/modService.class.php + * \ingroup service + * \brief Fichier de description et activation du module Service */ include_once(DOL_DOCUMENT_ROOT ."/includes/modules/DolibarrModules.class.php"); -/** \class modService - \brief Classe de description et activation du module Service +/** \class modService + * \brief Classe de description et activation du module Service */ - class modService extends DolibarrModules { @@ -68,7 +67,7 @@ class modService extends DolibarrModules $this->dirs = array("/produit/temp"); // Dependancies - $this->depends = array("modProduit"); + $this->depends = array(); $this->requiredby = array("modContrat"); // Constants @@ -81,33 +80,35 @@ class modService extends DolibarrModules // Permissions $this->rights = array(); $this->rights_class = 'service'; - - /* Pour l'instant droits sur services non geres - $this->rights[1][0] = 331; // id de la permission - $this->rights[1][1] = 'Lire les services'; // libelle de la permission - $this->rights[1][2] = 'r'; // type de la permission (deprecie a ce jour) - $this->rights[1][3] = 1; // La permission est-elle une permission par defaut - $this->rights[1][4] = 'lire'; - - $this->rights[2][0] = 332; // id de la permission - $this->rights[2][1] = 'Creer/modifier les services'; // libelle de la permission - $this->rights[2][2] = 'w'; // type de la permission (deprecie a ce jour) - $this->rights[2][3] = 0; // La permission est-elle une permission par defaut - $this->rights[2][4] = 'creer'; - - $this->rights[3][0] = 333; // id de la permission - $this->rights[3][1] = 'Commander un service'; // libelle de la permission - $this->rights[3][2] = 'w'; // type de la permission (deprecie a ce jour) - $this->rights[3][3] = 0; // La permission est-elle une permission par defaut - $this->rights[3][4] = 'commander'; - - $this->rights[4][0] = 334; // id de la permission - $this->rights[4][1] = 'Supprimer les services'; // libelle de la permission - $this->rights[4][2] = 'd'; // type de la permission (deprecie a ce jour) - $this->rights[4][3] = 0; // La permission est-elle une permission par defaut - $this->rights[4][4] = 'supprimer'; - */ - + $r=0; + + $r++; + $this->rights[$r][0] = 531; // id de la permission + $this->rights[$r][1] = 'Lire les services'; // libelle de la permission + $this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour) + $this->rights[$r][3] = 1; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'lire'; + + $r++; + $this->rights[$r][0] = 532; // id de la permission + $this->rights[$r][1] = 'Creer/modifier les services'; // libelle de la permission + $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'creer'; + + $r++; + $this->rights[$r][0] = 534; // id de la permission + $this->rights[$r][1] = 'Supprimer les services'; // libelle de la permission + $this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour) + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'supprimer'; + + $r++; + $this->rights[$r][0] = 538; // Must be same permission than in product module + $this->rights[$r][1] = 'Exporter les services'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'export'; } diff --git a/htdocs/index.php b/htdocs/index.php index 9d714525dbc0f0204bc40b7b4ae31111a7f62646..bb543bf76c48402f57967bd242483369db69f8f5 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -132,7 +132,7 @@ if ($user->societe_id == 0) ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire, ! empty($conf->adherent->enabled) && $user->rights->adherent->lire, ! empty($conf->produit->enabled) && $user->rights->produit->lire, - ! empty($conf->service->enabled) && $user->rights->produit->lire, + ! empty($conf->service->enabled) && $user->rights->service->lire, ! empty($conf->propal->enabled) && $user->rights->propale->lire, ! empty($conf->commande->enabled) && $user->rights->commande->lire, ! empty($conf->facture->enabled) && $user->rights->facture->lire, diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index d49abe2a4c3a8ef633f5e05aeab9600faa250a55..59da8fca770e5d97b2f43634726aa13a59954769 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -350,11 +350,9 @@ Permission25 = Enviar els pressupostos Permission26 = Tancar pressupostos Permission27 = Eliminar pressupostos Permission28 = Exportar els pressupostos -Permission31 = Consultar productes/serveis -Permission32 = Crear/modificar productes/serveis -Permission33 = Demanar productes/serveis -Permission34 = Eliminar productes/serveis -Permission36 = Exportar productes/serveis +Permission31 = Consultar productes +Permission32 = Crear/modificar productes +Permission34 = Eliminar productes Permission38 = Exportar productes Permission41 = Consultar projectes Permission42 = Crear/modificar projectes @@ -480,6 +478,10 @@ Permission401 = Consultar havers Permission402 = Crear/modificar havers Permission403 = Validar havers Permission404 = Eliminar havers +Permission531 = Consultar serviceis +Permission532 = Crear/modificar serviceis +Permission534 = Eliminar serviceis +Permission538 = Exportar serviceis Permission700 = Consultar subvencions Permission701 = Crear/modificar subvencions Permission702 = Eliminar subvencions diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 13ccf606d08608de79184cc69b81780314147c17..1971d31ee491fcd690d5307b5fc3b1134e694421 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -352,11 +352,9 @@ Permission25=Send commercial proposals Permission26=Close commercial proposals Permission27=Delete commercial proposals Permission28=Export commercial proposals -Permission31=Read products/services -Permission32=Create/modify products/services -Permission33=Command products/services -Permission34=Delete products/services -Permission36=Export products/services +Permission31=Read products +Permission32=Create/modify products +Permission34=Delete products Permission38=Export products Permission41=Read projects and tasks Permission42=Create/modify projects, edit tasks for my projects @@ -482,6 +480,10 @@ Permission401=Read discounts Permission402=Create/modify discounts Permission403=Validate discounts Permission404=Delete discounts +Permission531=Read services +Permission532=Create/modify services +Permission534=Delete services +Permission538=Export services Permission700=Read donations Permission701=Create/modify donations Permission702=Delete donations diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 6c03388bef40ea8f9d7a1bd06e231b8cc1f6abdd..9562c2ddf084f73d996ac54792b0c51cd7537bcb 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -350,11 +350,9 @@ Permission25 = Enviar los presupuestos Permission26 = Cerrar presupuestos Permission27 = Eliminar presupuestos Permission28 = Exportar los presupuestos -Permission31 = Consultar productos/servicios -Permission32 = Crear/modificar productos/servicios -Permission33 = Pedir productos/servicios -Permission34 = Eliminar productos/servicios -Permission36 = Exportar productos/servicios +Permission31 = Consultar productos +Permission32 = Crear/modificar productos +Permission34 = Eliminar productos Permission38 = Exportar productos Permission41 = Consultar proyectos Permission42 = Crear/modificar proyectos @@ -480,6 +478,10 @@ Permission401 = Consultar haberes Permission402 = Crear/modificar haberes Permission403 = Validar haberes Permission404 = Eliminar haberes +Permission531 = Consultar servicios +Permission532 = Crear/modificar servicios +Permission534 = Eliminar servicios +Permission538 = Exportar servicios Permission700 = Consultar subvenciones Permission701 = Crear/modificar subvenciones Permission702 = Eliminar subvenciones diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index dd5d6e5af6f805fc5f449c14395946a64c1f4980..7c7a54acc155c407ddc019cae4e25ebe5e115ea2 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -351,11 +351,9 @@ Permission25 = Envoyer les propositions commerciales Permission26 = Clôturer les propositions commerciales Permission27 = Supprimer les propositions commerciales Permission28 = Exporter les propositions commerciales -Permission31 = Consulter les produits/services -Permission32 = Créer/modifier les produits/services -Permission33 = Commander les produits/services -Permission34 = Supprimer les produits/services -Permission36 = Exporter les produits/services +Permission31 = Consulter les produits +Permission32 = Créer/modifier les produits +Permission34 = Supprimer les produits Permission38 = Exporter les produits Permission41 = Consulter les projets et tâches Permission42 = Créer/modifier les projets, éditer tâches de mes projets @@ -481,6 +479,10 @@ Permission401 = Consulter les avoirs Permission402 = Créer/modifier les avoirs Permission403 = Valider les avoirs Permission404 = Supprimer les avoirs +Permission531 = Consulter les services +Permission532 = Créer/modifier les services +Permission534 = Supprimer les services +Permission538 = Exporter les services Permission700 = Consulter les dons Permission701 = Créer/modifier les dons Permission702 = Supprimer les dons diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index fb50997929ad3964139a687e06434b953ee6d689..caad037b31afd5471afb6553380cad68c73360ca 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -9,7 +9,7 @@ HTMLCharset =Charset per le pagine HTML DBStoringCharset =Charset database per memorizzare i dati DBSortingCharset =Charset database per ordinare i dati WarningModuleNotActive =Modulo <b> %s </b> deve essere attivato -WarningOnlyPermissionOfActivatedModules =Solo le autorizzazioni relative a moduli attivati sono mostrate qui. � possibile attivare altri moduli nelle impostazioni - pagina Moduli. +WarningOnlyPermissionOfActivatedModules =Solo le autorizzazioni relative a moduli attivati sono mostrate qui. � possibile attivare altri moduli nelle impostazioni - pagina Moduli. DolibarrSetup =Dolibarr setup DolibarrUser =Dolibarr utente InternalUser =Utente interno @@ -22,13 +22,13 @@ SetupArea =Sezione impostazioni SecuritySetup =Impostazioni per la sicurezza ErrorModuleRequirePHPVersion =Errore, questo modulo richiede PHP versione %s o superiore ErrorModuleRequireDolibarrVersion =Errore, questo modulo richiede Dolibarr versione %s o superiore -ErrorDecimalLargerThanAreForbidden =Errore, una precisione superiore a <b> %s </b> non � supportata. +ErrorDecimalLargerThanAreForbidden =Errore, una precisione superiore a <b> %s </b> non � supportata. DictionnarySetup =Dizionario DisableJavascript =Disabilita JavaScript e funzioni Ajax ConfirmAjax =Utilizzare popup di conferma Ajax -UseSearchToSelectCompany =Utilizzare un sistema di ricerca a compilazione progressiva per scegliere una societ� invece di una lista di selezione (ricerca Ajax invece di una combo select) +UseSearchToSelectCompany =Utilizzare un sistema di ricerca a compilazione progressiva per scegliere una societ� invece di una lista di selezione (ricerca Ajax invece di una combo select) ViewFullDateActions =Visualizzazione di tutte le date delle azioni nel foglio dei terzi -NotAvailableWhenAjaxDisabled =Non disponibile quando Ajax � disabilitato +NotAvailableWhenAjaxDisabled =Non disponibile quando Ajax � disabilitato JavascriptDisabled =JavaScript sia disattivato UsePopupCalendar =Utilizzare popup per l'inserimento delle date UsePreviewTabs =Utilizzare le schede anteprima @@ -38,12 +38,12 @@ Mask =Maschera NextValue =Prossimo valore NextValueForInvoices =Prossimo valore (fatture) NextValueForCreditNotes =Prossimo valore (note di credito) -MustBeLowerThanPHPLimit =Nota: il tuo PHP limita la dimensione di ogni file upload a <b> %s </b> %s, sebbene il valore del parametro � -NoMaxSizeByPHPLimit =Nota: Nessun limite � fissato nel vostro configurazione di PHP +MustBeLowerThanPHPLimit =Nota: il tuo PHP limita la dimensione di ogni file upload a <b> %s </b> %s, sebbene il valore del parametro � +NoMaxSizeByPHPLimit =Nota: Nessun limite � fissato nel vostro configurazione di PHP MaxSizeForUploadedFiles =La dimensione massima per i file caricati (0 per disabilitare qualsiasi upload) UseCaptchaCode =Utilizzare il codice grafico sulla pagina di accesso UseAvToScanUploadedFiles =Utilizzare anti-virus per la scansione di file caricati -ComptaSetup =Impostazioni modulo Contabilit� +ComptaSetup =Impostazioni modulo Contabilit� UserSetup =Impostazioni per la gestione utenti MenuSetup =Impostazioni per la gestione Menu MenuLimits =Limiti e precisione @@ -83,7 +83,7 @@ MaxNbOfLinesForBoxes =Max numero di linee per caselle PositionByDefault =Per impostazione predefinita Position =Ordine MenusDesc =Menu gestori definire il contenuto del 2 barre dei menu (barra orizzontale e verticale bar). -MenusEditorDesc =L'editor di menu consentono di definire personalizzata voci nei menu. Utilizzare con attenzione per evitare di rendere instabile dolibarr e voci di menu definitivamente irraggiungibile. <br> Alcuni moduli aggiungere voci nel menu (nel menu <b> Tutti </b> nella maggior parte dei casi). Se sono stati rimossi alcune di queste voci per errore, � possibile ripristinare i loro disattivando e reenabling il modulo. +MenusEditorDesc =L'editor di menu consentono di definire personalizzata voci nei menu. Utilizzare con attenzione per evitare di rendere instabile dolibarr e voci di menu definitivamente irraggiungibile. <br> Alcuni moduli aggiungere voci nel menu (nel menu <b> Tutti </b> nella maggior parte dei casi). Se sono stati rimossi alcune di queste voci per errore, � possibile ripristinare i loro disattivando e reenabling il modulo. MenuForUsers =Menu per gli utenti LangFile =File. Lang System =Sistema @@ -91,9 +91,9 @@ SystemInfo =Informazioni di sistema SystemTools =Strumenti di gestione SystemToolsArea =Sezione strumenti di gestione del sistema SystemToolsAreaDesc =Questa sezione offre funzioni di gestione. Utilizzare il menu per scegliere la funzione che stai cercando. -PurgeAreaDesc =Questa pagina consente di eliminare tutti i file memorizzati in costruzione o da Dolibarr (file temporanei o tutti i file in <b> %s </b>). Utilizzando questa funzione non � necessario. Esso � fornito per gli utenti Dolibarr cui � ospitato da un prestatore di servizi che non offre le autorizzazioni per eliminare i file costruito dai server web. +PurgeAreaDesc =Questa pagina consente di eliminare tutti i file memorizzati in costruzione o da Dolibarr (file temporanei o tutti i file in <b> %s </b>). Utilizzando questa funzione non � necessario. Esso � fornito per gli utenti Dolibarr cui � ospitato da un prestatore di servizi che non offre le autorizzazioni per eliminare i file costruito dai server web. PurgeDeleteTemporaryFiles =Elimina tutti i file temporanei (nessun rischio di perdere dati) -PurgeDeleteAllFilesInDocumentsDir =Elimina tutti i file nella directory di <b> %s </b>. I file temporanei, ma anche file allegati di elementi (terze parti, fatture, ...) sar� soppresso. +PurgeDeleteAllFilesInDocumentsDir =Elimina tutti i file nella directory di <b> %s </b>. I file temporanei, ma anche file allegati di elementi (terze parti, fatture, ...) sar� soppresso. PurgeRunNow =Spurgo ora PurgeNothingToDelete =nessuna directory da eliminare. PurgeNDirectoriesDeleted =<b> %s </b> di file o directory soppresso. @@ -101,7 +101,7 @@ NewBackup =Nuovo backup GenerateBackup =Genera il backup Backup =Backup Restore =Ripristino -RunCommandSummary =Backup sar� realizzato attraverso il seguente comando +RunCommandSummary =Backup sar� realizzato attraverso il seguente comando WebServerMustHavePermissionForCommand =Il tuo server web devono avere il permesso di eseguire tali comandi BackupResult =Backup risultato BackupFileSuccessfullyCreated =File di backup generati con successo @@ -110,13 +110,13 @@ NoBackupFileAvailable =Nessun file di backup disponibile. ExportMethod =Metodo di esportazione ImportMethod =Importa metodo ToBuildBackupFileClickHere =Per costruire un file di backup, fare clic <a href="%s">qui</a>. -ImportMySqlDesc =Per importare un file di backup, � necessario utilizzare il comando mysql da riga di comando: +ImportMySqlDesc =Per importare un file di backup, � necessario utilizzare il comando mysql da riga di comando: ImportMySqlCommand = %s %s <mybackupfile.sql FileNameToGenerate =Il nome del file da generare CommandsToDisableForeignKeysForImport =Comando per disattivare chiavi esterne sulle importazioni -ExportCompatibility =Compatibilit� dei file di esportazione generati +ExportCompatibility =Compatibilit� dei file di esportazione generati MySqlExportParameters =MySQL esportazione parametri -UseTransactionnalMode =Utilizzare la modalit� transazionale +UseTransactionnalMode =Utilizzare la modalit� transazionale FullPathToMysqldumpCommand =Percorso completo di comando mysqldump ExportOptions =Opzioni di esportazione AddDropDatabase =Aggiungere goccia database comando @@ -126,33 +126,33 @@ NameColumn =Nome colonne ExtendedInsert =Estensione INSERT DelayedInsert =Ritardato inserire EncodeBinariesInHexa =Codificare dati binari in esadecimale -Yes =S� +Yes =S� No =No AutoDetectLang =Autorileva (lingua del browser) FeatureDisabledInDemo =Disabili in funzione demo Rights =Autorizzazioni -BoxesDesc =Le caselle sono schermo che mostra un pezzo di informazioni su alcune pagine. � possibile scegliere tra mostrando la casella o no selezionando pagina di destinazione e facendo clic su 'Attiva', o facendo clic sul pattumiera di disattivare questa funzione. +BoxesDesc =Le caselle sono schermo che mostra un pezzo di informazioni su alcune pagine. � possibile scegliere tra mostrando la casella o no selezionando pagina di destinazione e facendo clic su 'Attiva', o facendo clic sul pattumiera di disattivare questa funzione. OnlyActiveElementsAreShown =Sono mostrati solo gli elementi relativi ai <a href="modules.php">moduli attivati</a> . -ModulesDesc =Dolibarr moduli di definire quali � attivata la funzionalit� del software. Alcuni moduli richiedono le autorizzazioni � necessario concedere agli utenti, dopo che consenta modulo. -ModulesInterfaceDesc =Il Dolibarr moduli interfaccia permette di aggiungere nuove funzionalit� a seconda del software esterno, sistemi o servizi. +ModulesDesc =Dolibarr moduli di definire quali � attivata la funzionalit� del software. Alcuni moduli richiedono le autorizzazioni � necessario concedere agli utenti, dopo che consenta modulo. +ModulesInterfaceDesc =Il Dolibarr moduli interfaccia permette di aggiungere nuove funzionalit� a seconda del software esterno, sistemi o servizi. ModulesSpecialDesc =Moduli speciali sono molto specifiche o raramente utilizzati moduli. -ModulesJobDesc =Business fornire moduli predefiniti semplice configurazione di Dolibarr per una particolare attivit�. +ModulesJobDesc =Business fornire moduli predefiniti semplice configurazione di Dolibarr per una particolare attivit�. BoxesAvailable =Caselle disponibili BoxesActivated =Caselle attivate ActivateOn =Attiva sul ActiveOn =Attivati sul SourceFile =File sorgente -AutomaticIfJavascriptDisabled =Automatico se Javascript � disattivato -AvailableOnlyIfJavascriptNotDisabled =Disponibile solo se JavaScript non � disattivato +AutomaticIfJavascriptDisabled =Automatico se Javascript � disattivato +AvailableOnlyIfJavascriptNotDisabled =Disponibile solo se JavaScript non � disattivato AvailableOnlyIfJavascriptAndAjaxNotDisabled =Disponibile solo se JavaScript e Ajax non sono disabilitati Required =Richiesto Security =Sicurezza Passwords =Password DoNotStoreClearPassword =Non fare memorizzare le password in chiaro nella banca dati MainDbPasswordFileConfEncrypted =Database password codificato in conf.php -ConfigFileIsInReadOnly =Conf.php Il file � di sola lettura, verificare le autorizzazioni. +ConfigFileIsInReadOnly =Conf.php Il file � di sola lettura, verificare le autorizzazioni. ProtectAndEncryptPdfFiles =Protezione e crittografia dei PDF generati -ProtectAndEncryptPdfFilesDesc =Protezione di un documento PDF mantiene a disposizione per leggere e stampare i PDF con qualsiasi browser. Tuttavia, la modifica e la copia non � pi� possibile. +ProtectAndEncryptPdfFilesDesc =Protezione di un documento PDF mantiene a disposizione per leggere e stampare i PDF con qualsiasi browser. Tuttavia, la modifica e la copia non � pi� possibile. Feature =Caratterisitica DolibarrLicense =Licenza DolibarrProjectLeader =Project leader @@ -162,10 +162,10 @@ OfficialWebSiteFr =Francese sito ufficiale OfficialWikiFr =Wiki francese CurrentTopMenuHandler =Gestore attuale del menu in alto CurrentLeftMenuHandler =Gestore attuale del menu a sinistra -MeasuringUnit =Unit� di misura +MeasuringUnit =Unit� di misura Emails =E-mail EMailsSetup =E-mail setup -EMailsDesc =Questa pagina ti permette di sovrascrivere il PHP parametri per l'e-mail di invio. Nella maggior parte dei casi su Unix / Linux OS, il PHP impostazione � corretta e questi parametri sono inutili. +EMailsDesc =Questa pagina ti permette di sovrascrivere il PHP parametri per l'e-mail di invio. Nella maggior parte dei casi su Unix / Linux OS, il PHP impostazione � corretta e questi parametri sono inutili. MAIN_MAIL_SMTP_PORT =Porta SMTP (Di default in php.ini: <b> %s </b>) MAIN_MAIL_SMTP_SERVER =Host SMTP (Di default in php.ini: <b> %s </b>) MAIN_MAIL_EMAIL_FROM =Mittente e-mail automatica per e-mail (Di default in php.ini: <b> %s </b>) @@ -180,30 +180,30 @@ ModuleFamilyProjects =Progetti / collaboratif ModuleFamilyOther =Altro ModuleFamilyTechnic =Mutli-moduli strumenti ModuleFamilyExperimental =Sperimentale moduli -ModuleFamilyFinancial =Moduli finanziari (Contabilit� / Tesoro) +ModuleFamilyFinancial =Moduli finanziari (Contabilit� / Tesoro) ModuleFamilyECM =ECM MenuHandlers =Menu gestori MenuAdmin =Menu editor -ThisIsProcessToFollow =Questa � l'impostazione del processo: +ThisIsProcessToFollow =Questa � l'impostazione del processo: StepNb =Passo %s DownloadPackageFromWebSite =Scarica il pacchetto dal sito %s. UnpackPackageInDolibarrRoot =Scompattate il pacchetto con il file in Dolibarr directory di root del <b> %s </b> -SetupIsReadyForUse =Installare � finito e Dolibarr � pronto per l'utilizzo con questo nuovo componente. +SetupIsReadyForUse =Installare � finito e Dolibarr � pronto per l'utilizzo con questo nuovo componente. CurrentVersion =Dolibarr versione corrente CallUpdatePage =Vai alla pagina che aggiorna la struttura del database e dati su %s. LastStableVersion =Ultima versione stabile -GenericMaskCodes =Puoi inserire uno schema di numerazione. In questo schema, possono essere utilizzati i seguenti tag : <br><b> {000000} </b> Corrisponde a un numero che sar� incrementato in ogni %s. Inserisci il numero di zeri euivalente alla lunghezza desiderata del contatore. Il contatore sar� completato da zeri a sinistra al fine di avere tanti zeri come lo schema definito. <br><b> {000000+000} </b> Come il precedente, ma un offset corrispondente al numero a destra del segno + viene applicato a partire dalla prima %s. <br> <b> {000000@x} </b> Lo stesso come il precedente, ma il contatore non viene reimpostato a zero quando il mese x � raggiunto (x � tra 1 e 12). Se viene utilizzata questa opzione e x � 2 o superiore, allora la sequenza {yy}{mm} o {yyyy}{mm} � anche necessaria. <br> <b> {dd} </b> giorno (da 01 a 31). <br> <b> {mm} </b> mese (da 01 a 12). <br> <b> {yy} </b>, <b> {yyyy} </b> o <b> {y} </b> anno pi� di 2, 4 o 1 numeri.<br> +GenericMaskCodes =Puoi inserire uno schema di numerazione. In questo schema, possono essere utilizzati i seguenti tag : <br><b> {000000} </b> Corrisponde a un numero che sar� incrementato in ogni %s. Inserisci il numero di zeri euivalente alla lunghezza desiderata del contatore. Il contatore sar� completato da zeri a sinistra al fine di avere tanti zeri come lo schema definito. <br><b> {000000+000} </b> Come il precedente, ma un offset corrispondente al numero a destra del segno + viene applicato a partire dalla prima %s. <br> <b> {000000@x} </b> Lo stesso come il precedente, ma il contatore non viene reimpostato a zero quando il mese x � raggiunto (x � tra 1 e 12). Se viene utilizzata questa opzione e x � 2 o superiore, allora la sequenza {yy}{mm} o {yyyy}{mm} � anche necessaria. <br> <b> {dd} </b> giorno (da 01 a 31). <br> <b> {mm} </b> mese (da 01 a 12). <br> <b> {yy} </b>, <b> {yyyy} </b> o <b> {y} </b> anno pi� di 2, 4 o 1 numeri.<br> GenericMaskCodes2=<b> {cccc000} </b> Il codice cliente su n caratteri seguiti dal contatore rif. cliente senza offset e azzerato con il contatore globale.<br> GenericMaskCodes3=Tutti gli altri caratteri nello schema rimarranno intatti. <br> Spazi non sono ammessi. <br> GenericMaskCodes4a=<u> Esempio sulla 99a %s del terzo TheCompany fatta il 31/01/2007: </u> <br> -GenericMaskCodes5=<b> ABC{yy}{mm}-{000000} </b> dar� <b> ABC0701-000099 </b> <br> <b> {0000+100}-ZZZ/{dd}/XXX </b> dar� <b> 0199-ZZZ/31/XXX </b> +GenericMaskCodes5=<b> ABC{yy}{mm}-{000000} </b> dar� <b> ABC0701-000099 </b> <br> <b> {0000+100}-ZZZ/{dd}/XXX </b> dar� <b> 0199-ZZZ/31/XXX </b> GenericNumRefModelDesc =Ritorna un numero personalizzabile in base allo schema definito. -ServerAvailableOnIPOrPort =Server � disponibile presso l'indirizzo <b> %s </b> sulla porta <b> %s </b> -ServerNotAvailableOnIPOrPort =Server non � disponibile presso l'indirizzo <b> %s </b> sulla porta <b> %s </b> -DoTestServerAvailability =Server di test di connettivit� +ServerAvailableOnIPOrPort =Server � disponibile presso l'indirizzo <b> %s </b> sulla porta <b> %s </b> +ServerNotAvailableOnIPOrPort =Server non � disponibile presso l'indirizzo <b> %s </b> sulla porta <b> %s </b> +DoTestServerAvailability =Server di test di connettivit� DoTestSend =L'invio di prova DoTestSendHTML =Prova HTML inviando -ErrorCantUseRazInStartedYearIfNoYearMonthInMask =Errore, non possono utente @ opzione se la sequenza aa () () o millimetri aaaa () () millimetri non � in maschera. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask =Errore, non possono utente @ opzione se la sequenza aa () () o millimetri aaaa () () millimetri non � in maschera. # Modules Module0Name =Utenti e gruppi @@ -212,7 +212,7 @@ Module1Name =Terzi Module1Desc =Gestione Aziende e contatti Module2Name =Commerciale Module2Desc =Gestione commerciale -Module10Name =Contabilit� +Module10Name =Contabilit� Module10Desc =Gestione contabile semplice (fatture e pagamenti) Module20Name =Proposte Module20Desc =Gestione proposte commerciali @@ -255,7 +255,7 @@ Module80Desc =Gestione spedizioni e consegne ordini Module85Name =Banche e cassa Module85Desc =La gestione di conti bancari o conti di cassa Module130Name =Esperto contabile -Module130Desc =Gestione contabilit� per esperti (partita doppia) +Module130Desc =Gestione contabilit� per esperti (partita doppia) Module200Name =LDAP Module200Desc =Sincronizzazione directory LDAP Module210Name =Postnuke @@ -309,11 +309,10 @@ Permission24 =Valida proposte commerciali Permission25 =Inviare proposte commerciali Permission26 =Chiudere proposte commerciali Permission27 =Eliminare proposte commerciali -Permission31 =Leggere prodotti / servizi -Permission32 =Creare / modificare i prodotti / servizi -Permission33 =Comando prodotti / servizi -Permission34 =Eliminare i prodotti / servizi -Permission36 =Esportazione di prodotti / servizi +Permission31 =Leggere prodotti +Permission32 =Creare / modificare i prodotti +Permission34 =Eliminare i prodotti +Permission38 =Esportazione di prodotti Permission41 =Leggere i progetti Permission42 =Creare / modificare i progetti Permission44 =Eliminare progetti @@ -339,7 +338,7 @@ Permission92 =Creare / modificare i contributi sociali e iva Permission93 =Eliminare i contributi sociali e iva Permission95 =Leggere le relazioni Permission96 =Impostazioni del dispacciamento -Permission97 =Leggere la contabilit� di spedizione fattura +Permission97 =Leggere la contabilit� di spedizione fattura Permission98 =Spedizione della fattura di righe contabili Permission101 =Leggere Spedizione Permission102 =Creare / modificare Spedizione @@ -393,7 +392,7 @@ Permission254 =Eliminare o disattivare altri utenti Permission255 =Creare / modificare le proprie informazioni utente Permission256 =Modificare la propria password Permission261 =Accesso al menu commerciale -Permission262 =Estendere l'accesso a tutte le terze parti (non solo quelle legate a utente). Non � efficace per gli utenti esterni (semper limitato a se stessi). +Permission262 =Estendere l'accesso a tutte le terze parti (non solo quelle legate a utente). Non � efficace per gli utenti esterni (semper limitato a se stessi). Permission281 =Leggere contatti Permission282 =Creare / modificare i contatti Permission283 =Eliminare contatti @@ -408,6 +407,10 @@ Permission401 =Leggere sconti Permission402 =Creare / modificare sconti Permission403 =Validare sconti Permission404 =Eliminare sconti +Permission531 =Leggere servizi +Permission532 =Creare / modificare i servizi +Permission534 =Eliminare i servizi +Permission538 =Esportazione di servizi Permission700 =Leggere le donazioni Permission701 =Creare / modificare le donazioni Permission702 =Eliminare le donazioni @@ -439,12 +442,12 @@ Permission1236 =Esportazione fatture fornitore, attributi e dei pagame Permission1321 =Esportazione fatture del cliente, attributi e dei pagamenti Permission2401 =Leggere azioni (o eventi compiti), collegate al suo conto Permission2402 =Creare / modificare / cancellare le azioni (o eventi compiti), collegata al suo conto -Permission2403 =Leggere azioni (eventi o attivit�) di altri -Permission2405 =Creare / modificare / cancellare le azioni (eventi o attivit�) di altri +Permission2403 =Leggere azioni (eventi o attivit�) di altri +Permission2405 =Creare / modificare / cancellare le azioni (eventi o attivit�) di altri Permission2500 =Leggere documenti Permission2501 =Presentare o cancellare i documenti Permission2515 =Impostazioni Directory documenti -DictionnaryCompanyType =Tipi di societ� +DictionnaryCompanyType =Tipi di societ� DictionnaryCompanyJuridicalType =Forme giuridiche di impresa DictionnaryProspectLevel =Livello prospettiva potenziale cliente DictionnaryCanton =Distretti @@ -456,7 +459,7 @@ DictionnaryActions =Azioni elenco DictionnarySocialContributions =Tipi di contributi sociali DictionnaryVAT =Prezzi IVA DictionnaryPaymentConditions =Condizioni di pagamento -DictionnaryPaymentModes =Modalit� di pagamento +DictionnaryPaymentModes =Modalit� di pagamento DictionnaryTypeContact =Contatto tipi DictionnaryEcotaxe =Ecotassa (RAEE) DictionnaryPaperFormat =Formati di carta @@ -466,11 +469,11 @@ BackToModuleList =Torna alla lista moduli BackToDictionnaryList =Torna alla lista dizionari VATReceivedOnly =Tariffa speciale non sono a carico VATManagement =Gestione IVA -VATIsUsedDesc =L'aliquota IVA per impostazione predefinita durante la creazione di prospettive, fatture, ordini, ecc seguire la regola standard attivo: <br> Se il venditore � soggetto ad IVA, quindi IVA per impostazione predefinita -VATIsNotUsedDesc =Per impostazione predefinita la proposta di IVA � pari a 0 che possono essere utilizzati per casi come associazioni, singoli individui o piccole imprese. -VATIsUsedExampleFR =In Francia, significa che le imprese o organizzazioni che hanno un vero e proprio sistema fiscale (Semplificato reale reale o normale). Un sistema in cui l'IVA � dichiarata. -VATIsNotUsedExampleFR =In Francia, ci� significa che le associazioni non sono IVA dichiarata o le societ�, le organizzazioni o le professioni liberali che hanno scelto la micro impresa sistema fiscale (IVA in franchising) e il versamento di una franchigia IVA senza alcuna dichiarazione IVA. Questa scelta viene visualizzata la dicitura "non applicabile IVA - Art-293B del CGI" sulle fatture. -LabelUsedByDefault =Etichetta usato in modo predefinito, se non la traduzione pu� essere trovato per il codice +VATIsUsedDesc =L'aliquota IVA per impostazione predefinita durante la creazione di prospettive, fatture, ordini, ecc seguire la regola standard attivo: <br> Se il venditore � soggetto ad IVA, quindi IVA per impostazione predefinita +VATIsNotUsedDesc =Per impostazione predefinita la proposta di IVA � pari a 0 che possono essere utilizzati per casi come associazioni, singoli individui o piccole imprese. +VATIsUsedExampleFR =In Francia, significa che le imprese o organizzazioni che hanno un vero e proprio sistema fiscale (Semplificato reale reale o normale). Un sistema in cui l'IVA � dichiarata. +VATIsNotUsedExampleFR =In Francia, ci� significa che le associazioni non sono IVA dichiarata o le societ�, le organizzazioni o le professioni liberali che hanno scelto la micro impresa sistema fiscale (IVA in franchising) e il versamento di una franchigia IVA senza alcuna dichiarazione IVA. Questa scelta viene visualizzata la dicitura "non applicabile IVA - Art-293B del CGI" sulle fatture. +LabelUsedByDefault =Etichetta usato in modo predefinito, se non la traduzione pu� essere trovato per il codice LabelOnDocuments =Etichetta su documenti NbOfDays =Numeri di giorni AtEndOfMonth =Alla fine del mese @@ -511,13 +514,13 @@ DriverType =Driver tipo SummarySystem =Informazioni sul sistema di sintesi SummaryConst =Elenco di tutti i parametri di impostazione Dolibarr SystemUpdate =Aggiornamento del sistema -SystemSuccessfulyUpdate =Il sistema � stato aggiornato con successo -MenuCompanySetup =Societ� / Fondazione +SystemSuccessfulyUpdate =Il sistema � stato aggiornato con successo +MenuCompanySetup =Societ� / Fondazione MenuNewUser =Nuovo utente -MenuTopManager =Gestione men� principale -MenuLeftManager =Gestione men� a sinistra -DefaultMenuTopManager =Gestione men� principale -DefaultMenuLeftManager =Gestione men� a sinistra +MenuTopManager =Gestione men� principale +MenuLeftManager =Gestione men� a sinistra +DefaultMenuTopManager =Gestione men� principale +DefaultMenuLeftManager =Gestione men� a sinistra Skin =tema Skin DefaultSkin =Tema di default dello Skin MaxSizeList =Max lunghezza per lista @@ -527,13 +530,13 @@ MessageLogin =Messaggio pagina di accesso PermanentLeftSearchForm =Modulo di ricerca permanente nel menu di sinistra DefaultLanguage =La lingua di default da usare (codice lingua) EnableMultilangInterface =Attiva l'interfaccia multilingue -SystemSuccessfulyUpdated =Il sistema � stato aggiornato con successo -CompanyInfo =Informazioni societ� / fondazione -CompanyIds =Identit� societ� / fondazione +SystemSuccessfulyUpdated =Il sistema � stato aggiornato con successo +CompanyInfo =Informazioni societ� / fondazione +CompanyIds =Identit� societ� / fondazione CompanyName =Nome CompanyAddress =Indirizzo CompanyZip =Cap -CompanyTown =Citt� +CompanyTown =Citt� CompanyCountry =Paese CompanyCurrency =Principali valute DoNotShow =Non mostrare @@ -561,39 +564,39 @@ DelaysOfToleranceTransactionsToConciliate =Tolleranza di ritardo (in giorn DelaysOfToleranceMembers =Tolleranza di ritardo (in giorni) prima segnalazione differita su adherant quota di adesione DelaysOfToleranceChequesToDeposit =Tolleranza di ritardo (in giorni), prima segnalazione per il deposito di assegni a che fare SetupDescription1 =Tutti i parametri disponibili nella sezione impostazioni consentono il setup Dolibarr prima di iniziare l'uso. -SetupDescription2 =I 2 pi� importanti passi dell'installazione avvengono seguendo le prime 2 voci a sinistra nel menu impostazioni, ovvero la pagina di configurazione Azienda / Fondazione e la pagina di configurazione moduli: -SetupDescription3 =L'impostazione <b> Azienda / Fondazione </b> � necessaria perch� le informazioni inserite saranno usate da Dolibarr per le visualizzazioni ed il comportamento (per esempio per le funzioni correlate al tuo paese). -SetupDescription4 =Le impostazioni per i <b> moduli </b> sono necessarie perch� Dolibarr non � un semplice ERP / CRM, ma una somma di diversi moduli, tutti pi� o meno indipendenti. E 'solo dopo aver attivato i moduli che potrai usufruire delle caratteristiche che vedrete apparse nel Dolibarr menu. +SetupDescription2 =I 2 pi� importanti passi dell'installazione avvengono seguendo le prime 2 voci a sinistra nel menu impostazioni, ovvero la pagina di configurazione Azienda / Fondazione e la pagina di configurazione moduli: +SetupDescription3 =L'impostazione <b> Azienda / Fondazione </b> � necessaria perch� le informazioni inserite saranno usate da Dolibarr per le visualizzazioni ed il comportamento (per esempio per le funzioni correlate al tuo paese). +SetupDescription4 =Le impostazioni per i <b> moduli </b> sono necessarie perch� Dolibarr non � un semplice ERP / CRM, ma una somma di diversi moduli, tutti pi� o meno indipendenti. E 'solo dopo aver attivato i moduli che potrai usufruire delle caratteristiche che vedrete apparse nel Dolibarr menu. EventsSetup =Impostazioni di log di eventi LogEvents =Eventi di audit di sicurezza Audit =Audit ListEvents =Audit eventi ListOfSecurityEvents =Elenco degli eventi di sicurezza Dolibarr -LogEventDesc =� possibile attivare il registro di eventi di sicurezza Dolibarr qui. Gli amministratori possono quindi vedere il suo contenuto attraverso <b> dal menu Strumenti di sistema - Audit </b>. Attenzione, questa funzione pu� consumare una grande quantit� di dati nel database. +LogEventDesc =� possibile attivare il registro di eventi di sicurezza Dolibarr qui. Gli amministratori possono quindi vedere il suo contenuto attraverso <b> dal menu Strumenti di sistema - Audit </b>. Attenzione, questa funzione pu� consumare una grande quantit� di dati nel database. AreaForAdminOnly =Tali funzioni possono essere utilizzate solo da utenti di tipo <b> amministratore </b>. Le funzioni per l'amministratore sono facilmente individuabili in Dolibarr grazie alla seguente icona: -SystemInfoDesc =Le informazioni di sistema sono varie informazioni tecniche visibili in modalit� di sola lettura e solo agli amministratori. -SystemAreaForAdminOnly =Questa sezione � disponibile solo agli utenti ti tipo amministratore. Nessuna delle autorizzazioni Dolibarr pu� ridurre questo limite. -CompanyFundationDesc =Modifica in questa pagina tutte le informazioni note della societ� o della fondazione che intendi gestire -DisplayDesc =Qui � possibile scegliere i parametri relativi al Dolibarr look and feel +SystemInfoDesc =Le informazioni di sistema sono varie informazioni tecniche visibili in modalit� di sola lettura e solo agli amministratori. +SystemAreaForAdminOnly =Questa sezione � disponibile solo agli utenti ti tipo amministratore. Nessuna delle autorizzazioni Dolibarr pu� ridurre questo limite. +CompanyFundationDesc =Modifica in questa pagina tutte le informazioni note della societ� o della fondazione che intendi gestire +DisplayDesc =Qui � possibile scegliere i parametri relativi al Dolibarr look and feel TriggersAvailable =Trigger disponibili TriggersDesc =Trigger sono file che modificare il comportamento del flusso di lavoro Dolibarr una volta copiato nella directory <b> htdocs / include / trigger </b>. Hanno realizzato nuove azioni, attivato su Dolibarr eventi (creazione di nuova impresa, fattura di convalida, ...). TriggerDisabledByName =Trigger in questo file sono disattivati da <b>-NoRun </b> suffisso in loro nome. -TriggerDisabledAsModuleDisabled =Trigger in questo file sono disabili come modulo <b> %s </b> � disattivato. +TriggerDisabledAsModuleDisabled =Trigger in questo file sono disabili come modulo <b> %s </b> � disattivato. TriggerAlwaysActive =Trigger in questo file sono attivi, qualunque siano i moduli attivati Dolibarr. -TriggerActiveAsModuleActive =Trigger in questo file sono attivi come modulo <b> %s </b> � abilitato. +TriggerActiveAsModuleActive =Trigger in questo file sono attivi come modulo <b> %s </b> � abilitato. GeneratedPasswordDesc =Definire qui regola che si desidera utilizzare per generare una nuova password se chiedere che la password generata in automatico -DictionnaryDesc =Definire qui tutti i dati di riferimento. � possibile completare il valore predefinito con la tua. +DictionnaryDesc =Definire qui tutti i dati di riferimento. � possibile completare il valore predefinito con la tua. ConstDesc =Questa pagina ti permette di modificare tutti gli altri parametri non sono disponibili nelle pagine precedenti. Essi sono riservati parametri per gli sviluppatori avanzati o per troubleshouting. OnceSetupFinishedCreateUsers =Attenzione, sei un utente amministratore Dolibarr. Gli utenti amministratore sono utilizzati per impostare Dolibarr. Per un uso abituale di Dolibarr, si raccomanda di non utilizzare un utente amministratore ma crearne uno nuovo dal menu utenti e gruppi . MiscellanousDesc =Definire qui tutti gli altri parametri relativi alla sicurezza. LimitsSetup =Limiti / impostazioni di precisione -LimitsDesc =� possibile definire i limiti e la precisione utilizzato da qui Dolibarr +LimitsDesc =� possibile definire i limiti e la precisione utilizzato da qui Dolibarr MAIN_MAX_DECIMALS_UNIT =Max decimali per i prezzi unitari MAIN_MAX_DECIMALS_TOT =Max decimali per il totale dei prezzi MAIN_MAX_DECIMALS_SHOWN =Max decimali per i prezzi indicati sullo schermo (Aggiungi <b>...</b> dopo questo numero se si desidera visualizzare <b>...</b> quando il numero viene troncato quando mostrato sullo schermo) ParameterActiveForNextInputOnly =Parametro efficace solo per il prossimo inserimento -NoEventOrNoAuditSetup =Nessun evento di sicurezza � stato ancora registrato. Questo pu� essere un normale controllo se non � stato attivato sulla pagina "Impostazioni - sicurezza - controllo". -NoEventFoundWithCriteria =Nessun evento di sicurezza � stato trovato per la ricerca di tali criteri. +NoEventOrNoAuditSetup =Nessun evento di sicurezza � stato ancora registrato. Questo pu� essere un normale controllo se non � stato attivato sulla pagina "Impostazioni - sicurezza - controllo". +NoEventFoundWithCriteria =Nessun evento di sicurezza � stato trovato per la ricerca di tali criteri. ##### Users setup ##### UserGroupSetup =Impostazioni utenti e gruppi @@ -605,17 +608,17 @@ DisableForgetPasswordLinkOnLogonPage =Non mostrare il link "Hai dimentica ##### Company setup ##### CompanySetup =Impostazioni modulo aziende CompanyCodeChecker =Modulo per la generazione e verifica dei codici di terzi (cliente o fornitore) -AccountCodeManager =Modulo per la generazione di codice di contabilit� (cliente o fornitore) +AccountCodeManager =Modulo per la generazione di codice di contabilit� (cliente o fornitore) ModuleCompanyCodeAquarium =Restituisce di un codice contabile costruito da "401" seguito dal codice del fornitore terzo per un codice contabile fornitori, e "411" seguito dal codice del cliente terzo per un codice contabile cliente. ModuleCompanyCodePanicum =Restituisce un codice contabile vuoto. -ModuleCompanyCodeDigitaria =Contabilit� codice dipende dal codice di terze parti. Il codice � composto di carattere "C" nella prima posizione seguita da i primi 5 caratteri del codice di terze parti. +ModuleCompanyCodeDigitaria =Contabilit� codice dipende dal codice di terze parti. Il codice � composto di carattere "C" nella prima posizione seguita da i primi 5 caratteri del codice di terze parti. UseNotifications =Utilizzare le notifiche NotificationsDesc =Notifiche funzione consente di inviare in silenzio automatico della posta, per alcuni Dolibarr eventi, alle imprese che sono configurati per ##### Webcal setup ##### WebCalSetup =Impostazioni collegamento Webcalendar WebCalSyncro =Aggiungi Dolibarr eventi di WebCalendar WebCalAllways =Tutti i giorni, non chiedendo -WebCalYesByDefault =Su richiesta (s� per impostazione predefinita) +WebCalYesByDefault =Su richiesta (s� per impostazione predefinita) WebCalNoByDefault =Su richiesta (non di default) WebCalNever =Mai WebCalURL =URL di accesso per il calendario @@ -626,15 +629,15 @@ WebCalSetupSaved =Webcalendar setup salvato con successo. WebCalTestOk =Connessione al server ' %s' sulla base di dati' %s' con l'utente ' %s' successo. WebCalTestKo1 =Connessione al server ' %s' successo, ma il database' %s' non poteva essere raggiunto. WebCalTestKo2 =Connessione al server ' %s' con l'utente' %s' fallito. -WebCalErrorConnectOkButWrongDatabase =Connessione dati � riuscito, ma non cercare di essere un Webcalendar database. +WebCalErrorConnectOkButWrongDatabase =Connessione dati � riuscito, ma non cercare di essere un Webcalendar database. WebCalAddEventOnCreateActions =Aggiungi evento in calendario creare azioni WebCalAddEventOnCreateCompany =Aggiungi evento di calendario per le imprese creare WebCalAddEventOnStatusPropal =Aggiungi evento in calendario commerciale proposte stato cambiamento WebCalAddEventOnStatusContract =Aggiungi il calendario evento sui contratti cambiamento di stato WebCalAddEventOnStatusBill =Aggiungi evento in calendario fatture cambiamento di stato WebCalAddEventOnStatusMember =Aggiungi evento in calendario membri cambiamento di stato -WebCalUrlForVCalExport =Un link per l'esportazione <b> %s </b> � disponibile al seguente link: %s -WebCalCheckWebcalSetup =Forse il webcal modulo di impostazione non � corretta. +WebCalUrlForVCalExport =Un link per l'esportazione <b> %s </b> � disponibile al seguente link: %s +WebCalCheckWebcalSetup =Forse il webcal modulo di impostazione non � corretta. ##### Invoices ##### BillsSetup =Impostazioni modulo fatture BillsDate =Data fatture @@ -646,8 +649,8 @@ CreditNote =Nota di credito CreditNotes =Note di credito ForceInvoiceDate =Forza alla data della fattura la data di convalida DisableRepeatable =Disattiva fattura ripetibile -SuggestedPaymentModesIfNotDefinedInInvoice =Suggerire le modalit� predefinite di pagamento delle fatture, se non gi� definite per la fattura -EnableEditDeleteValidInvoice =Attiva la possibilit� di modificare / cancellare una fattura valida senza pagamento +SuggestedPaymentModesIfNotDefinedInInvoice =Suggerire le modalit� predefinite di pagamento delle fatture, se non gi� definite per la fattura +EnableEditDeleteValidInvoice =Attiva la possibilit� di modificare / cancellare una fattura valida senza pagamento SuggestPaymentByRIBOnAccount =Suggerire il pagamento su conto bancario utilizzando le coordinate bancarie del conto SuggestPaymentByChequeToAddress =Suggerire il pagamento mediante assegno a FreeLegalTextOnInvoices =Testo libero su fatture @@ -663,9 +666,9 @@ ProposalsPDFModules =Modelli di documenti per la proposta commerciale ClassifiedInvoiced =Classificati fatturati ClassifiedInvoicedWithOrder =Classifica proposta fatturata nello stesso momento dell'ordine HideTreadedPropal =Nascondi proposte commerciali trattate nella lista -AddShippingDateAbility =Aggiungi la possibilit� di inserire la data di spedizione -AddDeliveryAddressAbility =Aggiungi la possibilit� di inserire la data di consegna -UseOptionLineIfNoQuantity =Una linea di prodotto / servizio con un importo pari a zero � considerato come una opzione +AddShippingDateAbility =Aggiungi la possibilit� di inserire la data di spedizione +AddDeliveryAddressAbility =Aggiungi la possibilit� di inserire la data di consegna +UseOptionLineIfNoQuantity =Una linea di prodotto / servizio con un importo pari a zero � considerato come una opzione FreeLegalTextOnProposal =Testo libero su proposte commerciali WatermarkOnDraftProposal =Filigrana sulle bozze di proposte commerciali (nessuna se vuota) ##### Orders ##### @@ -682,7 +685,7 @@ TemplatePDFInterventions =Intervento modelli di carta di documenti WatermarkOnDraftInterventionCards =Filigrana su carta di documenti d'intervento (se qualsiasi vuoto) ##### Clicktodial ##### ClickToDialSetup =Impostazioni modulo ClickToDial (clic per telefonare) -ClickToDialUrlDesc =Url chiamata quando un clic sul telefono picto � fatto. Dans l'url, vous pouvez utiliser les balises<br><b>%%1$s</b> qui sera remplac� par le t�l�phone de l'appel�<br><b>%%2$s</b> qui sera remplac� par le t�l�phone de l'appelant (le votre)<br><b>%%3$s</b> qui sera remplac� par votre login clicktodial (d�fini sur votre fiche utilisateur)<br><b>%%4$s</b> qui sera remplac� par votre mot de passe clicktodial (d�fini sur votre fiche utilisateur). +ClickToDialUrlDesc =Url chiamata quando un clic sul telefono picto � fatto. Dans l'url, vous pouvez utiliser les balises<br><b>%%1$s</b> qui sera remplac� par le t�l�phone de l'appel�<br><b>%%2$s</b> qui sera remplac� par le t�l�phone de l'appelant (le votre)<br><b>%%3$s</b> qui sera remplac� par votre login clicktodial (d�fini sur votre fiche utilisateur)<br><b>%%4$s</b> qui sera remplac� par votre mot de passe clicktodial (d�fini sur votre fiche utilisateur). ##### Bookmark4u ##### Bookmark4uSetup =Impostazioni modulo Bookmark4u ##### Interventions ##### @@ -762,8 +765,8 @@ LDAPBindOK =Collegare / Authentificate al server LDAP di successo (Ser LDAPBindKO =Collegare / Authentificate al server LDAP non riuscita (Server LDAPUnbindSuccessfull =Scollegare successo LDAPUnbindFailed =Scollegare non -LDAPConnectToDNSuccessfull =Connessione al DN ( %s) ri �� ussie -LDAPConnectToDNFailed =Connessione al DN ( %s) �� � �� chou� e +LDAPConnectToDNSuccessfull =Connessione al DN ( %s) ri �� ussie +LDAPConnectToDNFailed =Connessione al DN ( %s) �� � �� chou� e LDAPSetupForVersion3 =Server LDAP configurato per la versione 3 LDAPSetupForVersion2 =Server LDAP configurato per la versione 2 LDAPDolibarrMapping =Mappatura Dolibarr @@ -800,7 +803,7 @@ LDAPFieldAddress =Street LDAPFieldAddressExample =Esempio: strada LDAPFieldZip =Zip LDAPFieldZipExample =Esempio: postalcode -LDAPFieldTown =Citt� +LDAPFieldTown =Citt� LDAPFieldTownExample =Esempio: l LDAPFieldCountry =Paese LDAPFieldCountryExample =Esempio: c @@ -808,14 +811,14 @@ LDAPFieldDescription =Descrizione LDAPFieldDescriptionExample =Esempio: descrizione LDAPFieldBirthdate =Data di nascita LDAPFieldBirthdateExample =Esempio: -LDAPFieldCompany =Societ� +LDAPFieldCompany =Societ� LDAPFieldCompanyExample =Esempio: o LDAPFieldSid =SID LDAPFieldSidExample =Esempio: objectSid LDAPFieldEndLastSubscription =Data di fine abbonamento LDAPParametersAreStillHardCoded =LDAP parametri sono ancora hardcoded (a contatto classe) LDAPSetupNotComplete =Impostazione LDAP non completo (vai su altre schede) -LDAPNoUserOrPasswordProvidedAccessIsReadOnly =Nessun amministratore o la password forniti. LDAP accesso saranno anonime e in modalit� di sola lettura. +LDAPNoUserOrPasswordProvidedAccessIsReadOnly =Nessun amministratore o la password forniti. LDAP accesso saranno anonime e in modalit� di sola lettura. LDAPDescContact =Questa pagina consente di definire gli attributi LDAP LDAP nel nome di albero per ogni dati disponibili sul Dolibarr contatti. LDAPDescUsers =Questa pagina consente di definire gli attributi LDAP LDAP nel nome di albero per ogni dati disponibili sul Dolibarr utenti. LDAPDescGroups =Questa pagina consente di definire gli attributi LDAP LDAP nel nome di albero per ogni dati disponibili sul Dolibarr gruppi. @@ -839,7 +842,7 @@ SyslogFacility =Facility SyslogLevel =Livello SyslogSimpleFile =File SyslogFilename =Nome file e percorso -ErrorUnknownSyslogConstant =Costante %s non � un noto syslog costante +ErrorUnknownSyslogConstant =Costante %s non � un noto syslog costante ##### Donations ##### DonationsSetup =Impostazioni modulo Donazione ##### Barcode ##### @@ -871,7 +874,7 @@ NotificationEMailFrom =Mittente e-mail (Da) per le email inviate per le SendingsSetup =Impostazione del modulo di consegna SendingsReceiptModel =Modello di ricevuta consegna (D.D.T. ex bolla?) SendingsAbility =Supporto per fogli di consegna per le spedizioni ai clienti -NoNeedForDeliveryReceipts =Nella maggior parte dei casi, le spedizioni entrate sono utilizzate sia come fogli di consegne per il cliente (elenco dei prodotti per l'invio) e fogli che � recevied e firmata dal cliente. Quindi, le consegne ricevute prodotto � un duplicato caratteristica e raramente � attivato. +NoNeedForDeliveryReceipts =Nella maggior parte dei casi, le spedizioni entrate sono utilizzate sia come fogli di consegne per il cliente (elenco dei prodotti per l'invio) e fogli che � recevied e firmata dal cliente. Quindi, le consegne ricevute prodotto � un duplicato caratteristica e raramente � attivato. ##### Deliveries ##### DeliveryOrderNumberingModules =Prodotti consegne ricevimento del modulo di numerazione DeliveryOrderModel =Prodotti consegne ricevimento modello @@ -879,14 +882,14 @@ DeliveriesOrderAbility =Supporto prodotti consegne ricevute ##### FCKeditor ##### ActivateFCKeditor =Attiva FCKeditor per: FCKeditorForUsers =WYSIWIG creazione / edizione di utenti 'alla designazione e alla nota -FCKeditorForCompany =WYSIWIG creazione / edizione di societ� 'alla designazione e alla nota +FCKeditorForCompany =WYSIWIG creazione / edizione di societ� 'alla designazione e alla nota FCKeditorForProduct =WYSIWIG creazione / edizione di prodotti / servizi 'alla designazione e alla nota FCKeditorForMembers =WYSIWIG creazione / edizione dei membri 'descrizione e nota FCKeditorForProductDetails =WYSIWIG creazione / edizione di prodotti di dettagli le linee per tutti i soggetti (proposte, ordini, fatture, ecc ..) FCKeditorForProductDetailsPerso =WYSIWIG creazione / edizione di prodotti di dettagli personalizzati linee per tutti i soggetti (proposte, ordini, fatture, ecc ..) FCKeditorForMailing =WYSIWIG creazione / edizione di invii ##### OSCommerce 1 ##### -OSCommerceErrorConnectOkButWrongDatabase =Connessione dati � riuscito, ma non cercare di essere un database di osCommerce. +OSCommerceErrorConnectOkButWrongDatabase =Connessione dati � riuscito, ma non cercare di essere un database di osCommerce. OSCommerceTestOk =Connessione al server ' %s' sulla base di dati' %s' con l'utente ' %s' successo. OSCommerceTestKo1 =Connessione al server ' %s' successo, ma il database' %s' non poteva essere raggiunto. OSCommerceTestKo2 =Connessione al server ' %s' con l'utente' %s' fallito. @@ -900,7 +903,7 @@ MantisSetupSaved =Mantis setup salvato con successo. MantisTestOk =Connessione al server ' %s' sulla base di dati' %s' con l'utente ' %s' successo. MantisTestKo1 =Connessione al server ' %s' successo, ma il database' %s' non poteva essere raggiunto. MantisTestKo2 =Connessione al server ' %s' con l'utente' %s' fallito. -MantisErrorConnectOkButWrongDatabase =Connessione dati � riuscito, ma non cercare di essere un database di Mantis. +MantisErrorConnectOkButWrongDatabase =Connessione dati � riuscito, ma non cercare di essere un database di Mantis. ##### Stock ##### StockSetup =Configurazione del modulo di magazzino UserWarehouse =Usa utente stock personali @@ -933,11 +936,11 @@ DeleteLine =Elimina riga ConfirmDeleteLine =Sei sicuro di voler eliminare questa riga ? ##### Tax ##### TaxSetup =Taxes, social contributions and dividends module setup -OptionVatMode =Option d'exigibilit� de TVA +OptionVatMode =Option d'exigibilit� de TVA OptionVATDefault =Standard OptionVATDebitOption =Option services sur debit -OptionVatDefaultDesc =L'exigibilit� de la TVA est:<br>- sur livraison pour les biens<br>- sur paiement pour les services -OptionVatDebitOptionDesc =L'exigibilit� de la TVA est:<br>- sur livraison pour les biens<br>- sur facturation (d�bit) pour les services +OptionVatDefaultDesc =L'exigibilit� de la TVA est:<br>- sur livraison pour les biens<br>- sur paiement pour les services +OptionVatDebitOptionDesc =L'exigibilit� de la TVA est:<br>- sur livraison pour les biens<br>- sur facturation (d�bit) pour les services ##### Agenda ##### AgendaSetup =Actions and agenda module setup PasswordTogetVCalExport =Key to authorize export link @@ -967,25 +970,25 @@ UMask=Parametro umask per i nuovi file su Unix / Linux / BSD file di sistema. UMaskExplanation=Questo parametro consente di definire i permessi impostati di default per i file creati da Dolibarr sul server (per esempio durante il caricamento). <br> Esso deve essere il valore ottale (per esempio, 0.666 mezzi di lettura e scrittura per tutti). <br> Ce ne paramtre insert pas sous un server Windows. Module50100Name=Cassa Module50100Desc=Cassa modulo -VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:<br>If the seller is subjected to VAT, then VAT by default=0. End of rule.<br>If the (selling country = buying country), then the VAT by default=VAT of the product in the selling country. End of rule. <br>If seller and buyer in the European Community and goods are sold having new means of transport (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.<br>If seller and buyer in the European Community and goods sold by other means rather than new means of transport, then the VAT by default=VAT of product sold. End of rule.<br>Else the proposed default VAT=L'aliquota IVA per impostazione predefinita durante la creazione di prospettive, fatture, ordini, ecc seguire la regola standard attivi: <br> Se il venditore � soggetto ad IVA, quindi l'IVA di default = 0. Fine della regola. <br> Se la (vendita paese = paese di acquisto), quindi l'IVA di default = IVA del prodotto nel paese di vendita. Fine della regola. <br> Se il venditore e l'acquirente nella Comunit� europea e le merci sono vendute avere nuovi mezzi di trasporto (auto, nave, aereo), il default IVA = 0 (L'IVA deve essere pagato dal compratore al customoffice del suo paese e non a carico del venditore ). Fine della regola. <br> Se il venditore e l'acquirente nella Comunit� europea e dei beni venduti da altri mezzi, piuttosto che i nuovi mezzi di trasporto, quindi l'IVA di default = IVA del prodotto venduto. Fine della regola. <br> Altre proposte di default IVA = 1. Fine della regola. +VATIsUsedDesc=The VAT rate by default when creating prospects, invoices, orders etc follow the active standard rule:<br>If the seller is subjected to VAT, then VAT by default=0. End of rule.<br>If the (selling country = buying country), then the VAT by default=VAT of the product in the selling country. End of rule. <br>If seller and buyer in the European Community and goods are sold having new means of transport (car, ship, plane), the default VAT=0 ( The VAT should be paid by the buyer at the customoffice of his country and not at the seller). End of rule.<br>If seller and buyer in the European Community and goods sold by other means rather than new means of transport, then the VAT by default=VAT of product sold. End of rule.<br>Else the proposed default VAT=L'aliquota IVA per impostazione predefinita durante la creazione di prospettive, fatture, ordini, ecc seguire la regola standard attivi: <br> Se il venditore � soggetto ad IVA, quindi l'IVA di default = 0. Fine della regola. <br> Se la (vendita paese = paese di acquisto), quindi l'IVA di default = IVA del prodotto nel paese di vendita. Fine della regola. <br> Se il venditore e l'acquirente nella Comunit� europea e le merci sono vendute avere nuovi mezzi di trasporto (auto, nave, aereo), il default IVA = 0 (L'IVA deve essere pagato dal compratore al customoffice del suo paese e non a carico del venditore ). Fine della regola. <br> Se il venditore e l'acquirente nella Comunit� europea e dei beni venduti da altri mezzi, piuttosto che i nuovi mezzi di trasporto, quindi l'IVA di default = IVA del prodotto venduto. Fine della regola. <br> Altre proposte di default IVA = 1. Fine della regola. UpdateRequired=Your system needs to be updated. To do this, click on <a href=Il sistema deve essere aggiornato. Per effettuare questa operazione, fare clic su <a href="%s">Aggiorna ora.</a> AvailableModules=Moduli disponibili ToActivateModule=Per attivare i moduli, andare su Setup. SessionTimeOut=Tempo per sessione -SessionExplanation=Questo numero di garanzia che non sar� mai sessione scade prima di questo ritardo. Ma PHP sessoin di gestione non � sempre garanzia che sessione scade dopo questo ritardo: Questo si verifica se un sistema per la pulizia della cache di sessione � in esecuzione. <br> Nota: con particolare sistema interno PHP processo pulito ogni sessione <b>su% s /% s</b> di accesso, ma solo durante l'accesso da altre sessioni. +SessionExplanation=Questo numero di garanzia che non sar� mai sessione scade prima di questo ritardo. Ma PHP sessoin di gestione non � sempre garanzia che sessione scade dopo questo ritardo: Questo si verifica se un sistema per la pulizia della cache di sessione � in esecuzione. <br> Nota: con particolare sistema interno PHP processo pulito ogni sessione <b>su% s /% s</b> di accesso, ma solo durante l'accesso da altre sessioni. MAIN_DISABLE_PDF_COMPRESSION=PDF Usa la compressione per i file PDF generati. SeeLocalSendMailSetup=Consultare il locale di installazione di sendmail PasswordGenerationStandard=Torna una password generata in base al Dolibarr algoritmo interno: 8 caratteri contenenti condivisa numeri e caratteri in minuscolo. PasswordGenerationNone=Non suggerire eventuali password generata. La password deve essere di tipo manuale. -ClickToDialUrlDesc=Url called when a click on phone picto is done.<br>Complete url will be: URL?login=...&password=...&caller=...&called=Url chiamata quando un clic sul telefono cellulare picto � fatto. <br> URL completo sar�: URL?login=...&password=...&caller=...&called=phonecalled -MemberSendInformationByMailByDefault=Checkbox per inviare una mail di conferma per i membri � attivata per impostazione predefinita -LDAPAdminDnExample=Complete DN (ex: cn=adminldap,dc=society,dc=DN completo (ad esempio: cn = adminldap, dc = societ�, dc = it) -LDAPUserDnExample=Complete DN (ex: ou=users,dc=society,dc=DN completo (es: ou = utenti, dc = societ�, dc = it) -LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=society,dc=DN completo (es: ou = gruppo, dc = societ�, dc = it) +ClickToDialUrlDesc=Url called when a click on phone picto is done.<br>Complete url will be: URL?login=...&password=...&caller=...&called=Url chiamata quando un clic sul telefono cellulare picto � fatto. <br> URL completo sar�: URL?login=...&password=...&caller=...&called=phonecalled +MemberSendInformationByMailByDefault=Checkbox per inviare una mail di conferma per i membri � attivata per impostazione predefinita +LDAPAdminDnExample=Complete DN (ex: cn=adminldap,dc=society,dc=DN completo (ad esempio: cn = adminldap, dc = societ�, dc = it) +LDAPUserDnExample=Complete DN (ex: ou=users,dc=society,dc=DN completo (es: ou = utenti, dc = societ�, dc = it) +LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=society,dc=DN completo (es: ou = gruppo, dc = societ�, dc = it) LDAPServerDnExample=Complete DN (ex: dc=company,dc=DN completo (ad esempio: dc = azienda, dc = it) -LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=DN completo (es: ou = contatti, dc = societ�, dc = it) -LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=DN completo (es: ou = membri, dc = societ�, dc = it) -LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=society,dc=DN completo (es: ou = type_members, dc = societ�, dc = it) +LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=DN completo (es: ou = contatti, dc = societ�, dc = it) +LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=DN completo (es: ou = membri, dc = societ�, dc = it) +LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=society,dc=DN completo (es: ou = type_members, dc = societ�, dc = it) LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=TCP connettersi a server LDAP di successo (= Server% s, Port =% s) LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=TCP connettersi a server LDAP fallito (% s = Server, Port =% s) LDAPBindOK=Connect/Authentificate to LDAP server sucessfull (Server=%s, Port=%s, Admin=%s, Password=Collegare / Authentificate al server LDAP successo (= Server% s, Port =% s,% s = Admin, password =% s) diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index 350ed181611e80b2eea98795ea3dd3ec3f21c2f0..3f14d039efbe1ab7bb0469c44cbd1f0748a76d41 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -323,11 +323,10 @@ Permission24=Godkjenne tilbud Permission25=Sende tilbud Permission26=Lukke tilbud Permission27=Slette tilbud -Permission31=Vise produkter/tjenester -Permission32=Lage/endre produkter/tjenester -Permission33=Command produkter/tjenester -Permission34=Slette produkter/tjenester -Permission36=Eksportere produkter/tjenester +Permission31=Vise produkter +Permission32=Lage/endre produkter +Permission34=Slette produkter +Permission38=Eksportere produkter Permission41=Vise prosjekter Permission42=Lage/endre prosjekter Permission44=Slette prosjekter @@ -422,6 +421,10 @@ Permission401=Vise rabatter Permission402=Lage/endre rabatter Permission403=Godkjenne rabatter Permission404=Slette rabatter +Permission31=Vise tjenester +Permission32=Lage/endre tjenester +Permission34=Slette tjenester +Permission38=Eksportere tjenester Permission700=Vise donasjoner Permission701=Lage/endre donasjoner Permission702=Slette donasjoner diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 0e56ae1258cd37c5539fd4012c3304b97330579b..b492c777d26722e48c420169c0f196b725600c0a 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -1397,6 +1397,10 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='', { if (! $user->rights->societe->contact->lire) $readok=0; } + else if ($feature == 'produit|service') + { + if (! $user->rights->produit->lire && ! $user->rights->service->lire) $readok=0; + } else if ($feature == 'prelevement') { if (! $user->rights->prelevement->bons->lire) $readok=0; @@ -1440,6 +1444,10 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='', { if (! $user->rights->societe->contact->creer) $createok=0; } + else if ($feature == 'produit|service') + { + if (! $user->rights->produit->creer && ! $user->rights->service->creer) $createok=0; + } else if ($feature == 'prelevement') { if (! $user->rights->prelevement->bons->creer) $createok=0; @@ -1479,7 +1487,7 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='', if (empty($dbtablename)) $dbtablename = $feature; // Check permission for object with entity - if ($feature == 'user' || $feature == 'usergroup' || $feature == 'produit') + if ($feature == 'user' || $feature == 'usergroup' || $feature == 'produit' || $feature == 'service' || $feature == 'produit|service') { $sql = "SELECT dbt.".$dbt_select; $sql.= " FROM ".MAIN_DB_PREFIX.$dbtablename." as dbt"; diff --git a/htdocs/livraison/fiche.php b/htdocs/livraison/fiche.php index 2f9c8e56a2787c218d58d20a39d8bcf0c6614b38..7d6af0a1a42ee4f586c0dc31989e6e21f79de85c 100644 --- a/htdocs/livraison/fiche.php +++ b/htdocs/livraison/fiche.php @@ -31,7 +31,7 @@ require("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/livraison/modules_livraison.php"); require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/lib/sendings.lib.php"); -if ($conf->produit->enabled) require_once(DOL_DOCUMENT_ROOT."/product.class.php"); +if ($conf->produit->enabled || $conf->service->enabled) require_once(DOL_DOCUMENT_ROOT."/product.class.php"); if ($conf->expedition_bon->enabled) require_once(DOL_DOCUMENT_ROOT."/expedition/expedition.class.php"); if ($conf->stock->enabled) require_once(DOL_DOCUMENT_ROOT."/product/stock/entrepot.class.php"); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index ad20b399bc887f4d8aa3bf37eb215df5a2a3cd3e..b71a553619c4b7515ebd907f2beb58f291d66a9b 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -925,7 +925,8 @@ function left_menu($menu_array, $helppagename='', $moresearchform='') img_object('','contact').' '.$langs->trans("Contacts"), 'contact', 'contactname'); } - if (($conf->produit->enabled || $conf->service->enabled) && $conf->global->MAIN_SEARCHFORM_PRODUITSERVICE && $user->rights->produit->lire) + if ((($conf->produit->enabled && $user->rights->produit->lire) || ($conf->service->enabled && $user->rights->service->lire)) + && $conf->global->MAIN_SEARCHFORM_PRODUITSERVICE) { $langs->load("products"); $searchform.=printSearchForm(DOL_URL_ROOT.'/product/liste.php', DOL_URL_ROOT.'/product/index.php', diff --git a/htdocs/oscommerce_ws/clients/fiche.php b/htdocs/oscommerce_ws/clients/fiche.php index bd37ee16b185124f775068a905bc6c98b4e5c795..51929f794172f95aa44186e4864fc5f7940109ce 100644 --- a/htdocs/oscommerce_ws/clients/fiche.php +++ b/htdocs/oscommerce_ws/clients/fiche.php @@ -29,148 +29,147 @@ llxHeader(); if ($action == '' && !$cancel) { - if ($_GET['custid']) - { - $osc_cust = new Osc_customer($db, $_GET['custid']); - $result = $osc_cust->fetch($_GET['custid']); - - if ( !$result) - { - print '<div class="titre">Fiche client OSC : '.$osc_cust->osc_custfirstname.' '.$osc_cust->osc_custlastname.'</div><br>'; - - print '<table border="1" width="100%" cellspacing="0" cellpadding="4">'; - print '<tr></tr><td width="20%">Ville</td><td width="80%">'.$osc_cust->osc_custcity.'</td></tr>'; - print '<tr></tr><td width="20%">Pays</td><td width="80%">'.$osc_cust->osc_custcountry.'</td></tr>'; - print '<tr></tr><td width="20%">Id OSC</td><td width="80%">'.$osc_cust->osc_custid.'</td></tr>'; - print '<tr></tr><td width="20%">T�l�phone</td><td width="80%">'.$osc_cust->osc_custtel.'</td></tr>'; - print '<tr></tr><td width="20%">E-mail</td><td width="80%">'.$osc_cust->osc_custmail.'</td></tr>'; - print "</table>"; - - /* ************************************************************************** */ - /* */ - /* Barre d'action */ - /* */ - /* ************************************************************************** */ - print "\n<div class=\"tabsAction\">\n"; + if ($_GET['custid']) + { + $osc_cust = new Osc_customer($db, $_GET['custid']); + $result = $osc_cust->fetch($_GET['custid']); + + if ( !$result) + { + print '<div class="titre">Fiche client OSC : '.$osc_cust->osc_custfirstname.' '.$osc_cust->osc_custlastname.'</div><br>'; + + print '<table border="1" width="100%" cellspacing="0" cellpadding="4">'; + print '<tr></tr><td width="20%">Ville</td><td width="80%">'.$osc_cust->osc_custcity.'</td></tr>'; + print '<tr></tr><td width="20%">Pays</td><td width="80%">'.$osc_cust->osc_custcountry.'</td></tr>'; + print '<tr></tr><td width="20%">Id OSC</td><td width="80%">'.$osc_cust->osc_custid.'</td></tr>'; + print '<tr></tr><td width="20%">T�l�phone</td><td width="80%">'.$osc_cust->osc_custtel.'</td></tr>'; + print '<tr></tr><td width="20%">E-mail</td><td width="80%">'.$osc_cust->osc_custmail.'</td></tr>'; + print "</table>"; + + /* ************************************************************************** */ + /* */ + /* Barre d'action */ + /* */ + /* ************************************************************************** */ + print "\n<div class=\"tabsAction\">\n"; if ( $user->rights->societe->creer) { - print '<a class="butAction" href="fiche.php?action=import&custid='.$osc_cust->osc_custid.'">'.$langs->trans("Import").'</a>'; - } - print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; - print "\n</div><br>\n"; -// seule action importer - + print '<a class="butAction" href="fiche.php?action=import&custid='.$osc_cust->osc_custid.'">'.$langs->trans("Import").'</a>'; + } + print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; + print "\n</div><br>\n"; + // seule action importer + + } + else + { + print "\n<div class=\"tabsAction\">\n"; + print "<p>ERROR 1c</p>\n"; + dol_print_error('',"erreur webservice ".$osc_cust->error); + print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; + print "\n</div><br>\n"; + } } - else + else { - print "\n<div class=\"tabsAction\">\n"; - print "<p>ERROR 1c</p>\n"; - dol_print_error('',"erreur webservice ".$osc_cust->error); - print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; + print "\n<div class=\"tabsAction\">\n"; + print "<p>ERROR 1b</p>\n"; + print "Error"; + print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; print "\n</div><br>\n"; } - } - else - { - print "\n<div class=\"tabsAction\">\n"; - print "<p>ERROR 1b</p>\n"; - print "Error"; - print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; - print "\n</div><br>\n"; - } } -/* action Import cr�ation de l'objet product de dolibarr -* -*/ - if (($_GET["action"] == 'import' ) && ( $_GET["custid"] != '' ) && $user->rights->produit->creer) - { - $osc_cust = new Osc_customer($db, $_GET['custid']); - $result = $osc_cust->fetch($_GET['custid']); - - if ( !$result ) - { - $societe = new Societe($db); - if ($_error == 1) - { - - print "\n<div class=\"tabsAction\">\n"; - print '<br>erreur 1</br>'; - print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; - print "\n</div><br>\n"; - } - - /* initialisation */ - $societe->nom = $osc_cust->osc_custsoc.' '.$osc_cust->osc_custlastname; - $societe->adresse = $osc_cust->osc_cutstreet; - $societe->cp = $osc_cust->osc_custpostcode; - $societe->ville = $osc_cust->osc_custcity; - $societe->departement_id = 0; - $societe->pays_code = $osc_cust->osc_custcodecountry; - $societe->tel = $osc_cust->osc_custtel; - $societe->fax = $osc_cust->osc_custfax; - $societe->email = $osc_cust->osc_custmail; - /* on force */ - $societe->url = ''; - $societe->siren = ''; - $societe->siret = ''; - $societe->ape = ''; - $societe->client = 1; // mettre 0 si prospect - } - -/* utilisation de la table de transco*/ - if ($osc_cust->get_clientid($osc_cust->osc_custid)>0) + +/* action Import creation de l'objet product de dolibarr + */ +if (($_GET["action"] == 'import' ) && ( $_GET["custid"] != '' ) && ($user->rights->produit->creer || $user->rights->service->creer)) +{ + $osc_cust = new Osc_customer($db, $_GET['custid']); + $result = $osc_cust->fetch($_GET['custid']); + + if ( !$result ) + { + $societe = new Societe($db); + if ($_error == 1) { print "\n<div class=\"tabsAction\">\n"; - print '<p>Ce client existe d�j� mise � jour � pr�voir</p>'; + print '<br>erreur 1</br>'; print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; print "\n</div><br>\n"; } - else { - $id = $societe->create($user); - - if ($id == 0) - { - print "\n<div class=\"tabsAction\">\n"; - print '<p>cr�ation r�ussie nouveau client/prospect : '.$societe->nom; - $res = $osc_cust->transcode($osc_cust->osc_custid,$societe->id); - print ' : Id Dolibarr '.$societe->id.' , Id osc : '.$osc_cust->osc_custid.'</p>'; - print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; - print "\n</div><br>\n"; - } - else - { - if ($id == -3) - { - $_error = 1; - $_GET["action"] = "create"; - $_GET["type"] = $_POST["type"]; - } - if ($id == -2) + + /* initialisation */ + $societe->nom = $osc_cust->osc_custsoc.' '.$osc_cust->osc_custlastname; + $societe->adresse = $osc_cust->osc_cutstreet; + $societe->cp = $osc_cust->osc_custpostcode; + $societe->ville = $osc_cust->osc_custcity; + $societe->departement_id = 0; + $societe->pays_code = $osc_cust->osc_custcodecountry; + $societe->tel = $osc_cust->osc_custtel; + $societe->fax = $osc_cust->osc_custfax; + $societe->email = $osc_cust->osc_custmail; + /* on force */ + $societe->url = ''; + $societe->siren = ''; + $societe->siret = ''; + $societe->ape = ''; + $societe->client = 1; // mettre 0 si prospect + } + + /* utilisation de la table de transco*/ + if ($osc_cust->get_clientid($osc_cust->osc_custid)>0) + { + print "\n<div class=\"tabsAction\">\n"; + print '<p>Ce client existe d�j� mise � jour � pr�voir</p>'; + print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; + print "\n</div><br>\n"; + } + else { + $id = $societe->create($user); + + if ($id == 0) + { + print "\n<div class=\"tabsAction\">\n"; + print '<p>cr�ation r�ussie nouveau client/prospect : '.$societe->nom; + $res = $osc_cust->transcode($osc_cust->osc_custid,$societe->id); + print ' : Id Dolibarr '.$societe->id.' , Id osc : '.$osc_cust->osc_custid.'</p>'; + print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; + print "\n</div><br>\n"; + } + else + { + if ($id == -3) + { + $_error = 1; + $_GET["action"] = "create"; + $_GET["type"] = $_POST["type"]; + } + if ($id == -2) + { + /* la r�f�rence existe on fait un update */ + $societe_control = new Societe($db); + if ($_error == 1) { - /* la r�f�rence existe on fait un update */ - $societe_control = new Societe($db); - if ($_error == 1) - { - print "\n<div class=\"tabsAction\">\n"; - print '<br>erreur 1</br>'; - print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; + print "\n<div class=\"tabsAction\">\n"; + print '<br>erreur 1</br>'; + print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; print "\n</div><br>\n"; - } - $idp = $societe_control->fetch($socid = $osc_cust->osc_ref); - - if ($idp > 0) - { - $res = $societe->update($idp, $user); - if ($res < 0) print '<br>Erreur update '.$idp.'</br>'; - $res = $osc_cust->transcode($osc_cust->custid,$idp ); - if ($res < 0) print '<br>Erreur update '.$idp.'</br>'; - } - else print '<br>update impossible $id : '.$idp.' </br>'; } - } - } - - } + $idp = $societe_control->fetch($socid = $osc_cust->osc_ref); + + if ($idp > 0) + { + $res = $societe->update($idp, $user); + if ($res < 0) print '<br>Erreur update '.$idp.'</br>'; + $res = $osc_cust->transcode($osc_cust->custid,$idp ); + if ($res < 0) print '<br>Erreur update '.$idp.'</br>'; + } + else print '<br>update impossible $id : '.$idp.' </br>'; + } + } + } + +} llxFooter('$Date$ - $Revision$'); ?> diff --git a/htdocs/oscommerce_ws/produits/fiche.php b/htdocs/oscommerce_ws/produits/fiche.php index 9a6e9215c4ae6f7eff58cc22eab474322c036a41..914231190b65f317d76d65a0233017bfe5b14517 100644 --- a/htdocs/oscommerce_ws/produits/fiche.php +++ b/htdocs/oscommerce_ws/produits/fiche.php @@ -50,19 +50,20 @@ if ($action == '' && !$cancel) { /* ************************************************************************** */ print "\n<div class=\"tabsAction\">\n"; - if ( $user->rights->produit->creer) { - print '<a class="butAction" href="fiche.php?action=import&id='.$osc_prod->osc_id.'">'.$langs->trans("Import").'</a>'; - } + if ($user->rights->produit->creer || $user->rights->service->creer) + { + print '<a class="butAction" href="fiche.php?action=import&id='.$osc_prod->osc_id.'">'.$langs->trans("Import").'</a>'; + } - print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; - print "\n</div><br>\n"; - // seule action importer + print '<a class="butAction" href="index.php">'.$langs->trans("Retour").'</a>'; + print "\n</div><br>\n"; + // seule action importer } else { - print "<p>ERROR 1</p>\n"; - dol_print_error('',"erreur webservice ".$osc_prod->error); + print "<p>ERROR 1</p>\n"; + dol_print_error('',"erreur webservice ".$osc_prod->error); } } else @@ -71,11 +72,11 @@ if ($action == '' && !$cancel) { print "Error"; } } -/* action Import cr�ation de l'objet product de dolibarr +/* action Import cr�ation de l'objet product de dolibarr * */ -if (($_GET["action"] == 'import' ) && ( $_GET["id"] != '' ) && $user->rights->produit->creer) +if (($_GET["action"] == 'import' ) && ( $_GET["id"] != '' ) && ($user->rights->produit->creer || $user->rights->service->creer)) { $osc_prod = new Osc_product($db, $_GET['id']); $result = $osc_prod->fetch($_GET['id']); @@ -99,7 +100,7 @@ if (($_GET["action"] == 'import' ) && ( $_GET["id"] != '' ) && $user->rights->pr /* utilisation de la table de transco*/ if ($osc_prod->get_productid($osc_prod->osc_id)>0) { - print '<p>Ce produit existe d�j�</p>'; + print '<p>Ce produit existe d�j�</p>'; } else { @@ -113,7 +114,7 @@ if (($_GET["action"] == 'import' ) && ( $_GET["id"] != '' ) && $user->rights->pr $res = $prod->fetch($id); $prod->add_photo_web($conf->produit->dir_output,$osc_prod->osc_image); - print '<p>cr�ation r�ussie produit '.$id.' r�f�rence : '.$product->ref; + print '<p>cr�ation r�ussie produit '.$id.' r�f�rence : '.$product->ref; $res = $osc_prod->transcode($osc_prod->osc_id,$product->id); print ' Id osc : '.$osc_prod->osc_id.'</p>'; @@ -135,7 +136,7 @@ if (($_GET["action"] == 'import' ) && ( $_GET["id"] != '' ) && $user->rights->pr } if ($id == -2) { - /* la r�f�rence existe on fait un update */ + /* la r�f�rence existe on fait un update */ $product_control = new Product($db); if ($_error == 1) { diff --git a/htdocs/pre.inc.php b/htdocs/pre.inc.php index 762e8d56d6f56bafe0298138db9454badc4c7751..449b709b02f2bcaf585b792edd15529d3dd20b8b 100644 --- a/htdocs/pre.inc.php +++ b/htdocs/pre.inc.php @@ -61,7 +61,7 @@ function llxHeader($head = '', $title='', $help_url='') $menu->add(DOL_URL_ROOT."/fichinter/index.php", $langs->trans("Interventions")); } - if (($conf->produit->enabled || $conf->service->enabled) && $user->rights->produit->lire) + if (($conf->produit->enabled && $user->rights->produit->lire) || ($conf->service->enabled && $user->rights->service->lire)) { $langs->load("products"); $chaine=""; diff --git a/htdocs/product/barcode.php b/htdocs/product/barcode.php index 4fb485cb85cb1aed9d7a35bb036d356d2579e0ae..ccc046a31fe2d63bf6eff29fb180c5edb0237d77 100644 --- a/htdocs/product/barcode.php +++ b/htdocs/product/barcode.php @@ -40,7 +40,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); /* * Actions diff --git a/htdocs/product/document.php b/htdocs/product/document.php index 11aeb18ab8fbf8f0350469cffb2973f333ce08b9..4cf75df3f07cdf11ec0ea901a944b39effe4224e 100755 --- a/htdocs/product/document.php +++ b/htdocs/product/document.php @@ -45,7 +45,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); // Get parameters $page=$_GET["page"]; @@ -77,7 +77,7 @@ $modulepart='produit'; if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) { /* - * Creation r�pertoire si n'existe pas + * Creation r�pertoire si n'existe pas */ if (! is_dir($upload_dir)) create_exdir($upload_dir); @@ -90,7 +90,7 @@ if ($_POST["sendit"] && ! empty($conf->global->MAIN_UPLOAD_DOC)) } else { - // Echec transfert (fichier d�passant la limite ?) + // Echec transfert (fichier d�passant la limite ?) $mesg = '<div class="error">'.$langs->trans("ErrorFileNotUploaded").'</div>'; // print_r($_FILES); } @@ -173,7 +173,7 @@ if ($product->id) // Affiche formulaire upload $formfile=new FormFile($db); - $formfile->form_attach_new_file(DOL_URL_ROOT.'/product/document.php?id='.$product->id,'',0,0,$user->rights->produit->creer); + $formfile->form_attach_new_file(DOL_URL_ROOT.'/product/document.php?id='.$product->id,'',0,0,($user->rights->produit->creer||$user->rights->service->creer)); // List of document diff --git a/htdocs/product/fiche.php b/htdocs/product/fiche.php index 7cc49d0b52eae4ca9f5999ead750a50d21d1c67e..c8b10e4c12ff9b34204f40aee760d83667c9e22b 100644 --- a/htdocs/product/fiche.php +++ b/htdocs/product/fiche.php @@ -47,7 +47,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -67,7 +67,7 @@ if ($_GET["action"] == 'fastappro') // Add a product or service -if ($_POST["action"] == 'add' && $user->rights->produit->creer) +if ($_POST["action"] == 'add' && ($user->rights->produit->creer || $user->rights->service->creer)) { $error=0; @@ -153,7 +153,7 @@ if ($_POST["action"] == 'add' && $user->rights->produit->creer) } } // Update a product or service -if ($_POST["action"] == 'update' && $user->rights->produit->creer) +if ($_POST["action"] == 'update' && ($user->rights->produit->creer || $user->rights->service->creer)) { if (! empty($_POST["cancel"])) { @@ -219,7 +219,7 @@ if ($_POST["action"] == 'update' && $user->rights->produit->creer) } // Action clone object -if ($_POST["action"] == 'confirm_clone' && $_POST['confirm'] == 'yes' && $user->rights->produit->creer) +if ($_POST["action"] == 'confirm_clone' && $_POST['confirm'] == 'yes' && ($user->rights->produit->creer || $user->rights->service->creer)) { if (empty($_REQUEST["clone_content"]) && empty($_REQUEST["clone_prices"])) { @@ -566,7 +566,7 @@ $formproduct = new FormProduct($db); /* * Fiche cr�ation du produit */ -if ($_GET["action"] == 'create' && $user->rights->produit->creer) +if ($_GET["action"] == 'create' && ($user->rights->produit->creer || $user->rights->service->creer)) { if ($conf->global->PRODUCT_CANVAS_ABILITY) { @@ -1003,7 +1003,7 @@ if ($_GET["id"] || $_GET["ref"]) /* * Fiche en mode edition */ - if ($_GET["action"] == 'edit' && $user->rights->produit->creer) + if ($_GET["action"] == 'edit' && ($user->rights->produit->creer || $user->rights->service->creer)) { if ($product->isservice()) { print_fiche_titre($langs->trans('Modify').' '.$langs->trans('Service').' : '.$product->ref, ""); @@ -1175,7 +1175,7 @@ print "\n<div class=\"tabsAction\">\n"; if ($_GET["action"] == '') { - if ( $user->rights->produit->creer) + if ($user->rights->produit->creer || $user->rights->service->creer) { if ($product->no_button_edit <> 1) print '<a class="butAction" href="fiche.php?action=edit&id='.$product->id.'">'.$langs->trans("Modify").'</a>'; diff --git a/htdocs/product/fournisseurs.php b/htdocs/product/fournisseurs.php index 73185af82737e559662d1173536e6bdc9647cf60..c236d2d3ae0256d214f61c4536ee3e8976530976 100644 --- a/htdocs/product/fournisseurs.php +++ b/htdocs/product/fournisseurs.php @@ -42,12 +42,12 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; -//R�cup�re le r�sultat de la recherche Ajax +//R�cup�re le r�sultat de la recherche Ajax //Todo: voir pour le supprimer par la suite if ($conf->use_javascript_ajax && $conf->global->COMPANY_USE_SEARCH_TO_SELECT && $_POST['id_fourn_id']) { @@ -71,7 +71,7 @@ if ($_GET["action"] == 'remove_pf') $mesg = '<div class="ok">'.$langs->trans("PriceRemoved").'.</div>'; } else - { + { // Deprecated. Should not occurs if ($product->remove_fournisseur($_GET["socid"]) > 0) { @@ -93,7 +93,7 @@ if ($_POST["action"] == 'updateprice' && $_POST["cancel"] <> $langs->trans("Canc if ($result > 0) { $db->begin(); - + $error=0; if (! $_POST["ref_fourn"]) { @@ -106,7 +106,7 @@ if ($_POST["action"] == 'updateprice' && $_POST["cancel"] <> $langs->trans("Canc $error++; $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Supplier")).'</div>'; } - + if (! $error) { $ret=$product->add_fournisseur($user, $_POST["id_fourn"], $_POST["ref_fourn"]); @@ -115,14 +115,14 @@ if ($_POST["action"] == 'updateprice' && $_POST["cancel"] <> $langs->trans("Canc $error++; $mesg='<div class="error">'.$product->error.'</div>'; } - + if ($_POST["qty"]) { if ($_POST["price"] >= 0) { $supplier=new Fournisseur($db); $result=$supplier->fetch($_POST["id_fourn"]); - + $ret=$product->update_buyprice($_POST["qty"], $_POST["price"], $user, $_POST["price_base_type"], $supplier); if ($ret < 0) { @@ -144,9 +144,9 @@ if ($_POST["action"] == 'updateprice' && $_POST["cancel"] <> $langs->trans("Canc { $error++; $mesg='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Qty")).'</div>'; - } + } } - + if (! $error) { $db->commit(); @@ -172,7 +172,7 @@ if ($_POST["cancel"] == $langs->trans("Cancel")) * Affichage fiche */ $html = new Form($db); - + if ($_GET["id"] || $_GET["ref"]) { if ($_GET["action"] <> 're-edit') @@ -185,8 +185,8 @@ if ($_GET["id"] || $_GET["ref"]) } if ( $result ) - { - + { + if ($_GET["action"] <> 'edit' && $_GET["action"] <> 're-edit') { /* @@ -206,10 +206,10 @@ if ($_GET["id"] || $_GET["ref"]) print $html->showrefnav($product,'ref','',1,'ref'); print '</td>'; print '</tr>'; - + // Libelle print '<tr><td>'.$langs->trans("Label").'</td><td colspan="2">'.$product->libelle.'</td></tr>'; - + // Prix print '<tr><td>'.$langs->trans("SellingPrice").'</td><td colspan="2">'; if ($product->price_base_type == 'TTC') @@ -228,32 +228,32 @@ if ($_GET["id"] || $_GET["ref"]) print '</td></tr>'; print '</table>'; - + print "</div>\n"; if ($mesg) print($mesg); // Form to add or update a price - if (($_GET["action"] == 'add_price' || $_POST["action"] == 'updateprice' )&& $user->rights->produit->creer) + if (($_GET["action"] == 'add_price' || $_POST["action"] == 'updateprice' ) && ($user->rights->produit->creer || $user->rights->service->creer)) { $langs->load("suppliers"); - + if ($_GET["rowid"]) { $product->fetch_product_fournisseur_price($_GET["rowid"]); print_fiche_titre($langs->trans("ChangeSupplierPrice")); } else { print_fiche_titre($langs->trans("AddSupplierPrice")); - } + } print '<table class="border" width="100%">'; print '<form action="fournisseurs.php?id='.$product->id.'" method="post">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<input type="hidden" name="action" value="updateprice">'; - + print '<tr><td>'.$langs->trans("Supplier").'</td><td colspan="3">'; if ($_GET["rowid"]) { - $supplier=new Fournisseur($db); + $supplier=new Fournisseur($db); $supplier->fetch($_GET["socid"]); print $supplier->getNomUrl(1); print '<input type="hidden" name="id_fourn" value="'.$_GET["socid"].'">'; @@ -266,7 +266,7 @@ if ($_GET["id"] || $_GET["ref"]) $html->select_societes($_POST["id_fourn"],'id_fourn','fournisseur=1',1); } print '</td></tr>'; - + print '<tr><td>'.$langs->trans("SupplierRef").'</td><td colspan="3">'; if ($_GET["rowid"]) { @@ -278,7 +278,7 @@ if ($_GET["id"] || $_GET["ref"]) } print '</td>'; print '</tr>'; - + print '<tr>'; print '<td>'.$langs->trans("QtyMin").'</td>'; print '<td>'; @@ -299,33 +299,33 @@ if ($_GET["id"] || $_GET["ref"]) print $html->select_PriceBaseType(($_POST["price_base_type"]?$_POST["price_base_type"]:$product->price_base_type), "price_base_type"); print '</td>'; print '</tr>'; - + print '<tr><td colspan="4" align="center"><input class="button" type="submit" value="'.$langs->trans("Save").'">'; print ' '; print '<input class="button" type="submit" name="cancel" value="'.$langs->trans("Cancel").'"></td></tr>'; print '</form>'; print '</table>'; - } - + } + /* ************************************************************************** */ - /* */ - /* Barre d'action */ - /* */ + /* */ + /* Barre d'action */ + /* */ /* ************************************************************************** */ - + print "\n<div class=\"tabsAction\">\n"; - + if ($_GET["action"] != 'add_price') { - if ($user->rights->produit->creer) + if ($user->rights->produit->creer || $user->rights->service->creer) { print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/fournisseurs.php?id='.$product->id.'&action=add_price">'; print $langs->trans("AddSupplierPrice").'</a>'; } } - + print "\n</div>\n"; print '<br>'; @@ -365,54 +365,54 @@ if ($_GET["id"] || $_GET["ref"]) $num = $db->num_rows($resql); $i = 0; - $var=True; + $var=True; while ($i < $num) { $objp = $db->fetch_object($resql); $var=!$var; - + print "<tr $bc[$var]>"; print '<td><a href="../fourn/fiche.php?socid='.$objp->socid.'">'.img_object($langs->trans("ShowCompany"),'company').' '.$objp->nom.'</a></td>'; // Fournisseur print '<td align="left">'.$objp->ref_fourn.'</td>'; - // Quantit� + // Quantit� print '<td align="center">'; print $objp->quantity; print '</td>'; - // Prix quantit� + // Prix quantit� print '<td align="right">'; print $objp->price?price($objp->price):""; print '</td>'; - + // Prix unitaire print '<td align="right">'; print $objp->unitprice? price($objp->unitprice) : ($objp->quantity?price($objp->price/$objp->quantity):" "); print '</td>'; - + // Modifier-Supprimer print '<td align="center">'; - if ($user->rights->produit->creer) + if ($user->rights->produit->creer || $user->rights->service->creer) { print '<a href="fournisseurs.php?id='.$product->id.'&socid='.$objp->socid.'&action=add_price&rowid='.$objp->rowid.'">'.img_edit()."</a>"; print '<a href="fournisseurs.php?id='.$product->id.'&socid='.$objp->socid.'&action=remove_pf&rowid='.$objp->rowid.'">'.img_picto($langs->trans("Remove"),'disable.png').'</a>'; } print '</td>'; - + print '</tr>'; - + $i++; } - + $db->free($resql); } else { dol_print_error($db); } - + print '</table>'; } } diff --git a/htdocs/product/index.php b/htdocs/product/index.php index 89101d736e3fe6bdb2795b15b4cf853bf05f57bd..bb691281abd4f0668c629b8bae264f568b16bf8b 100644 --- a/htdocs/product/index.php +++ b/htdocs/product/index.php @@ -28,7 +28,7 @@ require("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT.'/product.class.php'); -if (!$user->rights->produit->lire) +if (!$user->rights->produit->lire && !$user->rights->service->lire) accessforbidden(); $staticproduct=new Product($db); diff --git a/htdocs/product/liste.php b/htdocs/product/liste.php index c7d492b85b0ce09d20dace381042e7696efdda04..c36750ab2336c2a89b08adbcb16b581aa7a47f17 100644 --- a/htdocs/product/liste.php +++ b/htdocs/product/liste.php @@ -32,7 +32,7 @@ if ($conf->categorie->enabled) require_once(DOL_DOCUMENT_ROOT."/categories/categ $langs->load("products"); // Security check -if (!$user->rights->produit->lire) +if (!$user->rights->produit->lire && !$user->rights->service->lire) accessforbidden(); diff --git a/htdocs/product/photos.php b/htdocs/product/photos.php index 30e54e214d0e8de5037f9db6f699cf692238d17e..500fc5291a72c963ca521275092214cb400e092c 100644 --- a/htdocs/product/photos.php +++ b/htdocs/product/photos.php @@ -41,7 +41,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -65,7 +65,7 @@ if ($_FILES['userfile']['size'] > 0 && $_POST["sendit"] && ! empty($conf->global } } -if ($_REQUEST["action"] == 'confirm_delete' && $_GET["file"] && $_REQUEST['confirm'] == 'yes' && $user->rights->produit->creer) +if ($_REQUEST["action"] == 'confirm_delete' && $_GET["file"] && $_REQUEST['confirm'] == 'yes' && ($user->rights->produit->creer || $user->rights->service->creer)) { $product = new Product($db); $product->delete_photo($conf->produit->dir_output."/".$_GET["file"]); @@ -157,7 +157,7 @@ if ($_GET["id"] || $_GET["ref"]) print "\n<div class=\"tabsAction\">\n"; - if ($_GET["action"] != 'ajout_photo' && $user->rights->produit->creer) + if ($_GET["action"] != 'ajout_photo' && ($user->rights->produit->creer || $user->rights->service->creer)) { if (! empty($conf->global->MAIN_UPLOAD_DOC)) { @@ -176,7 +176,7 @@ if ($_GET["id"] || $_GET["ref"]) /* * Ajouter une photo */ - if ($_GET["action"] == 'ajout_photo' && $user->rights->produit->creer && ! empty($conf->global->MAIN_UPLOAD_DOC)) + if ($_GET["action"] == 'ajout_photo' && ($user->rights->produit->creer || $user->rights->service->creer) && ! empty($conf->global->MAIN_UPLOAD_DOC)) { // Affiche formulaire upload $formfile=new FormFile($db); @@ -219,7 +219,7 @@ if ($_GET["id"] || $_GET["ref"]) $filename=$obj['photo']; } - // Nom affich� + // Nom affich� $viewfilename=$obj['photo']; // Taille de l'image @@ -233,12 +233,12 @@ if ($_GET["id"] || $_GET["ref"]) print '<br>'.$viewfilename; print '<br>'; - // On propose la g�n�ration de la vignette si elle n'existe pas et si la taille est sup�rieure aux limites + // On propose la g�n�ration de la vignette si elle n'existe pas et si la taille est sup�rieure aux limites if (!$obj['photo_vignette'] && eregi('(\.bmp|\.gif|\.jpg|\.jpeg|\.png)$',$obj['photo']) && ($product->imgWidth > $maxWidth || $product->imgHeight > $maxHeight)) { print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'&action=addthumb&file='.urlencode($pdir.$viewfilename).'">'.img_refresh($langs->trans('GenerateThumb')).' </a>'; } - if ($user->rights->produit->creer) + if ($user->rights->produit->creer || $user->rights->service->creer) { print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'&action=delete&file='.urlencode($pdir.$viewfilename).'">'; print img_delete().'</a>'; diff --git a/htdocs/product/popuprop.php b/htdocs/product/popuprop.php index 9e0f0ecb66bfc2a72af2dd73cfb071774b517b14..dbb4ff443c9b78ab7ad0741d2023672a01bc6624 100644 --- a/htdocs/product/popuprop.php +++ b/htdocs/product/popuprop.php @@ -21,7 +21,7 @@ /** \file htdocs/product/popuprop.php \ingroup propal, produit - \brief Liste des produits/services par popularit� + \brief Liste des produits/services par popularit� \version $Id$ */ @@ -30,7 +30,7 @@ require_once(DOL_DOCUMENT_ROOT.'/product.class.php'); // Security check if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit'); +$result=restrictedArea($user,'produit|service'); $sortfield = isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"]; $sortorder = isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"]; @@ -47,6 +47,10 @@ $offset = $limit * $page ; $staticproduct=new Product($db); +/* + * View + */ + llxHeader(); //On n'affiche le lien page suivante que s'il y a une page suivante ... @@ -101,7 +105,7 @@ if ($result) while ($i < $num) { $objp = $db->fetch_object($result); - + // Multilangs if ($conf->global->MAIN_MULTILANGS) // si l'option est active { @@ -117,7 +121,7 @@ if ($result) if ($objtp->label != '') $objp->label = $objtp->label; } } - + $var=!$var; print "<tr $bc[$var]>"; print '<td><a href="'.DOL_URL_ROOT.'/product/stats/fiche.php?id='.$objp->rowid.'">'; diff --git a/htdocs/product/pre.inc.php b/htdocs/product/pre.inc.php index ba0c9c7f260cfa736d1ac3b2bc2ac3446c995415..cc708d0dd6d81093114254b4967fa3e8e3a0bf3f 100644 --- a/htdocs/product/pre.inc.php +++ b/htdocs/product/pre.inc.php @@ -37,12 +37,13 @@ function llxHeader($head = "", $urlp = "", $title="") $menu = new Menu(); + // Products if ($conf->produit->enabled) { $menu->add(DOL_URL_ROOT."/product/index.php?type=0", $langs->trans("Products")); $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=0", $langs->trans("List")); - if ($user->societe_id == 0 && $user->rights->produit->creer) + if ($user->societe_id == 0 && ($user->rights->produit->creer || $user->rights->service->creer)) { $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=0", $langs->trans("NewProduct")); } @@ -80,17 +81,19 @@ function llxHeader($head = "", $urlp = "", $title="") $menu->add_submenu(DOL_URL_ROOT."/product/reassort.php?type=0", $langs->trans("Restock")); + // Services if ($conf->service->enabled) { $menu->add(DOL_URL_ROOT."/product/index.php?type=1", $langs->trans("Services")); $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=1", $langs->trans("List")); - if ($user->societe_id == 0 && $user->rights->produit->creer) + if ($user->societe_id == 0 && ($user->rights->produit->creer || $user->rights->service->creer)) { $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=1", $langs->trans("NewService")); } } - if ($conf->fournisseur->enabled) { + if ($conf->fournisseur->enabled) + { $langs->load("suppliers"); $menu->add(DOL_URL_ROOT."/fourn/index.php", $langs->trans("Suppliers")); } diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 18c8703b5c9ef738b31788f2ec406f43d1e5a6a6..f373678b2f42a2723e80df61f4ecdbe7dc31f2c4 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -41,14 +41,14 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); /* * Actions */ -if ($_POST["action"] == 'update_price' && ! $_POST["cancel"] && $user->rights->produit->creer) +if ($_POST["action"] == 'update_price' && ! $_POST["cancel"] && ($user->rights->produit->creer || $user->rights->service->creer)) { $product = new Product($db); @@ -226,7 +226,7 @@ if (empty($_GET["action"]) || $_GET["action"]=='delete') { print "\n<div class=\"tabsAction\">\n"; - if ($user->rights->produit->modifier || $user->rights->produit->creer) + if ($user->rights->produit->creer || $user->rights->service->creer) { print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/price.php?action=edit_price&id='.$product->id.'">'.$langs->trans("UpdatePrice").'</a>'; } @@ -239,7 +239,7 @@ if (empty($_GET["action"]) || $_GET["action"]=='delete') /* * Edition du prix */ -if ($_GET["action"] == 'edit_price' && $user->rights->produit->creer) +if ($_GET["action"] == 'edit_price' && ($user->rights->produit->creer || $user->rights->service->creer)) { print_fiche_titre($langs->trans("NewPrice"),'',''); diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index 3ab61f07705577de62271c8b20f9055288131bb3..541c466ab3df2123e1f0a4325db091eb8aaebed9 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -34,7 +34,7 @@ $langs->load("stocks"); // Security check if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit'); +$result=restrictedArea($user,'produit|service'); $sref=isset($_GET["sref"])?$_GET["sref"]:$_POST["sref"]; diff --git a/htdocs/product/sousproduits/fiche.php b/htdocs/product/sousproduits/fiche.php index e5c6245d949d081b651dfdf4056a70b9374f4a0b..9d81c31fe220f3a5cd028670470c941c94760aa9 100644 --- a/htdocs/product/sousproduits/fiche.php +++ b/htdocs/product/sousproduits/fiche.php @@ -42,7 +42,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -67,7 +67,7 @@ $html = new Form($db); // Action association d'un sousproduit if ($action == 'add_prod' && $cancel <> $langs->trans("Cancel") && -$user->rights->produit->creer) +($user->rights->produit->creer || $user->rights->service->creer)) { for($i=0;$i<$_POST["max_prod"];$i++) @@ -119,7 +119,7 @@ if($action == 'search' ) } $sql.= " ORDER BY p.ref ASC "; // $sql.= $db->plimit($limit + 1 ,$offset); - + $resql = $db->query($sql) ; } @@ -212,7 +212,7 @@ if ($id || $ref) /* * Fiche en mode edition */ - if (($action == 'edit' || $action == 'search' || $action == 're-edit') && $user->rights->produit->creer) + if (($action == 'edit' || $action == 'search' || $action == 're-edit') && ($user->rights->produit->creer || $user->rights->service->creer)) { print '<table class="border" width="100%">'; @@ -354,13 +354,10 @@ print "\n<div class=\"tabsAction\">\n"; if ($action == '') { - - if ( $user->rights->produit->creer) + if ($user->rights->produit->creer || $user->rights->service->creer) { print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/sousproduits/fiche.php?action=edit&id='.$id.'">'.$langs->trans("EditAssociate").'</a>'; - } - } print "\n</div>\n"; diff --git a/htdocs/product/sousproduits/pre.inc.php b/htdocs/product/sousproduits/pre.inc.php index 103f1d206873df58d9c4e8b5ebf6ca7bcbbc8889..a5f7c01e0ed8346a9ae5749b7687af685cbbfa05 100644 --- a/htdocs/product/sousproduits/pre.inc.php +++ b/htdocs/product/sousproduits/pre.inc.php @@ -15,18 +15,14 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * $Id$ - * $Source$ - * */ -/*! - \file htdocs/product/pre.inc.php - \ingroup product,service - \brief Fichier gestionnaire du menu gauche des produits et services - \version $Revision$ -*/ +/** + * \file htdocs/product/pre.inc.php + * \ingroup product,service + * \brief Fichier gestionnaire du menu gauche des produits et services + * \version $Id$ + */ require("../../main.inc.php"); $langs->load("products"); @@ -34,75 +30,77 @@ $langs->load("products"); function llxHeader($head = "", $urlp = "", $title="") { - global $user, $conf, $langs; - $langs->load("products"); - - top_menu($head, $title); + global $user, $conf, $langs; + $langs->load("products"); + + top_menu($head, $title); + + $menu = new Menu(); + + // Products + if ($conf->produit->enabled) + { + $menu->add(DOL_URL_ROOT."/product/index.php?type=0", $langs->trans("Products")); + $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=0", $langs->trans("List")); + + if ($user->societe_id == 0 && $user->rights->produit->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=0", $langs->trans("NewProduct")); + } + } + + // Services + if ($conf->service->enabled) + { + $menu->add(DOL_URL_ROOT."/product/index.php?type=1", $langs->trans("Services")); + $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=1", $langs->trans("List")); + if ($user->societe_id == 0 && $user->rights->produit->creer) + { + $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=1", $langs->trans("NewService")); + } + } - $menu = new Menu(); + if ($conf->boutique->enabled) + { + $menu->add(DOL_URL_ROOT."/product/osc-liste.php", "Osc"); + $menu->add_submenu(DOL_URL_ROOT."/product/osc-liste.php?reqstock=epuise", "Produits Epuis�s"); + + $menu->add(DOL_URL_ROOT."/product/osc-reviews.php", $langs->trans("Criticals")); + + $menu->add_submenu(DOL_URL_ROOT."/product/osc-productsbyreviews.php", "Meilleurs produits"); + + $menu->add(DOL_URL_ROOT."/product/album/", "Albums"); + $menu->add(DOL_URL_ROOT."/product/groupart/", "Groupes/Artistes"); + + $menu->add(DOL_URL_ROOT."/product/categorie/", $langs->trans("Categories")); + } - if ($conf->produit->enabled) - { - $menu->add(DOL_URL_ROOT."/product/index.php?type=0", $langs->trans("Products")); - $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=0", $langs->trans("List")); + if ($conf->fournisseur->enabled) { + $langs->load("suppliers"); + $menu->add(DOL_URL_ROOT."/fourn/index.php", $langs->trans("Suppliers")); + } + + $menu->add(DOL_URL_ROOT."/product/stats/", $langs->trans("Statistics")); + if ($conf->propal->enabled) + { + $menu->add_submenu(DOL_URL_ROOT."/product/popuprop.php", $langs->trans("Popularity")); + } - if ($user->societe_id == 0 && $user->rights->produit->creer) + if ($conf->stock->enabled) { - $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=0", $langs->trans("NewProduct")); + $menu->add(DOL_URL_ROOT."/product/stock/", $langs->trans("Stock")); } - } - - if ($conf->service->enabled) - { - $menu->add(DOL_URL_ROOT."/product/index.php?type=1", $langs->trans("Services")); - $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=1", $langs->trans("List")); - if ($user->societe_id == 0 && $user->rights->produit->creer) + + if ($conf->categorie->enabled) { - $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=1", $langs->trans("NewService")); + $menu->add(DOL_URL_ROOT."/categories/", $langs->trans("Categories")); } - } - - if ($conf->boutique->enabled) - { - $menu->add(DOL_URL_ROOT."/product/osc-liste.php", "Osc"); - $menu->add_submenu(DOL_URL_ROOT."/product/osc-liste.php?reqstock=epuise", "Produits Epuis�s"); - - $menu->add(DOL_URL_ROOT."/product/osc-reviews.php", $langs->trans("Criticals")); - - $menu->add_submenu(DOL_URL_ROOT."/product/osc-productsbyreviews.php", "Meilleurs produits"); - - $menu->add(DOL_URL_ROOT."/product/album/", "Albums"); - $menu->add(DOL_URL_ROOT."/product/groupart/", "Groupes/Artistes"); - - $menu->add(DOL_URL_ROOT."/product/categorie/", $langs->trans("Categories")); - } - - if ($conf->fournisseur->enabled) { - $langs->load("suppliers"); - $menu->add(DOL_URL_ROOT."/fourn/index.php", $langs->trans("Suppliers")); - } - - $menu->add(DOL_URL_ROOT."/product/stats/", $langs->trans("Statistics")); - if ($conf->propal->enabled) - { - $menu->add_submenu(DOL_URL_ROOT."/product/popuprop.php", $langs->trans("Popularity")); - } - - if ($conf->stock->enabled) - { - $menu->add(DOL_URL_ROOT."/product/stock/", $langs->trans("Stock")); - } - - if ($conf->categorie->enabled) - { - $menu->add(DOL_URL_ROOT."/categories/", $langs->trans("Categories")); - } - - left_menu($menu->liste); - /* - * - * - */ + + left_menu($menu->liste); + /* + * + * + */ } ?> diff --git a/htdocs/product/stats/commande.php b/htdocs/product/stats/commande.php index 5852a2c9c36b838ba5c078e20b7bc9b2efc7bda6..c3c89b5f7c6a83c2369e1839cbbffa0bd719a472 100644 --- a/htdocs/product/stats/commande.php +++ b/htdocs/product/stats/commande.php @@ -42,7 +42,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -67,13 +67,13 @@ $html = new Form($db); if ($_GET["id"] || $_GET["ref"]) { $product = new Product($db); - if ($_GET["ref"]) + if ($_GET["ref"]) { $result = $product->fetch('',$_GET["ref"]); $_GET["id"]=$product->id; } if ($_GET["id"]) $result = $product->fetch($_GET["id"]); - + llxHeader("","",$langs->trans("CardProduct".$product->type)); if ($result > 0) @@ -98,7 +98,7 @@ if ($_GET["id"] || $_GET["ref"]) // Libelle print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$product->libelle.'</td>'; print '</tr>'; - + // Prix print '<tr><td>'.$langs->trans("SellingPrice").'</td><td colspan="3">'; if ($product->price_base_type == 'TTC') @@ -110,18 +110,18 @@ if ($_GET["id"] || $_GET["ref"]) print price($product->price).' '.$langs->trans($product->price_base_type); } print '</td></tr>'; - + // Statut print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'; print $product->getLibStatut(2); print '</td></tr>'; show_stats_for_company($product,$socid); - + print "</table>"; print '</div>'; - + $sql = "SELECT distinct(s.nom), s.rowid as socid, s.code_client, c.rowid, c.total_ht as total_ht, c.ref,"; $sql.= " ".$db->pdate("c.date_creation")." as date, c.fk_statut as statut, c.facture, c.rowid as commandeid"; diff --git a/htdocs/product/stats/commande_fournisseur.php b/htdocs/product/stats/commande_fournisseur.php index 5f685ac77c34dcb6953e191200cc79a648a9741a..ba5f775d7f6aece15c3936bc70f8b4f62b53a45e 100644 --- a/htdocs/product/stats/commande_fournisseur.php +++ b/htdocs/product/stats/commande_fournisseur.php @@ -42,7 +42,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -66,13 +66,13 @@ $html = new Form($db); if ($_GET["id"] || $_GET["ref"]) { $product = new Product($db); - if ($_GET["ref"]) + if ($_GET["ref"]) { $result = $product->fetch('',$_GET["ref"]); $_GET["id"]=$product->id; } if ($_GET["id"]) $result = $product->fetch($_GET["id"]); - + llxHeader("","",$langs->trans("CardProduct".$product->type)); if ($result > 0) @@ -83,18 +83,18 @@ if ($_GET["id"] || $_GET["ref"]) $head=product_prepare_head($product, $user); $titre=$langs->trans("CardProduct".$product->type); dol_fiche_head($head, 'referers', $titre); - + print '<table class="border" width="100%">'; - + // Reference print '<tr>'; print '<td width="15%">'.$langs->trans("Ref").'</td><td colspan="3">'; print $html->showrefnav($product,'ref','',1,'ref'); print '</td></tr>'; - + // Libelle print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$product->libelle.'</td></tr>'; - + // Prix print '<tr><td>'.$langs->trans("SellingPrice").'</td><td colspan="3">'; if ($product->price_base_type == 'TTC') @@ -106,17 +106,17 @@ if ($_GET["id"] || $_GET["ref"]) print price($product->price).' '.$langs->trans($product->price_base_type); } print '</td></tr>'; - + // Statut print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'; print $product->getLibStatut(2); print '</td></tr>'; show_stats_for_company($product,$socid); - + print "</table>"; print '</div>'; - + $sql = "SELECT distinct(s.nom), s.rowid as socid, s.code_client, c.rowid, c.total_ht as total_ht, c.ref,"; $sql.= " ".$db->pdate("c.date_creation")." as date, c.fk_statut as statut, c.rowid as commandeid"; if (!$user->rights->societe->client->voir && !$socid) $sql .= ", sc.fk_soc, sc.fk_user "; @@ -132,17 +132,17 @@ if ($_GET["id"] || $_GET["ref"]) if ($socid) $sql.= " AND c.fk_soc = ".$socid; $sql.= " ORDER BY $sortfield $sortorder "; $sql.= $db->plimit($conf->liste_limit +1, $offset); - + $result = $db->query($sql); if ($result) { $num = $db->num_rows($result); - + print_barre_liste($langs->trans("SuppliersOrders"),$page,$_SERVER["PHP_SELF"],"&id=$product->id",$sortfield,$sortorder,'',$num,0,''); - + $i = 0; print "<table class=\"noborder\" width=\"100%\">"; - + print '<tr class="liste_titre">'; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"c.rowid","","&id=".$_GET["id"],'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","&id=".$_GET["id"],'',$sortfield,$sortorder); @@ -151,9 +151,9 @@ if ($_GET["id"] || $_GET["ref"]) print_liste_field_titre($langs->trans("AmountHT"),$_SERVER["PHP_SELF"],"c.total_ht","","&id=".$_GET["id"],'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"c.fk_statut","","&id=".$_GET["id"],'align="right"',$sortfield,$sortorder); print "</tr>\n"; - + $commandestatic=new Commande($db); - + if ($num > 0) { $var=True; @@ -161,7 +161,7 @@ if ($_GET["id"] || $_GET["ref"]) { $objp = $db->fetch_object($result); $var=!$var; - + print "<tr $bc[$var]>"; print '<td><a href="'.DOL_URL_ROOT.'/fourn/commande/fiche.php?id='.$objp->commandeid.'">'.img_object($langs->trans("ShowOrder"),"order").' '; print $objp->ref; diff --git a/htdocs/product/stats/commandestats.class.php b/htdocs/product/stats/commandestats.class.php index e48be2bc3aaa3b33e70aceef9f6932f1b2938d55..766c539adfdf65674c02bc2dedd38b918fedf7f2 100644 --- a/htdocs/product/stats/commandestats.class.php +++ b/htdocs/product/stats/commandestats.class.php @@ -15,152 +15,155 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * $Id$ - * $Source$ * */ -class CommandeStats +/* + * \version $Id$ + */ +class CommandeStats { - var $db ; - - function CommandeStats($DB) - { - $this->db = $DB; - } - /** - * Renvoie le nombre de commande par ann�e - * - */ - function getNbCommandeByYear() - { - $result = array(); - $sql = "SELECT date_format(date_commande,'%Y') as dm, count(*)"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande"; - $sql.= " WHERE fk_statut > 0"; - $sql.= " AND entity = ".$conf->entity; - $sql.= " GROUP BY dm DESC"; - - if ($this->db->query($sql)) - { - $num = $this->db->num_rows(); - $i = 0; - while ($i < $num) + var $db ; + + function CommandeStats($DB) + { + $this->db = $DB; + } + + + /** + * Renvoie le nombre de commande par annee + * + */ + function getNbCommandeByYear() + { + $result = array(); + $sql = "SELECT date_format(date_commande,'%Y') as dm, count(*)"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande"; + $sql.= " WHERE fk_statut > 0"; + $sql.= " AND entity = ".$conf->entity; + $sql.= " GROUP BY dm DESC"; + + if ($this->db->query($sql)) + { + $num = $this->db->num_rows(); + $i = 0; + while ($i < $num) { - $row = $this->db->fetch_row($i); - $result[$i] = $row; + $row = $this->db->fetch_row($i); + $result[$i] = $row; - $i++; + $i++; } - $this->db->free(); - } - return $result; - } - /** - * Renvoie le nombre de commande par mois pour une ann�e donn�e - * - */ - function getNbCommandeByMonth($year) - { - $result = array(); - $sql = "SELECT date_format(date_commande,'%m') as dm, count(*)"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande"; - $sql.= " WHERE date_format(date_commande,'%Y') = ".$year; - $sql.= " AND fk_statut > 0"; - $sql.= " AND entity = ".$conf->entity; - $sql.= " GROUP BY dm DESC"; - - if ($this->db->query($sql)) - { - $num = $this->db->num_rows(); - $i = 0; - while ($i < $num) + $this->db->free(); + } + return $result; + } + /** + * Renvoie le nombre de commande par mois pour une ann�e donn�e + * + */ + function getNbCommandeByMonth($year) + { + $result = array(); + $sql = "SELECT date_format(date_commande,'%m') as dm, count(*)"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande"; + $sql.= " WHERE date_format(date_commande,'%Y') = ".$year; + $sql.= " AND fk_statut > 0"; + $sql.= " AND entity = ".$conf->entity; + $sql.= " GROUP BY dm DESC"; + + if ($this->db->query($sql)) + { + $num = $this->db->num_rows(); + $i = 0; + while ($i < $num) { - $row = $this->db->fetch_row($i); - $j = $row[0] * 1; - $result[$j] = $row[1]; - $i++; + $row = $this->db->fetch_row($i); + $j = $row[0] * 1; + $result[$j] = $row[1]; + $i++; } - $this->db->free(); - } - - for ($i = 1 ; $i < 13 ; $i++) - { - $res[$i] = $result[$i] + 0; - } - - return $res; - } - /** - * Renvoie le nombre de commande par mois pour une ann�e donn�e - * - */ - function getCommandeAmountByMonth($year) - { - $result = array(); - $sql = "SELECT date_format(date_commande,'%m') as dm, sum(total_ht)"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande"; - $sql.= " WHERE date_format(date_commande,'%Y') = ".$year; - $sql.= " AND fk_statut > 0"; - $sql.= " AND entity = ".$conf->entity; - $sql.= " GROUP BY dm DESC"; - - if ($this->db->query($sql)) - { - $num = $this->db->num_rows(); - $i = 0; - while ($i < $num) + $this->db->free(); + } + + for ($i = 1 ; $i < 13 ; $i++) + { + $res[$i] = $result[$i] + 0; + } + + return $res; + } + /** + * Renvoie le nombre de commande par mois pour une ann�e donn�e + * + */ + function getCommandeAmountByMonth($year) + { + $result = array(); + $sql = "SELECT date_format(date_commande,'%m') as dm, sum(total_ht)"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande"; + $sql.= " WHERE date_format(date_commande,'%Y') = ".$year; + $sql.= " AND fk_statut > 0"; + $sql.= " AND entity = ".$conf->entity; + $sql.= " GROUP BY dm DESC"; + + if ($this->db->query($sql)) + { + $num = $this->db->num_rows(); + $i = 0; + while ($i < $num) { - $row = $this->db->fetch_row($i); - $j = $row[0] * 1; - $result[$j] = $row[1]; - $i++; + $row = $this->db->fetch_row($i); + $j = $row[0] * 1; + $result[$j] = $row[1]; + $i++; } - $this->db->free(); - } - - for ($i = 1 ; $i < 13 ; $i++) - { - $res[$i] = $result[$i] + 0; - } - - return $res; - } - /** - * Renvoie le nombre de commande par mois pour une ann�e donn�e - * - */ - function getCommandeAverageByMonth($year) - { - $result = array(); - $sql = "SELECT date_format(date_commande,'%m') as dm, avg(total_ht)"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande"; - $sql.= " WHERE date_format(date_commande,'%Y') = ".$year; - $sql.= " AND fk_statut > 0"; - $sql.= " AND entity = ".$conf->entity; - $sql.= " GROUP BY dm DESC"; - - if ($this->db->query($sql)) - { - $num = $this->db->num_rows(); - $i = 0; - while ($i < $num) + $this->db->free(); + } + + for ($i = 1 ; $i < 13 ; $i++) + { + $res[$i] = $result[$i] + 0; + } + + return $res; + } + /** + * Renvoie le nombre de commande par mois pour une ann�e donn�e + * + */ + function getCommandeAverageByMonth($year) + { + $result = array(); + $sql = "SELECT date_format(date_commande,'%m') as dm, avg(total_ht)"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande"; + $sql.= " WHERE date_format(date_commande,'%Y') = ".$year; + $sql.= " AND fk_statut > 0"; + $sql.= " AND entity = ".$conf->entity; + $sql.= " GROUP BY dm DESC"; + + if ($this->db->query($sql)) + { + $num = $this->db->num_rows(); + $i = 0; + while ($i < $num) { - $row = $this->db->fetch_row($i); - $j = $row[0] * 1; - $result[$j] = $row[1]; - $i++; + $row = $this->db->fetch_row($i); + $j = $row[0] * 1; + $result[$j] = $row[1]; + $i++; } - $this->db->free(); - } - - for ($i = 1 ; $i < 13 ; $i++) - { - $res[$i] = $result[$i] + 0; - } - - return $res; - } + $this->db->free(); + } + + for ($i = 1 ; $i < 13 ; $i++) + { + $res[$i] = $result[$i] + 0; + } + + return $res; + } } ?> diff --git a/htdocs/product/stats/contrat.php b/htdocs/product/stats/contrat.php index fdd9bc36c472655b5c865c17d934c9c34eb42581..6ef5a87632fbc3f1acab7a5e83e594354e7b8789 100644 --- a/htdocs/product/stats/contrat.php +++ b/htdocs/product/stats/contrat.php @@ -41,7 +41,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -68,15 +68,15 @@ $html = new Form($db); if ($_GET["id"] || $_GET["ref"]) { $product = new Product($db); - if ($_GET["ref"]) + if ($_GET["ref"]) { $result = $product->fetch('',$_GET["ref"]); $_GET["id"]=$product->id; } if ($_GET["id"]) $result = $product->fetch($_GET["id"]); - + llxHeader("","",$langs->trans("CardProduct".$product->type)); - + if ($result > 0) { /* @@ -94,11 +94,11 @@ if ($_GET["id"] || $_GET["ref"]) print $html->showrefnav($product,'ref','',1,'ref'); print '</td>'; print '</tr>'; - + // Libelle print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$product->libelle.'</td>'; print '</tr>'; - + // Prix print '<tr><td>'.$langs->trans("SellingPrice").'</td><td colspan="3">'; if ($product->price_base_type == 'TTC') @@ -110,18 +110,18 @@ if ($_GET["id"] || $_GET["ref"]) print price($product->price).' '.$langs->trans($product->price_base_type); } print '</td></tr>'; - + // Statut print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'; print $product->getLibStatut(2); print '</td></tr>'; show_stats_for_company($product,$socid); - + print "</table>"; print '</div>'; - + $sql = "SELECT"; $sql.= ' sum('.$db->ifsql("cd.statut=0",1,0).') as nb_initial,'; @@ -164,7 +164,7 @@ if ($_GET["id"] || $_GET["ref"]) print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(4,3).'</td>'; print '<td class="liste_titre" width="16">'.$staticcontratligne->LibStatut(5,3).'</td>'; print "</tr>\n"; - + $contratstatic=new Contrat($db); if ($num > 0) diff --git a/htdocs/product/stats/facture.php b/htdocs/product/stats/facture.php index 737b910303e8ec810fafa20786cd3137daa09f3e..682d347140087b16593124c15d02a89d031d9f60 100644 --- a/htdocs/product/stats/facture.php +++ b/htdocs/product/stats/facture.php @@ -42,7 +42,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -69,15 +69,15 @@ $html = new Form($db); if ($_GET["id"] || $_GET["ref"]) { $product = new Product($db); - if ($_GET["ref"]) + if ($_GET["ref"]) { $result = $product->fetch('',$_GET["ref"]); $_GET["id"]=$product->id; } if ($_GET["id"]) $result = $product->fetch($_GET["id"]); - + llxHeader("","",$langs->trans("CardProduct".$product->type)); - + /* * En mode visu */ @@ -86,7 +86,7 @@ if ($_GET["id"] || $_GET["ref"]) $head=product_prepare_head($product, $user); $titre=$langs->trans("CardProduct".$product->type); dol_fiche_head($head, 'referers', $titre); - + print '<table class="border" width="100%">'; // Reference @@ -99,7 +99,7 @@ if ($_GET["id"] || $_GET["ref"]) // Libelle print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$product->libelle.'</td>'; print '</tr>'; - + // Price print '<tr><td>'.$langs->trans("SellingPrice").'</td><td colspan="3">'; if ($product->price_base_type == 'TTC') @@ -111,18 +111,18 @@ if ($_GET["id"] || $_GET["ref"]) print price($product->price).' '.$langs->trans($product->price_base_type); } print '</td></tr>'; - + // Statut print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'; print $product->getLibStatut(2); print '</td></tr>'; show_stats_for_company($product,$socid); - + print "</table>"; print '</div>'; - + $sql = "SELECT distinct(s.nom), s.rowid as socid, s.code_client, f.facnumber, f.total as total_ht,"; $sql.= " ".$db->pdate("f.datef")." as date, f.paye, f.fk_statut as statut, f.rowid as facid"; diff --git a/htdocs/product/stats/facture_fournisseur.php b/htdocs/product/stats/facture_fournisseur.php index b7132659aa91857574f57fa8df3838a75e547c7f..641c3ce735bd78f8b1f2a14aab95b87c34283540 100644 --- a/htdocs/product/stats/facture_fournisseur.php +++ b/htdocs/product/stats/facture_fournisseur.php @@ -43,7 +43,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -69,13 +69,13 @@ $html = new Form($db); if ($_GET["id"] || $_GET["ref"]) { $product = new Product($db); - if ($_GET["ref"]) + if ($_GET["ref"]) { $result = $product->fetch('',$_GET["ref"]); $_GET["id"]=$product->id; } if ($_GET["id"]) $result = $product->fetch($_GET["id"]); - + llxHeader("","",$langs->trans("CardProduct".$product->type)); if ($result > 0) @@ -100,7 +100,7 @@ if ($_GET["id"] || $_GET["ref"]) // Libelle print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$product->libelle.'</td>'; print '</tr>'; - + // Prix print '<tr><td>'.$langs->trans("SellingPrice").'</td><td colspan="3">'; if ($product->price_base_type == 'TTC') @@ -112,18 +112,18 @@ if ($_GET["id"] || $_GET["ref"]) print price($product->price).' '.$langs->trans($product->price_base_type); } print '</td></tr>'; - + // Statut print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">'; print $product->getLibStatut(2); print '</td></tr>'; show_stats_for_company($product,$socid); - + print "</table>"; print '</div>'; - + $sql = "SELECT distinct(s.nom), s.rowid as socid, s.code_client, f.facnumber, f.total_ht as total_ht,"; $sql.= " ".$db->pdate("f.datef")." as date, f.paye, f.fk_statut as statut, f.rowid as facid"; diff --git a/htdocs/product/stats/fiche.php b/htdocs/product/stats/fiche.php index d4e4dee25f0918e76c939a1f6af1a716656dd732..71c50b68fbb53435c4a52c02843659254f7b6448 100644 --- a/htdocs/product/stats/fiche.php +++ b/htdocs/product/stats/fiche.php @@ -45,7 +45,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; diff --git a/htdocs/product/stats/index.php b/htdocs/product/stats/index.php index e683207a17346017c5777abb9a29fcdaa72f8d0f..febf12cf9370abab123bfb2d4dd05069cdd64e81 100644 --- a/htdocs/product/stats/index.php +++ b/htdocs/product/stats/index.php @@ -22,7 +22,7 @@ * */ -/** +/** \file htdocs/product/stats/index.php \brief Page accueil statistiques produits \version $Revision$ @@ -33,7 +33,7 @@ require_once(DOL_DOCUMENT_ROOT."/propal.class.php"); // Security check if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit'); +$result=restrictedArea($user,'produit|service'); llxHeader(); @@ -125,7 +125,7 @@ if ($conf->service->enabled) $nbproduct = $row[0]; } $db->free(); - + $sql = "SELECT count(*)"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p"; if ($conf->categorie->enabled && !$user->rights->categorie->voir) @@ -165,8 +165,8 @@ print '<br>'; print '<table class="noborder" width="100%" cellspacing="0" cellpadding="4">'; print "<tr class=\"liste_titre\">"; print "<td>Produit/Service</td>"; -print "<td>Qt� en facture</td>"; -print "<td>Qt� en propale</td>"; +print "<td>Qt� en facture</td>"; +print "<td>Qt� en propale</td>"; print "</tr>\n"; $sql = "SELECT p.label, sum(f.qty) as sumf, sum(pr.qty) as sumpr FROM ".MAIN_DB_PREFIX."product as p"; $sql.=" left join ".MAIN_DB_PREFIX."facturedet as f on p.rowid = f.fk_product"; @@ -188,13 +188,13 @@ if ($db->query($sql)) } } else { - dol_print_error($db); + dol_print_error($db); } print "</table>\n"; $db->free(); */ - + $db->close(); llxFooter('$Date$ - $Revision$'); diff --git a/htdocs/product/stats/pre.inc.php b/htdocs/product/stats/pre.inc.php index 4bf388df2b88ef3fcec631100205b01691bc14ca..bdd79452026874c266c59f2bf26fc60c241b86fd 100644 --- a/htdocs/product/stats/pre.inc.php +++ b/htdocs/product/stats/pre.inc.php @@ -34,70 +34,72 @@ function llxHeader($head = "", $urlp = "", $title="") { global $user, $conf, $langs; $langs->load("products"); - + top_menu($head, $title); - + $menu = new Menu(); - + + // Products if ($conf->produit->enabled) { $menu->add(DOL_URL_ROOT."/product/index.php?type=0", $langs->trans("Products")); $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=0", $langs->trans("List")); - - if ($user->societe_id == 0 && $user->rights->produit->creer) + + if ($user->societe_id == 0 && ($user->rights->produit->creer || $user->rights->service->creer)) { $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=0", $langs->trans("NewProduct")); } } - + + // Services if ($conf->service->enabled) { $menu->add(DOL_URL_ROOT."/product/index.php?type=1", $langs->trans("Services")); $menu->add_submenu(DOL_URL_ROOT."/product/liste.php?type=1", $langs->trans("List")); - if ($user->societe_id == 0 && $user->rights->produit->creer) + if ($user->societe_id == 0 && ($user->rights->produit->creer || $user->rights->service->creer)) { $menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&type=1", $langs->trans("NewService")); } } - + if ($conf->boutique->enabled) { - + $menu->add(DOL_URL_ROOT."/product/osc-liste.php", "Osc"); - $menu->add_submenu(DOL_URL_ROOT."/product/osc-liste.php?reqstock=epuise", "Produits Epuis�s"); - - + $menu->add_submenu(DOL_URL_ROOT."/product/osc-liste.php?reqstock=epuise", "Produits Epuis�s"); + + $menu->add(DOL_URL_ROOT."/product/osc-reviews.php", "Critiques"); - + $menu->add_submenu(DOL_URL_ROOT."/product/osc-productsbyreviews.php", "Meilleurs produits"); - + $menu->add(DOL_URL_ROOT."/product/album/", "Albums"); $menu->add(DOL_URL_ROOT."/product/groupart/", "Groupes/Artistes"); - + $menu->add(DOL_URL_ROOT."/product/categorie/", $langs->trans("Categories")); } - + if ($conf->fournisseur->enabled) { $langs->load("suppliers"); $menu->add(DOL_URL_ROOT."/fourn/index.php", $langs->trans("Suppliers")); } - + $menu->add(DOL_URL_ROOT."/product/stats/", $langs->trans("Statistics")); if ($conf->propal->enabled) { $menu->add_submenu(DOL_URL_ROOT."/product/popuprop.php", $langs->trans("Popularity")); } - + if ($conf->stock->enabled) { $menu->add(DOL_URL_ROOT."/product/stock/", $langs->trans("Stock")); } - + if ($conf->categorie->enabled) { $menu->add(DOL_URL_ROOT."/categories/", $langs->trans("Categories")); } - + left_menu($menu->liste); } ?> diff --git a/htdocs/product/stats/propal.php b/htdocs/product/stats/propal.php index c66ed9022a475a27924c64cdaea3a4c7bd734391..c2096a61d086b5969938ceb5aa59863989acafa3 100644 --- a/htdocs/product/stats/propal.php +++ b/htdocs/product/stats/propal.php @@ -41,7 +41,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); $mesg = ''; @@ -71,7 +71,7 @@ if ($_GET["id"] || $_GET["ref"]) $_GET["id"]=$product->id; } if ($_GET["id"]) $result = $product->fetch($_GET["id"]); - + llxHeader("","",$langs->trans("CardProduct".$product->type)); if ( $result > 0) @@ -96,7 +96,7 @@ if ($_GET["id"] || $_GET["ref"]) // Libelle print '<tr><td>'.$langs->trans("Label").'</td><td colspan="3">'.$product->libelle.'</td>'; print '</tr>'; - + // Prix print '<tr><td>'.$langs->trans("SellingPrice").'</td><td colspan="3">'; if ($product->price_base_type == 'TTC') @@ -115,7 +115,7 @@ if ($_GET["id"] || $_GET["ref"]) print '</td></tr>'; show_stats_for_company($product,$socid); - + print "</table>"; print '</div>'; diff --git a/htdocs/product/traduction.php b/htdocs/product/traduction.php index 1408757118b6f5ebf4f7f4b9f16ccf509baeb1fb..2d03ec30bea92c6bc9f1f910c29b8eb2d35d98c9 100644 --- a/htdocs/product/traduction.php +++ b/htdocs/product/traduction.php @@ -42,7 +42,7 @@ if (isset($_GET["id"]) || isset($_GET["ref"])) } $fieldid = isset($_GET["ref"])?'ref':'rowid'; if ($user->societe_id) $socid=$user->societe_id; -$result=restrictedArea($user,'produit',$id,'product','','',$fieldid); +$result=restrictedArea($user,'produit|service',$id,'product','','',$fieldid); /* @@ -58,7 +58,7 @@ if ($_POST["cancel"] == $langs->trans("Cancel")) // Validation de l'ajout if ($_POST["action"] == 'vadd' && $_POST["cancel"] != $langs->trans("Cancel") && -$user->rights->produit->creer) +($user->rights->produit->creer || $user->rights->service->creer)) { $product = new Product($db); $product->fetch($_POST["id"]); @@ -82,19 +82,19 @@ $user->rights->produit->creer) if ( $product->setMultiLangs() > 0 ) { $_GET["action"] = ''; - $mesg = 'Fiche mise � jour'; + $mesg = 'Fiche mise � jour'; } else { $_GET["action"] = 'add'; - $mesg = 'Fiche non mise � jour !' . "<br>" . $product->mesg_error; + $mesg = 'Fiche non mise � jour !' . "<br>" . $product->mesg_error; } } // Validation de l'edition if ($_POST["action"] == 'vedit' && $_POST["cancel"] != $langs->trans("Cancel") && -$user->rights->produit->creer) +($user->rights->produit->creer || $user->rights->service->creer)) { $product = new Product($db); $product->fetch($_POST["id"]); @@ -119,12 +119,12 @@ $user->rights->produit->creer) if ( $product->setMultiLangs() > 0 ) { $_GET["action"] = ''; - $mesg = 'Fiche mise � jour'; + $mesg = 'Fiche mise � jour'; } else { $_GET["action"] = 'edit'; - $mesg = 'Fiche non mise � jour !' . "<br>" . $product->mesg_error; + $mesg = 'Fiche non mise � jour !' . "<br>" . $product->mesg_error; } } @@ -229,7 +229,7 @@ print "</div>\n"; print "\n<div class=\"tabsAction\">\n"; if ($_GET["action"] == '') -if ($user->rights->produit->modifier || $user->rights->produit->creer) +if ($user->rights->produit->creer || $user->rights->service->creer) { print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/traduction.php?action=edit&id='.$product->id.'">'.$langs->trans("Update").'</a>'; print '<a class="butAction" href="'.DOL_URL_ROOT.'/product/traduction.php?action=add&id='.$product->id.'">'.$langs->trans("Add").'</a>'; @@ -241,12 +241,12 @@ print "\n</div>\n"; /* * Formulaire d'ajout de traduction */ -if ($_GET["action"] == 'add' || $user->rights->produit->modifier) +if ($_GET["action"] == 'add' || ($user->rights->produit->creer || $user->rights->service->creer)) { $langs_available = $langs->get_available_languages(); $current_lang = $langs->getDefaultLang(); - // on construit la liste des traduction qui n'existe pas d�j� + // on construit la liste des traduction qui n'existe pas deja $select = '<select class="flat" name="lang">'; foreach ($langs_available as $value) if ( !array_key_exists($value, $product->multilangs) ) // si la traduction n'existe pas diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 620557aa0439b678a67169860841930857daea3d..0895dae77f3f3ed5c5879b89d33ed879f52f07bd 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -201,7 +201,7 @@ if ($modulepart) elseif (eregi('^productstats_',$modulepart)) { $user->getrights('produit'); - if ($user->rights->produit->lire) + if ($user->rights->produit->lire || $user->rights->service->lire) { $accessallowed=1; } @@ -212,7 +212,7 @@ if ($modulepart) elseif ($modulepart == 'product') { $user->getrights('produit'); - if ($user->rights->produit->lire) + if ($user->rights->produit->lire || $user->rights->service->lire) { $accessallowed=1; } @@ -297,7 +297,7 @@ if ($modulepart) //$original_file=$conf->barcode->dir_temp.'/'.$original_file; $original_file=''; } - + // Wrapping pour les icones de background des mailings elseif ($modulepart == 'iconmailing') {