Qual: Now module services and products are two completely separated modules.

This commit is contained in:
Laurent Destailleur 2009-06-08 18:14:37 +00:00
parent 17fb177920
commit 8732364f01
68 changed files with 1217 additions and 1200 deletions

View File

@ -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."&amp;typeid=".$typeid."&amp;removecat=".$cat->id."'>";

View File

@ -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;
global $user, $conf, $langs;
$langs->load("companies");
$langs->load("commercial");
$langs->load("companies");
$langs->load("commercial");
top_menu($head, $langs->trans($title));
top_menu($head, $langs->trans($title));
$menu = new Menu();
$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&amp;type=c", $langs->trans("MenuNewCustomer"));
}
// 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&amp;type=c", $langs->trans("MenuNewCustomer"));
}
$menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=c", $langs->trans("Contacts"));
$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&amp;type=p", $langs->trans("MenuNewProspect"));
}
// 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&amp;type=p", $langs->trans("MenuNewProspect"));
}
$menu->add_submenu(DOL_URL_ROOT."/comm/contact.php?type=p", $langs->trans("Contacts"));
$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"));
$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"));
}
// 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->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 ($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 ($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->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->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"));
}
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);
left_menu($menu->liste, $help_url);
}
?>

View File

@ -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;
global $user, $conf, $langs;
$langs->load("companies");
$langs->load("companies");
top_menu($head);
top_menu($head);
$menu = new Menu();
$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&amp;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&amp;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"));
// 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&amp;type=c", $langs->trans("MenuNewCustomer"));
}
left_menu($menu->liste);
$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&amp;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"));
}
left_menu($menu->liste);
}

View File

@ -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;
global $user, $conf, $langs;
$langs->load("companies");
$langs->load("companies");
top_menu($head);
top_menu($head);
$menu = new Menu();
$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&amp;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&amp;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"));
// 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&amp;type=c", $langs->trans("MenuNewCustomer"));
}
left_menu($menu->liste);
$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&amp;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"));
}
left_menu($menu->liste);
}
?>

View File

@ -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="";

View File

@ -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;
}

View File

@ -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")); }

View File

@ -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")); }

View File

@ -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");

View File

@ -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">';

View File

@ -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">';

View File

@ -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<EFBFBD>curit<EFBFBD> acc<63>s client
if ($user->societe_id == 0 && $user->rights->societe->creer)
{
$menu->add_submenu(DOL_URL_ROOT."/soc.php?action=create&amp;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<EFBFBD>gories fournisseurs
$menu->add(DOL_URL_ROOT."/categories/index.php?leftmenu=cat&amp;type=1", $langs->trans("SuppliersCategoriesShort"), 0);
}

View File

@ -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<EFBFBD>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<EFBFBD>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<EFBFBD>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<EFBFBD> le produit dans les cat<61>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."&amp;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();

View File

@ -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.'&amp;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.'&amp;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," &gt; ",'fourn/product/liste.php');
if ($way == "")
{
print "Ce produit n'appartient à aucune catégorie";
}
{
print "Ce produit n'appartient <20> aucune cat<61>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 '<tr><td>'.$langs->trans("Label").'</td><td colspan="2">'.$product->libelle.'</td></tr>';
print '<td class="photo" valign="top" rowspan="6">';
$product->show_photos($conf->produit->dir_output,1,1,0);
print '</td></tr>';
print '<tr><td width="20%">'.$langs->trans("InternalRef").'</td><td width="40%">'.$product->ref.'</td>';
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).'&nbsp;</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 '<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).'&nbsp;</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.'&amp;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&amp;id='.$product->id.'&amp;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&amp;id='.$product->id.'&amp;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&egrave;re modification $Date$ r&eacute;vision $Revision$</em>");
?>

View File

@ -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"));

View File

@ -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)?"&amp;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++;
}

View File

@ -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<EFBFBD>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"].'&amp;action=delete&amp;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&amp;id='.$product->id.'">';
print $langs->trans("AddPhoto").'</a>';
print '<a class="butAction" href="photos.php?action=ajout_photo&amp;id='.$product->id.'">';
print $langs->trans("AddPhoto").'</a>';
}
}
print "\n</div>\n";
}
else
{
@ -215,11 +213,7 @@ else
$db->close();
llxFooter("<em>Derni&egrave;re modification $Date$ r&eacute;vision $Revision$</em>");
llxFooter('$Date$ - $Revision$');
?>

View File

@ -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&amp;type=0", $langs->trans("NewProduct"));
}

View File

@ -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++;
// }
}

View File

@ -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<EFBFBD>d<EFBFBD>finie de composants html
\version $Revision$
*/
/**
\class Form
\brief Classe permettant la génération de composants html
\brief Classe permettant la g<EFBFBD>n<EFBFBD>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<EFBFBD>s base de donn<EFBFBD>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<EFBFBD>lection du g<EFBFBD>n<EFBFBD>rateur de codes barres
* \param selected Id code pr<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>
* \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<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>
* \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">&nbsp;</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<EFBFBD>-s<EFBFBD>lectionn<EFBFBD>e
* \param htmlname Nom du formulaire select
*/
function form_barcode_type($page, $selected='', $htmlname='barcodetype_id')

View File

@ -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);
}
}
?>

View File

@ -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,

View File

@ -606,26 +606,26 @@ class MenuLeft {
}
if ($conf->propal->enabled)
{
$newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&amp;type=0", $langs->trans("Popularity"), 1, $user->rights->propale->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&amp;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&amp;type=1", $langs->trans("Services"), 0, $user->rights->produit->lire);
$newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=service&amp;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&amp;action=create&amp;type=1", $langs->trans("NewService"), 1, $user->rights->produit->creer);
$newmenu->add_submenu(DOL_URL_ROOT."/product/fiche.php?leftmenu=service&amp;action=create&amp;type=1", $langs->trans("NewService"), 1, $user->rights->service->creer);
}
$newmenu->add_submenu(DOL_URL_ROOT."/product/liste.php?leftmenu=service&amp;type=1", $langs->trans("List"), 1, $user->rights->produit->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/product/liste.php?leftmenu=service&amp;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&amp;type=1", $langs->trans("Popularity"), 1, $user->rights->propale->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&amp;type=1", $langs->trans("Popularity"), 1, $user->rights->service->lire && $user->rights->propale->lire);
}
}

View File

@ -588,27 +588,27 @@ class MenuLeft {
}
if ($conf->propal->enabled)
{
$newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&amp;type=0", $langs->trans("Popularity"), 1, $user->rights->propale->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&amp;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&amp;type=1", $langs->trans("Services"), 0, $user->rights->produit->lire);
$newmenu->add(DOL_URL_ROOT."/product/index.php?leftmenu=service&amp;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&amp;action=create&amp;type=1", $langs->trans("NewService"), 1, $user->rights->produit->creer);
$newmenu->add_submenu(DOL_URL_ROOT."/product/fiche.php?leftmenu=service&amp;action=create&amp;type=1", $langs->trans("NewService"), 1, $user->rights->service->creer);
}
$newmenu->add_submenu(DOL_URL_ROOT."/product/liste.php?leftmenu=service&amp;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&amp;type=1", $langs->trans("Popularity"), 1, $user->rights->propale->lire);
$newmenu->add_submenu(DOL_URL_ROOT."/product/popuprop.php?leftmenu=stats&amp;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&amp;type=1", $langs->trans("List"), 1, $user->rights->produit->lire);
}
// Categories

View File

@ -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&amp;leftmenu="'.($this->atarget?" target=$this->atarget":"").'>'.$chaine.'</a>';

View File

@ -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&amp;leftmenu="'.($this->atarget?" target=$this->atarget":"").'>'.$chaine.'</a>';
@ -452,7 +452,7 @@ class MenuTop {
print '</tr></table>';
}
}
?>

View File

@ -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&amp;leftmenu="'.($this->atarget?" target=$this->atarget":"").'>'.$chaine.'</a></td>';
}

View File

@ -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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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__);

View File

@ -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;

View File

@ -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';
$r=0;
/* 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';
$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';
$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';
$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';
$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++;
$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';
}

View File

@ -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,

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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. <EFBFBD> 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 <EFBFBD> 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<EFBFBD> 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 <EFBFBD> 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 <EFBFBD>
NoMaxSizeByPHPLimit =Nota: Nessun limite <EFBFBD> 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<EFBFBD>
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, <EFBFBD> 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 <EFBFBD> necessario. Esso <20> fornito per gli utenti Dolibarr cui <20> 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<EFBFBD> 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<EFBFBD> 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, <EFBFBD> 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<EFBFBD> dei file di esportazione generati
MySqlExportParameters =MySQL esportazione parametri
UseTransactionnalMode =Utilizzare la modalità transazionale
UseTransactionnalMode =Utilizzare la modalit<EFBFBD> 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<EFBFBD>
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. <EFBFBD> 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 <EFBFBD> attivata la funzionalit<69> del software. Alcuni moduli richiedono le autorizzazioni <20> necessario concedere agli utenti, dopo che consenta modulo.
ModulesInterfaceDesc =Il Dolibarr moduli interfaccia permette di aggiungere nuove funzionalit<EFBFBD> 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<EFBFBD>.
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 <EFBFBD> disattivato
AvailableOnlyIfJavascriptNotDisabled =Disponibile solo se JavaScript non <EFBFBD> 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 <EFBFBD> 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 <EFBFBD> pi<70> 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<EFBFBD> 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 <EFBFBD> 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<EFBFBD> / Tesoro)
ModuleFamilyECM =ECM
MenuHandlers =Menu gestori
MenuAdmin =Menu editor
ThisIsProcessToFollow =Questa è l'impostazione del processo:
ThisIsProcessToFollow =Questa <EFBFBD> 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 <EFBFBD> finito e Dolibarr <20> 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<EFBFBD> incrementato in ogni %s. Inserisci il numero di zeri euivalente alla lunghezza desiderata del contatore. Il contatore sar<EFBFBD> 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 <EFBFBD> raggiunto (x <20> tra 1 e 12). Se viene utilizzata questa opzione e x <20> 2 o superiore, allora la sequenza {yy}{mm} o {yyyy}{mm} <20> 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<EFBFBD> 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<EFBFBD> <b> ABC0701-000099 </b> <br> <b> {0000+100}-ZZZ/{dd}/XXX </b> dar<61> <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 <EFBFBD> disponibile presso l'indirizzo <b> %s </b> sulla porta <b> %s </b>
ServerNotAvailableOnIPOrPort =Server non <EFBFBD> disponibile presso l'indirizzo <b> %s </b> sulla porta <b> %s </b>
DoTestServerAvailability =Server di test di connettivit<EFBFBD>
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 <EFBFBD> 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<EFBFBD>
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<EFBFBD> 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<EFBFBD> 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 <EFBFBD> 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<EFBFBD>) di altri
Permission2405 =Creare / modificare / cancellare le azioni (eventi o attivit<EFBFBD>) di altri
Permission2500 =Leggere documenti
Permission2501 =Presentare o cancellare i documenti
Permission2515 =Impostazioni Directory documenti
DictionnaryCompanyType =Tipi di società
DictionnaryCompanyType =Tipi di societ<EFBFBD>
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<EFBFBD> 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 <EFBFBD> soggetto ad IVA, quindi IVA per impostazione predefinita
VATIsNotUsedDesc =Per impostazione predefinita la proposta di IVA <EFBFBD> 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 <EFBFBD> dichiarata.
VATIsNotUsedExampleFR =In Francia, ci<EFBFBD> significa che le associazioni non sono IVA dichiarata o le societ<65>, 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<EFBFBD> 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 <EFBFBD> stato aggiornato con successo
MenuCompanySetup =Societ<EFBFBD> / 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<EFBFBD> principale
MenuLeftManager =Gestione men<EFBFBD> a sinistra
DefaultMenuTopManager =Gestione men<EFBFBD> principale
DefaultMenuLeftManager =Gestione men<EFBFBD> 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 <EFBFBD> stato aggiornato con successo
CompanyInfo =Informazioni societ<EFBFBD> / fondazione
CompanyIds =Identit<EFBFBD> societ<65> / fondazione
CompanyName =Nome
CompanyAddress =Indirizzo
CompanyZip =Cap
CompanyTown =Città
CompanyTown =Citt<EFBFBD>
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<EFBFBD> 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> <EFBFBD> necessaria perch<63> 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<EFBFBD> Dolibarr non <20> un semplice ERP / CRM, ma una somma di diversi moduli, tutti pi<70> 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 =<EFBFBD> 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<EFBFBD> consumare una grande quantit<69> 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<EFBFBD> di sola lettura e solo agli amministratori.
SystemAreaForAdminOnly =Questa sezione <EFBFBD> disponibile solo agli utenti ti tipo amministratore. Nessuna delle autorizzazioni Dolibarr pu<70> ridurre questo limite.
CompanyFundationDesc =Modifica in questa pagina tutte le informazioni note della societ<EFBFBD> o della fondazione che intendi gestire
DisplayDesc =Qui <EFBFBD> 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> <EFBFBD> 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> <EFBFBD> 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. <EFBFBD> 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 =<EFBFBD> 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 <EFBFBD> stato ancora registrato. Questo pu<70> essere un normale controllo se non <20> stato attivato sulla pagina "Impostazioni - sicurezza - controllo".
NoEventFoundWithCriteria =Nessun evento di sicurezza <EFBFBD> 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<EFBFBD> (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<EFBFBD> codice dipende dal codice di terze parti. Il codice <20> 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<EFBFBD> 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 <EFBFBD> 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> <EFBFBD> disponibile al seguente link: %s
WebCalCheckWebcalSetup =Forse il webcal modulo di impostazione non <EFBFBD> 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<EFBFBD> predefinite di pagamento delle fatture, se non gi<67> definite per la fattura
EnableEditDeleteValidInvoice =Attiva la possibilit<EFBFBD> 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<EFBFBD> di inserire la data di spedizione
AddDeliveryAddressAbility =Aggiungi la possibilit<EFBFBD> di inserire la data di consegna
UseOptionLineIfNoQuantity =Una linea di prodotto / servizio con un importo pari a zero <EFBFBD> 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 <EFBFBD> fatto. Dans l'url, vous pouvez utiliser les balises<br><b>%%1$s</b> qui sera remplac<EFBFBD> par le t<>l<EFBFBD>phone de l'appel<65><br><b>%%2$s</b> qui sera remplac<61> par le t<>l<EFBFBD>phone de l'appelant (le votre)<br><b>%%3$s</b> qui sera remplac<61> par votre login clicktodial (d<>fini sur votre fiche utilisateur)<br><b>%%4$s</b> qui sera remplac<61> 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 <EFBFBD><EFBFBD> ussie
LDAPConnectToDNFailed =Connessione al DN ( %s) <EFBFBD><EFBFBD> <20> <20><> chou<6F> 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<EFBFBD>
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<EFBFBD>
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<EFBFBD> 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 <EFBFBD> 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 <EFBFBD> recevied e firmata dal cliente. Quindi, le consegne ricevute prodotto <20> un duplicato caratteristica e raramente <20> 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<EFBFBD> '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 <EFBFBD> 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 <EFBFBD> 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<EFBFBD> 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<EFBFBD> de la TVA est:<br>- sur livraison pour les biens<br>- sur paiement pour les services
OptionVatDebitOptionDesc =L'exigibilit<EFBFBD> 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&#39;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&#39;IVA di default = 0. Fine della regola. <br> Se la (vendita paese = paese di acquisto), quindi l&#39;IVA di default = IVA del prodotto nel paese di vendita. Fine della regola. <br> Se il venditore e l&#39;acquirente nella Comunità europea e le merci sono vendute avere nuovi mezzi di trasporto (auto, nave, aereo), il default IVA = 0 (L&#39;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&#39;acquirente nella Comunità europea e dei beni venduti da altri mezzi, piuttosto che i nuovi mezzi di trasporto, quindi l&#39;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&#39;aliquota IVA per impostazione predefinita durante la creazione di prospettive, fatture, ordini, ecc seguire la regola standard attivi: <br> Se il venditore <EFBFBD> soggetto ad IVA, quindi l&#39;IVA di default = 0. Fine della regola. <br> Se la (vendita paese = paese di acquisto), quindi l&#39;IVA di default = IVA del prodotto nel paese di vendita. Fine della regola. <br> Se il venditore e l&#39;acquirente nella Comunit<EFBFBD> europea e le merci sono vendute avere nuovi mezzi di trasporto (auto, nave, aereo), il default IVA = 0 (L&#39;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&#39;acquirente nella Comunit<EFBFBD> europea e dei beni venduti da altri mezzi, piuttosto che i nuovi mezzi di trasporto, quindi l&#39;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&#39;accesso da altre sessioni.
SessionExplanation=Questo numero di garanzia che non sar<EFBFBD> mai sessione scade prima di questo ritardo. Ma PHP sessoin di gestione non <20> sempre garanzia che sessione scade dopo questo ritardo: Questo si verifica se un sistema per la pulizia della cache di sessione <EFBFBD> in esecuzione. <br> Nota: con particolare sistema interno PHP processo pulito ogni sessione <b>su% s /% s</b> di accesso, ma solo durante l&#39;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 <EFBFBD> fatto. <br> URL completo sar<61>: URL?login=...&password=...&caller=...&called=phonecalled
MemberSendInformationByMailByDefault=Checkbox per inviare una mail di conferma per i membri <EFBFBD> attivata per impostazione predefinita
LDAPAdminDnExample=Complete DN (ex: cn=adminldap,dc=society,dc=DN completo (ad esempio: cn = adminldap, dc = societ<EFBFBD>, dc = it)
LDAPUserDnExample=Complete DN (ex: ou=users,dc=society,dc=DN completo (es: ou = utenti, dc = societ<EFBFBD>, dc = it)
LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=society,dc=DN completo (es: ou = gruppo, dc = societ<EFBFBD>, 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<EFBFBD>, dc = it)
LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=DN completo (es: ou = membri, dc = societ<EFBFBD>, dc = it)
LDAPMemberTypeDnExample=Complete DN (ex: ou=type_members,dc=society,dc=DN completo (es: ou = type_members, dc = societ<EFBFBD>, 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)

View File

@ -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

View File

@ -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";

View File

@ -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");

View File

@ -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',

View File

@ -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 ($_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>';
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>";
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<EFBFBD>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";
/* ************************************************************************** */
/* */
/* Barre d'action */
/* */
/* ************************************************************************** */
print "\n<div class=\"tabsAction\">\n";
if ( $user->rights->societe->creer) {
print '<a class="butAction" href="fiche.php?action=import&amp;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
{
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";
}
print '<a class="butAction" href="fiche.php?action=import&amp;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
/* 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)
}
else
{
print "\n<div class=\"tabsAction\">\n";
print '<p>Ce client existe déjà mise à jour à prévoir</p>';
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 {
$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)
}
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 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 '<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)
{
print "\n<div class=\"tabsAction\">\n";
print '<p>Ce client existe d<>j<EFBFBD> mise <20> jour <20> pr<70>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<63>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<EFBFBD>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$');
?>

View File

@ -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&amp;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&amp;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<EFBFBD>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<EFBFBD>j<EFBFBD></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<EFBFBD>ation r<>ussie produit '.$id.' r<>f<EFBFBD>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<EFBFBD>f<EFBFBD>rence existe on fait un update */
$product_control = new Product($db);
if ($_error == 1)
{

View File

@ -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="";

View File

@ -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

View File

@ -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<EFBFBD>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<EFBFBD>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

View File

@ -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&amp;id='.$product->id.'">'.$langs->trans("Modify").'</a>';

View File

@ -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<EFBFBD>cup<EFBFBD>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 '&nbsp; &nbsp;';
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.'&amp;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<EFBFBD>
print '<td align="center">';
print $objp->quantity;
print '</td>';
// Prix quantité
// Prix quantit<EFBFBD>
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):"&nbsp;");
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.'&amp;socid='.$objp->socid.'&amp;action=add_price&amp;rowid='.$objp->rowid.'">'.img_edit()."</a>";
print '<a href="fournisseurs.php?id='.$product->id.'&amp;socid='.$objp->socid.'&amp;action=remove_pf&amp;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>';
}
}

View File

@ -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);

View File

@ -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();

View File

@ -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<EFBFBD>
$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<EFBFBD>n<EFBFBD>ration de la vignette si elle n'existe pas et si la taille est sup<75>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"].'&amp;action=addthumb&amp;file='.urlencode($pdir.$viewfilename).'">'.img_refresh($langs->trans('GenerateThumb')).'&nbsp;&nbsp;</a>';
}
if ($user->rights->produit->creer)
if ($user->rights->produit->creer || $user->rights->service->creer)
{
print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'&amp;action=delete&amp;file='.urlencode($pdir.$viewfilename).'">';
print img_delete().'</a>';

View File

@ -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<EFBFBD>
\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.'">';

View File

@ -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&amp;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&amp;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"));
}

View File

@ -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&amp;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"),'','');

View File

@ -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"];

View File

@ -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&amp;id='.$id.'">'.$langs->trans("EditAssociate").'</a>';
}
}
print "\n</div>\n";

View File

@ -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");
$menu = new Menu();
top_menu($head, $title);
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"));
$menu = new Menu();
if ($user->societe_id == 0 && $user->rights->produit->creer)
// Products
if ($conf->produit->enabled)
{
$menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&amp;type=0", $langs->trans("NewProduct"));
}
}
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&amp;type=1", $langs->trans("NewService"));
}
}
$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->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);
/*
*
*
*/
if ($user->societe_id == 0 && $user->rights->produit->creer)
{
$menu->add_submenu(DOL_URL_ROOT."/product/fiche.php?action=create&amp;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&amp;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<69>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);
/*
*
*
*/
}
?>

View File

@ -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";

View File

@ -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"],"&amp;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","","&amp;id=".$_GET["id"],'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","&amp;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","","&amp;id=".$_GET["id"],'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"c.fk_statut","","&amp;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;

View File

@ -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 ;
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";
function CommandeStats($DB)
{
$this->db = $DB;
}
if ($this->db->query($sql))
{
$num = $this->db->num_rows();
$i = 0;
while ($i < $num)
/**
* 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";
$this->db->free();
}
return $result;
}
/**
* Renvoie le nombre de commande par mois pour une ann<EFBFBD>e donn<EFBFBD>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)
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;
}
$this->db->free();
}
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";
for ($i = 1 ; $i < 13 ; $i++)
{
$res[$i] = $result[$i] + 0;
}
if ($this->db->query($sql))
{
$num = $this->db->num_rows();
$i = 0;
while ($i < $num)
return $res;
}
/**
* Renvoie le nombre de commande par mois pour une ann<EFBFBD>e donn<EFBFBD>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;
}
$this->db->free();
}
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";
for ($i = 1 ; $i < 13 ; $i++)
{
$res[$i] = $result[$i] + 0;
}
if ($this->db->query($sql))
{
$num = $this->db->num_rows();
$i = 0;
while ($i < $num)
return $res;
}
/**
* Renvoie le nombre de commande par mois pour une ann<EFBFBD>e donn<EFBFBD>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;
}
$this->db->free();
}
return $res;
}
for ($i = 1 ; $i < 13 ; $i++)
{
$res[$i] = $result[$i] + 0;
}
return $res;
}
}
?>

View File

@ -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)

View File

@ -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";

View File

@ -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";

View File

@ -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 = '';

View File

@ -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<EFBFBD> en facture</td>";
print "<td>Qt<EFBFBD> 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$');

View File

@ -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&amp;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&amp;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<EFBFBD>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);
}
?>

View File

@ -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>';

View File

@ -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 <EFBFBD> jour';
}
else
{
$_GET["action"] = 'add';
$mesg = 'Fiche non mise à jour !' . "<br>" . $product->mesg_error;
$mesg = 'Fiche non mise <EFBFBD> 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 <EFBFBD> jour';
}
else
{
$_GET["action"] = 'edit';
$mesg = 'Fiche non mise à jour !' . "<br>" . $product->mesg_error;
$mesg = 'Fiche non mise <EFBFBD> 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

View File

@ -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')
{