From 8732364f01a4b1f9b3750c1b4e2653e4a1625f7f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@users.sourceforge.net> Date: Mon, 8 Jun 2009 18:14:37 +0000 Subject: [PATCH] Qual: Now module services and products are two completely separated modules. --- htdocs/categories/categorie.php | 8 +- htdocs/comm/pre.inc.php | 176 ++++++------ htdocs/comm/propal/pre.inc.php | 154 +++++----- htdocs/comm/propal/stats/pre.inc.php | 166 +++++------ htdocs/docs/pre.inc.php | 2 +- htdocs/document.php | 3 +- htdocs/ecm/index.php | 2 +- htdocs/ecm/search.php | 2 +- htdocs/expedition/fiche.php | 2 +- htdocs/fourn/commande/fiche.php | 4 +- htdocs/fourn/facture/fiche.php | 4 +- htdocs/fourn/pre.inc.php | 11 +- htdocs/fourn/product/categorie.php | 64 ++--- htdocs/fourn/product/fourn.php | 271 +++++++++--------- htdocs/fourn/product/index.php | 6 +- htdocs/fourn/product/liste.php | 22 +- htdocs/fourn/product/photos.php | 24 +- htdocs/fourn/product/pre.inc.php | 2 +- htdocs/imports/import.class.php | 6 +- .../barcode/html.formbarcode.class.php | 40 +-- htdocs/includes/boxes/box_produits.php | 12 +- htdocs/includes/boxes/box_services_vendus.php | 14 +- .../menus/barre_left/eldy_backoffice.php | 12 +- .../menus/barre_left/eldy_frontoffice.php | 12 +- .../menus/barre_top/eldy_backoffice.php | 2 +- .../menus/barre_top/eldy_frontoffice.php | 4 +- htdocs/includes/menus/barre_top/rodolphe.php | 2 +- htdocs/includes/menus/init_menu_auguria.sql | 14 +- htdocs/includes/modules/modProduit.class.php | 17 +- htdocs/includes/modules/modService.class.php | 73 ++--- htdocs/index.php | 2 +- htdocs/langs/ca_ES/admin.lang | 12 +- htdocs/langs/en_US/admin.lang | 12 +- htdocs/langs/es_ES/admin.lang | 12 +- htdocs/langs/fr_FR/admin.lang | 12 +- htdocs/langs/it_IT/admin.lang | 225 ++++++++------- htdocs/langs/nb_NO/admin.lang | 13 +- htdocs/lib/functions.lib.php | 10 +- htdocs/livraison/fiche.php | 2 +- htdocs/main.inc.php | 3 +- htdocs/oscommerce_ws/clients/fiche.php | 253 ++++++++-------- htdocs/oscommerce_ws/produits/fiche.php | 27 +- htdocs/pre.inc.php | 2 +- htdocs/product/barcode.php | 2 +- htdocs/product/document.php | 8 +- htdocs/product/fiche.php | 14 +- htdocs/product/fournisseurs.php | 86 +++--- htdocs/product/index.php | 2 +- htdocs/product/liste.php | 2 +- htdocs/product/photos.php | 14 +- htdocs/product/popuprop.php | 12 +- htdocs/product/pre.inc.php | 9 +- htdocs/product/price.php | 8 +- htdocs/product/reassort.php | 2 +- htdocs/product/sousproduits/fiche.php | 13 +- htdocs/product/sousproduits/pre.inc.php | 142 +++++---- htdocs/product/stats/commande.php | 14 +- htdocs/product/stats/commande_fournisseur.php | 34 +-- htdocs/product/stats/commandestats.class.php | 269 ++++++++--------- htdocs/product/stats/contrat.php | 20 +- htdocs/product/stats/facture.php | 18 +- htdocs/product/stats/facture_fournisseur.php | 14 +- htdocs/product/stats/fiche.php | 2 +- htdocs/product/stats/index.php | 14 +- htdocs/product/stats/pre.inc.php | 42 +-- htdocs/product/stats/propal.php | 8 +- htdocs/product/traduction.php | 20 +- htdocs/viewimage.php | 6 +- 68 files changed, 1254 insertions(+), 1237 deletions(-) diff --git a/htdocs/categories/categorie.php b/htdocs/categories/categorie.php index 11f75c4f3e5..294c11ca7b5 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 0d72f3232dd..efca3294bf8 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 d8ffda73af1..a8ce30107c2 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 9e93f2ea0c1..7d73113d906 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 f3b9b7cf72a..efb2469e5b2 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 44abced1b35..d2babbac6a9 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 197c7e88ebd..5bb3b44a948 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 c1203a1c841..3c020f9f00f 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 35c744c34bf..7e1f97a9e1d 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 3073c8b9be4..a22d835ef66 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 cb07cd08935..f654fd2c184 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 0bf349d652e..31efe8c3bce 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 9898005e0d2..b964930dad4 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 44629d2eb67..6f73727d160 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 31f4148213f..9260cef3b6e 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 c1abf85fcb9..083e7ef3aa6 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 e6528dc915b..316093ead9f 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 bae4783edf9..89b5a55bc67 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 ae4df7d89d2..4bae0ea4846 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 dfd0c6673db..1cd74ca2ccf 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 68ae85cb8ad..403576ffec6 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 87338956d9a..3a3eb94211d 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 a9a178799a9..37e3dcd4467 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 782ba4b7adc..a3a742e87c2 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 fbc842ae19f..22020508df4 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 d23861c8789..5ff062535ae 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 b5cadb4be9c..074aa1e6fe0 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 db83942acd2..4e5b2aa5f6d 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 affa8377b89..0ee645177ac 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 240aae9ccbc..98ec01fc033 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 9d714525dbc..bb543bf76c4 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 d49abe2a4c3..59da8fca770 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 13ccf606d08..1971d31ee49 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 6c03388bef4..9562c2ddf08 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 dd5d6e5af6f..7c7a54acc15 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 fb50997929a..caad037b31a 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 350ed181611..3f14d039efb 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 0e56ae1258c..b492c777d26 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 2f9c8e56a27..7d6af0a1a42 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 ad20b399bc8..b71a553619c 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 bd37ee16b18..51929f79417 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 9a6e9215c4a..914231190b6 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 762e8d56d6f..449b709b02f 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 4fb485cb85c..ccc046a31fe 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 11aeb18ab8f..4cf75df3f07 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 7cc49d0b52e..c8b10e4c12f 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 73185af8273..c236d2d3ae0 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 89101d736e3..bb691281abd 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 c7d492b85b0..c36750ab233 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 30e54e214d0..500fc5291a7 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 9e0f0ecb66b..dbb4ff443c9 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 ba0c9c7f260..cc708d0dd6d 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 18c8703b5c9..f373678b2f4 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 3ab61f07705..541c466ab3d 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 e5c6245d949..9d81c31fe22 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 103f1d20687..a5f7c01e0ed 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 5852a2c9c36..c3c89b5f7c6 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 5f685ac77c3..ba5f775d7f6 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 e48be2bc3aa..766c539adfd 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 fdd9bc36c47..6ef5a87632f 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 737b910303e..682d3471400 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 b7132659aa9..641c3ce735b 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 d4e4dee25f0..71c50b68fbb 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 e683207a173..febf12cf937 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 4bf388df2b8..bdd79452026 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 c66ed9022a4..c2096a61d08 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 1408757118b..2d03ec30bea 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 620557aa043..0895dae77f3 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') { -- GitLab