2004-10-20 00:24:10 +02:00
< ? php
2005-07-21 15:15:16 +02:00
/* Copyright ( C ) 2003 - 2005 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2013-03-09 16:58:55 +01:00
* Copyright ( C ) 2004 - 2013 Laurent Destailleur < eldy @ users . sourceforge . net >
2005-05-14 16:22:08 +02:00
* Copyright ( C ) 2004 Sebastien Di Cintio < sdicintio @ ressource - toi . org >
* Copyright ( C ) 2004 Benoit Mortier < benoit . mortier @ opensides . be >
2013-05-07 14:26:11 +02:00
* Copyright ( C ) 2005 - 2013 Regis Houssin < regis . houssin @ capnetworks . com >
2013-05-30 17:58:48 +02:00
* Copyright ( C ) 2012 - 2013 Juanjo Menent < jmenent @ 2 byte . es >
2003-09-12 23:32:56 +02:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2003-09-12 23:32:56 +02:00
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2011-08-01 01:24:38 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2003-09-12 23:32:56 +02:00
*/
2008-10-01 21:10:17 +02:00
/**
2009-05-19 02:14:27 +02:00
* \defgroup societe Module societe
* \brief Module to manage third parties ( customers , prospects )
2011-10-24 14:11:49 +02:00
* \file htdocs / core / modules / modSociete . class . php
2009-04-10 02:29:23 +02:00
* \ingroup societe
* \brief Fichier de description et activation du module Societe
2008-10-01 21:10:17 +02:00
*/
2012-08-23 02:04:35 +02:00
include_once DOL_DOCUMENT_ROOT . '/core/modules/DolibarrModules.class.php' ;
2007-10-10 01:15:25 +02:00
2003-09-12 23:32:56 +02:00
2008-10-01 21:10:17 +02:00
/**
2012-10-03 00:30:50 +02:00
* Classe de description et activation du module Societe
2008-10-01 21:10:17 +02:00
*/
2003-11-13 16:09:12 +01:00
class modSociete extends DolibarrModules
2003-09-12 23:32:56 +02:00
{
2008-10-01 21:10:17 +02:00
/**
2011-09-26 16:22:35 +02:00
* Constructor . Define names , constants , directories , boxes , permissions
*
2012-01-04 21:23:50 +01:00
* @ param DoliDB $db Database handler
2008-10-01 21:10:17 +02:00
*/
2012-07-30 17:17:33 +02:00
function __construct ( $db )
2008-10-01 21:10:17 +02:00
{
2012-01-20 18:41:44 +01:00
global $conf ;
2009-05-04 13:40:00 +02:00
2012-01-04 21:23:50 +01:00
$this -> db = $db ;
$this -> numero = 1 ;
2008-10-01 21:10:17 +02:00
$this -> family = " crm " ;
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
2009-10-21 15:09:42 +02:00
$this -> name = preg_replace ( '/^mod/i' , '' , get_class ( $this ));
2008-10-01 21:10:17 +02:00
$this -> description = " Gestion des societes et contacts " ;
2008-12-15 23:25:59 +01:00
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
$this -> version = 'dolibarr' ;
2009-04-10 02:29:23 +02:00
2008-10-06 09:39:52 +02:00
$this -> const_name = 'MAIN_MODULE_' . strtoupper ( $this -> name );
2008-10-01 21:10:17 +02:00
$this -> special = 0 ;
2011-09-28 14:13:48 +02:00
$this -> config_page_url = array ( " societe.php@societe " );
2009-05-08 14:08:54 +02:00
// Name of image file used for this module.
2008-10-01 21:10:17 +02:00
$this -> picto = 'company' ;
2009-04-28 16:28:58 +02:00
// Data directories to create when module is enabled
2009-07-02 02:16:50 +02:00
$this -> dirs = array ( " /societe/temp " );
2009-05-19 02:14:27 +02:00
2008-10-01 21:10:17 +02:00
// Dependances
$this -> depends = array ();
2009-05-08 03:15:09 +02:00
$this -> requiredby = array ( " modExpedition " , " modFacture " , " modFournisseur " , " modFicheinter " , " modPropale " , " modContrat " , " modCommande " );
2008-10-01 21:10:17 +02:00
$this -> langfiles = array ( " companies " );
// Constantes
$this -> const = array ();
$r = 0 ;
2012-08-15 18:55:32 +02:00
$this -> const [ $r ][ 0 ] = " SOCIETE_CODECLIENT_ADDON " ;
$this -> const [ $r ][ 1 ] = " chaine " ;
$this -> const [ $r ][ 2 ] = " mod_codeclient_leopard " ;
$this -> const [ $r ][ 3 ] = 'Module to control third parties codes' ;
2012-08-15 09:06:36 +02:00
$this -> const [ $r ][ 4 ] = 0 ;
$r ++ ;
2012-08-15 18:55:32 +02:00
$this -> const [ $r ][ 0 ] = " SOCIETE_CODECOMPTA_ADDON " ;
$this -> const [ $r ][ 1 ] = " chaine " ;
$this -> const [ $r ][ 2 ] = " mod_codecompta_panicum " ;
$this -> const [ $r ][ 3 ] = 'Module to control third parties codes' ;
$this -> const [ $r ][ 4 ] = 0 ;
2012-08-15 09:06:36 +02:00
$r ++ ;
2008-10-01 21:10:17 +02:00
$this -> const [ $r ][ 0 ] = " SOCIETE_FISCAL_MONTH_START " ;
$this -> const [ $r ][ 1 ] = " chaine " ;
$this -> const [ $r ][ 2 ] = " 0 " ;
$this -> const [ $r ][ 3 ] = " Mettre le numero du mois du debut d \ 'annee fiscale, ex: 9 pour septembre " ;
2011-01-16 02:41:44 +01:00
$this -> const [ $r ][ 4 ] = 0 ;
2008-10-01 21:10:17 +02:00
$r ++ ;
$this -> const [ $r ][ 0 ] = " MAIN_SEARCHFORM_SOCIETE " ;
$this -> const [ $r ][ 1 ] = " yesno " ;
$this -> const [ $r ][ 2 ] = " 1 " ;
2011-01-30 11:00:10 +01:00
$this -> const [ $r ][ 3 ] = " Show form for quick company search " ;
2008-10-01 21:10:17 +02:00
$this -> const [ $r ][ 4 ] = 0 ;
$r ++ ;
$this -> const [ $r ][ 0 ] = " MAIN_SEARCHFORM_CONTACT " ;
$this -> const [ $r ][ 1 ] = " yesno " ;
$this -> const [ $r ][ 2 ] = " 1 " ;
2011-01-30 11:00:10 +01:00
$this -> const [ $r ][ 3 ] = " Show form for quick contact search " ;
2008-10-01 21:10:17 +02:00
$this -> const [ $r ][ 4 ] = 0 ;
$r ++ ;
2010-04-03 12:26:33 +02:00
2010-04-02 10:22:42 +02:00
$this -> const [ $r ][ 0 ] = " COMPANY_ADDON_PDF_ODT_PATH " ;
$this -> const [ $r ][ 1 ] = " chaine " ;
2010-05-09 15:45:27 +02:00
$this -> const [ $r ][ 2 ] = " DOL_DATA_ROOT/doctemplates/thirdparties " ;
2010-04-02 10:22:42 +02:00
$this -> const [ $r ][ 3 ] = " " ;
$this -> const [ $r ][ 4 ] = 0 ;
$r ++ ;
2011-07-02 01:07:26 +02:00
2013-05-14 09:24:05 +02:00
/*
2013-05-11 17:10:11 +02:00
$this -> const [ $r ][ 0 ] = " COMPANY_HIDE_INACTIVE_IN_COMBOBOX " ;
$this -> const [ $r ][ 1 ] = " chaine " ;
$this -> const [ $r ][ 2 ] = " 0 " ;
$this -> const [ $r ][ 3 ] = " hide thirdparty customer inative in combobox " ;
2013-05-14 09:24:05 +02:00
$this -> const [ $r ][ 4 ] = 1 ;
2013-05-11 17:10:11 +02:00
$r ++ ;
2013-05-14 09:24:05 +02:00
*/
2013-08-30 18:18:58 +02:00
$this -> const [ $r ][ 0 ] = " SOCIETE_ADD_REF_IN_LIST " ;
$this -> const [ $r ][ 1 ] = " yesno " ;
$this -> const [ $r ][ 2 ] = " 0 " ;
$this -> const [ $r ][ 3 ] = " Display customer ref into select list " ;
$this -> const [ $r ][ 4 ] = 0 ;
$r ++ ;
2013-05-11 17:10:11 +02:00
2008-10-01 21:10:17 +02:00
// Boxes
$this -> boxes = array ();
$r = 0 ;
$this -> boxes [ $r ][ 1 ] = " box_clients.php " ;
$r ++ ;
$this -> boxes [ $r ][ 1 ] = " box_prospect.php " ;
$r ++ ;
2011-01-24 21:49:06 +01:00
$this -> boxes [ $r ][ 1 ] = " box_contacts.php " ;
2012-07-04 09:07:15 +02:00
$r ++ ;
$this -> boxes [ $r ][ 1 ] = " box_activity.php " ;
2013-01-15 15:53:35 +01:00
$this -> boxes [ $r ][ 2 ] = '(WarningUsingThisBoxSlowDown)' ;
2011-01-24 21:49:06 +01:00
$r ++ ;
2008-10-01 21:10:17 +02:00
// Permissions
$this -> rights = array ();
$this -> rights_class = 'societe' ;
$r = 0 ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 121 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Lire les societes' ; // 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' ;
2012-07-28 11:28:37 +02:00
/* $r ++ ;
$this -> rights [ $r ][ 0 ] = 241 ;
$this -> rights [ $r ][ 1 ] = 'Read thirdparties customers' ;
$this -> rights [ $r ][ 2 ] = 'r' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'thirparty_customer_advance' ; // Visible if option MAIN_USE_ADVANCED_PERMS is on
2012-07-27 19:26:54 +02:00
$this -> rights [ $r ][ 5 ] = 'read' ;
2012-07-28 11:28:37 +02:00
$r ++ ;
$this -> rights [ $r ][ 0 ] = 242 ;
$this -> rights [ $r ][ 1 ] = 'Read thirdparties suppliers' ;
$this -> rights [ $r ][ 2 ] = 'r' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'thirdparty_supplier_advance' ; // Visible if option MAIN_USE_ADVANCED_PERMS is on
2012-07-27 19:26:54 +02:00
$this -> rights [ $r ][ 5 ] = 'read' ;
*/
2008-10-01 21:10:17 +02:00
$r ++ ;
$this -> rights [ $r ][ 0 ] = 122 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Creer modifier les societes' ; // 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' ;
2012-07-28 11:28:37 +02:00
/* $r ++ ;
$this -> rights [ $r ][ 0 ] = 251 ;
$this -> rights [ $r ][ 1 ] = 'Create thirdparties customers' ;
$this -> rights [ $r ][ 2 ] = 'r' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'thirparty_customer_advance' ; // Visible if option MAIN_USE_ADVANCED_PERMS is on
$this -> rights [ $r ][ 5 ] = 'read' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 252 ;
$this -> rights [ $r ][ 1 ] = 'Create thirdparties suppliers' ;
$this -> rights [ $r ][ 2 ] = 'r' ;
$this -> rights [ $r ][ 3 ] = 0 ;
$this -> rights [ $r ][ 4 ] = 'thirdparty_supplier_advance' ; // Visible if option MAIN_USE_ADVANCED_PERMS is on
$this -> rights [ $r ][ 5 ] = 'read' ;
2012-07-27 19:26:54 +02:00
*/
2008-10-01 21:10:17 +02:00
$r ++ ;
$this -> rights [ $r ][ 0 ] = 125 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Supprimer les societes' ; // 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 ] = 126 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Exporter les societes' ; // libelle de la permission
$this -> rights [ $r ][ 2 ] = 'r' ; // 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 ] = 'export' ;
// 262 : Resteindre l'acces des commerciaux
$r ++ ;
$this -> rights [ $r ][ 0 ] = 262 ;
$this -> rights [ $r ][ 1 ] = 'Consulter tous les tiers par utilisateurs internes (sinon uniquement si contact commercial). Non effectif pour utilisateurs externes (tjs limités à eux-meme).' ;
$this -> rights [ $r ][ 2 ] = 'r' ;
$this -> rights [ $r ][ 3 ] = 1 ;
$this -> rights [ $r ][ 4 ] = 'client' ;
$this -> rights [ $r ][ 5 ] = 'voir' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 281 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Lire les contacts' ; // 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 ] = 'contact' ;
$this -> rights [ $r ][ 5 ] = 'lire' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 282 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Creer modifier les contacts' ; // 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 ] = 'contact' ;
$this -> rights [ $r ][ 5 ] = 'creer' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 283 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Supprimer les contacts' ; // 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 ] = 'contact' ;
$this -> rights [ $r ][ 5 ] = 'supprimer' ;
$r ++ ;
$this -> rights [ $r ][ 0 ] = 286 ; // id de la permission
$this -> rights [ $r ][ 1 ] = 'Exporter les contacts' ; // 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 ] = 'contact' ;
$this -> rights [ $r ][ 5 ] = 'export' ;
// Exports
//--------
$r = 0 ;
2009-05-19 02:14:27 +02:00
// Export list of third parties and attributes
2008-10-01 21:10:17 +02:00
$r ++ ;
$this -> export_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> export_label [ $r ] = 'ExportDataset_company_1' ;
2009-09-08 01:49:16 +02:00
$this -> export_icon [ $r ] = 'company' ;
2008-10-01 21:10:17 +02:00
$this -> export_permission [ $r ] = array ( array ( " societe " , " export " ));
2013-08-01 12:49:46 +02:00
$this -> export_fields_array [ $r ] = array ( 's.rowid' => " Id " , 's.nom' => " Name " , 's.status' => " Status " , 's.client' => " Customer " , 's.fournisseur' => " Supplier " , 's.datec' => " DateCreation " , 's.tms' => " DateLastModification " , 's.code_client' => " CustomerCode " , 's.code_fournisseur' => " SupplierCode " , 's.code_compta' => " AccountancyCode " , 's.code_compta_fournisseur' => " SupplierAccountancyCode " , 's.address' => " Address " , 's.zip' => " Zip " , 's.town' => " Town " , 'p.libelle' => " Country " , 'p.code' => " CountryCode " , 's.phone' => " Phone " , 's.fax' => " Fax " , 's.url' => " Url " , 's.email' => " Email " , 's.default_lang' => " DefaultLang " , 's.siren' => " ProfId1 " , 's.siret' => " ProfId2 " , 's.ape' => " ProfId3 " , 's.idprof4' => " ProfId4 " , 's.idprof5' => " ProfId5 " , 's.idprof6' => " ProfId6 " , 's.tva_intra' => " VATIntraShort " , 's.capital' => " Capital " , 's.note_private' => " NotePrivate " , 's.note_public' => " NotePublic " , 't.libelle' => " ThirdPartyType " , 'ce.code' => " Staff " , " cfj.libelle " => " JuridicalStatus " , 's.fk_prospectlevel' => 'ProspectLevel' , 'st.code' => 'ProspectStatus' , 'd.nom' => 'State' );
2012-02-27 10:18:34 +01:00
if ( ! empty ( $conf -> global -> SOCIETE_USEPREFIX )) $this -> export_fields_array [ $r ][ 's.prefix' ] = 'Prefix' ;
2013-08-01 12:49:46 +02:00
//$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Text",'s.client'=>"Boolean",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'p.libelle'=>"List:c_pays:libelle:libelle",'p.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Number",'s.note'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','s.fk_stcomm'=>'List:c_stcomm:libelle:code','d.nom'=>'List:c_departements:nom:rowid');
$this -> export_TypeFields_array [ $r ] = array ( 's.nom' => " Text " , 's.status' => " Number " , 's.client' => " Boolean " , 's.fournisseur' => " Boolean " , 's.datec' => " Date " , 's.tms' => " Date " , 's.code_client' => " Text " , 's.code_fournisseur' => " Text " , 's.code_compta' => " Text " , 's.code_compta_fournisseur' => " Text " , 's.address' => " Text " , 's.zip' => " Text " , 's.town' => " Text " , 'p.libelle' => " List:c_pays:libelle:libelle " , 'p.code' => " Text " , 's.phone' => " Text " , 's.fax' => " Text " , 's.url' => " Text " , 's.email' => " Text " , 's.default_lang' => " Text " , 's.siret' => " Text " , 's.siren' => " Text " , 's.ape' => " Text " , 's.idprof4' => " Text " , 's.idprof5' => " Text " , 's.idprof6' => " Text " , 's.tva_intra' => " Text " , 's.capital' => " Number " , 's.note_private' => " Text " , 's.note_public' => " Text " , 't.libelle' => " Text " , 'ce.code' => " List:c_effectif:libelle:code " , " cfj.libelle " => " Text " , 's.fk_prospectlevel' => 'List:c_prospectlevel:label:code' , 'st.code' => 'List:c_stcomm:libelle:code' , 'd.nom' => 'Text' );
2009-11-08 20:28:44 +01:00
$this -> export_entities_array [ $r ] = array (); // We define here only fields that use another picto
2011-06-22 13:05:06 +02:00
// Add extra fields
2014-03-14 23:42:45 +01:00
$sql = " SELECT name, label, type, param FROM " . MAIN_DB_PREFIX . " extrafields WHERE elementtype = 'societe' " ;
2011-06-22 13:05:06 +02:00
$resql = $this -> db -> query ( $sql );
2011-08-14 02:09:30 +02:00
if ( $resql ) // This can fail when class is used on old database (during migration for example)
2011-06-22 13:05:06 +02:00
{
2013-06-14 02:09:34 +02:00
while ( $obj = $this -> db -> fetch_object ( $resql ))
{
$fieldname = 'extra.' . $obj -> name ;
$fieldlabel = ucfirst ( $obj -> label );
$typeFilter = " Text " ;
switch ( $obj -> type )
{
case 'int' :
case 'double' :
case 'price' :
$typeFilter = " Numeric " ;
break ;
case 'date' :
case 'datetime' :
$typeFilter = " Date " ;
break ;
case 'boolean' :
$typeFilter = " Boolean " ;
break ;
case 'sellist' :
$typeFilter = " List: " . $obj -> param ;
break ;
}
$this -> export_fields_array [ $r ][ $fieldname ] = $fieldlabel ;
$this -> export_TypeFields_array [ $r ][ $fieldname ] = $typeFilter ;
$this -> export_entities_array [ $r ][ $fieldname ] = 'company' ;
}
2011-06-22 13:05:06 +02:00
}
// End add axtra fields
2008-10-01 21:10:17 +02:00
$this -> export_sql_start [ $r ] = 'SELECT DISTINCT ' ;
2009-04-28 11:41:30 +02:00
$this -> export_sql_end [ $r ] = ' FROM ' . MAIN_DB_PREFIX . 'societe as s' ;
2011-06-22 13:05:06 +02:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'societe_extrafields as extra ON s.rowid = extra.fk_object' ;
2009-04-28 11:41:30 +02:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_typent as t ON s.fk_typent = t.id' ;
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_pays as p ON s.fk_pays = p.rowid' ;
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_effectif as ce ON s.fk_effectif = ce.id' ;
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_forme_juridique as cfj ON s.fk_forme_juridique = cfj.code' ;
2010-02-23 17:20:50 +01:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_departements as d ON s.fk_departement = d.rowid' ;
2013-08-01 12:49:46 +02:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_stcomm as st ON s.fk_stcomm = st.id' ;
2012-02-01 11:32:55 +01:00
$this -> export_sql_end [ $r ] .= ' WHERE s.entity IN (' . getEntity ( 'societe' , 1 ) . ')' ;
2008-10-01 21:10:17 +02:00
2009-05-19 02:14:27 +02:00
// Export list of contacts and attributes
2008-10-01 21:10:17 +02:00
$r ++ ;
$this -> export_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> export_label [ $r ] = 'ExportDataset_company_2' ;
2008-12-04 21:27:01 +01:00
$this -> export_icon [ $r ] = 'contact' ;
2008-10-01 21:10:17 +02:00
$this -> export_permission [ $r ] = array ( array ( " societe " , " contact " , " export " ));
2013-08-31 12:43:41 +02:00
$this -> export_fields_array [ $r ] = array ( 'c.rowid' => " IdContact " , 'c.civilite' => " CivilityCode " , 'c.lastname' => 'Lastname' , 'c.firstname' => 'Firstname' , 'c.poste' => 'PostOrFunction' , 'c.datec' => " DateCreation " , 'c.tms' => " DateLastModification " , 'c.priv' => " ContactPrivate " , 'c.address' => " Address " , 'c.zip' => " Zip " , 'c.town' => " Town " , 'd.nom' => 'State' , 'p.libelle' => " Country " , 'p.code' => " CountryCode " , 'c.phone' => " Phone " , 'c.fax' => " Fax " , 'c.phone_mobile' => " Mobile " , 'c.email' => " EMail " , 's.rowid' => " IdCompany " , 's.nom' => " CompanyName " , 's.status' => " Status " , 's.code_client' => " CustomerCode " , 's.code_fournisseur' => " SupplierCode " );
$this -> export_TypeFields_array [ $r ] = array ( 'c.civilite' => " List:c_civilite:civilite:code " , 'c.lastname' => 'Text' , 'c.firstname' => 'Text' , 'c.poste' => 'Text' , 'c.datec' => " Date " , 'c.priv' => " Boolean " , 'c.address' => " Text " , 'c.cp' => " Text " , 'c.ville' => " Text " , 'd.nom' => 'Text' , 'p.libelle' => " List:c_pays:libelle:rowid " , 'p.code' => " Text " , 'c.phone' => " Text " , 'c.fax' => " Text " , 'c.email' => " Text " , 's.rowid' => " List:societe:nom " , 's.nom' => " Text " , 's.status' => " Status " , 's.code_client' => " Text " , 's.code_fournisseur' => " Text " );
2009-11-08 20:28:44 +01:00
$this -> export_entities_array [ $r ] = array ( 's.rowid' => " company " , 's.nom' => " company " , 's.code_client' => " company " , 's.code_fournisseur' => " company " ); // We define here only fields that use another picto
2011-02-14 19:29:06 +01:00
if ( empty ( $conf -> fournisseur -> enabled ))
{
unset ( $this -> export_fields_array [ $r ][ 's.code_fournisseur' ]);
unset ( $this -> export_entities_array [ $r ][ 's.code_fournisseur' ]);
}
2011-06-22 13:05:06 +02:00
// Add extra fields
2013-07-30 14:18:56 +02:00
$sql = " SELECT name, label FROM " . MAIN_DB_PREFIX . " extrafields WHERE elementtype = 'socpeople' " ;
2011-06-22 13:05:06 +02:00
$resql = $this -> db -> query ( $sql );
2011-08-14 02:09:30 +02:00
if ( $resql ) // This can fail when class is used on old database (during migration for example)
2011-06-22 13:05:06 +02:00
{
2013-07-30 14:18:56 +02:00
while ( $obj = $this -> db -> fetch_object ( $resql ))
{
$fieldname = 'extra.' . $obj -> name ;
$fieldlabel = ucfirst ( $obj -> label );
$typeFilter = " Text " ;
switch ( $obj -> type )
{
case 'int' :
case 'double' :
case 'price' :
$typeFilter = " Numeric " ;
break ;
case 'date' :
case 'datetime' :
$typeFilter = " Date " ;
break ;
case 'boolean' :
$typeFilter = " Boolean " ;
break ;
case 'sellist' :
$typeFilter = " List: " . $obj -> param ;
break ;
}
$this -> export_fields_array [ $r ][ $fieldname ] = $fieldlabel ;
$this -> export_TypeFields_array [ $r ][ $fieldname ] = $typeFilter ;
$this -> export_entities_array [ $r ][ $fieldname ] = 'contact' ;
}
2011-06-22 13:05:06 +02:00
}
// End add axtra fields
$this -> export_sql_start [ $r ] = 'SELECT DISTINCT ' ;
2011-02-18 18:01:28 +01:00
$this -> export_sql_end [ $r ] = ' FROM ' . MAIN_DB_PREFIX . 'socpeople as c' ;
2009-04-28 11:41:30 +02:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'societe as s ON c.fk_soc = s.rowid' ;
2013-08-31 12:43:41 +02:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_departements as d ON c.fk_departement = d.rowid' ;
2011-02-18 18:01:28 +01:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'c_pays as p ON c.fk_pays = p.rowid' ;
2013-07-24 13:28:02 +02:00
$this -> export_sql_end [ $r ] .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'socpeople_extrafields as extra ON extra.fk_object = c.rowid' ;
2012-02-11 08:03:26 +01:00
$this -> export_sql_end [ $r ] .= ' WHERE c.entity IN (' . getEntity ( " societe " , 1 ) . ')' ;
2009-05-19 02:14:27 +02:00
// Imports
//--------
$r = 0 ;
// Import list of third parties and attributes
$r ++ ;
$this -> import_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> import_label [ $r ] = 'ImportDataset_company_1' ;
2009-09-08 01:49:16 +02:00
$this -> import_icon [ $r ] = 'company' ;
2012-01-22 02:28:49 +01:00
$this -> import_entities_array [ $r ] = array (); // We define here only fields that use another icon that the one defined into import_icon
2012-03-03 16:33:38 +01:00
$this -> import_tables_array [ $r ] = array ( 's' => MAIN_DB_PREFIX . 'societe' , 'extra' => MAIN_DB_PREFIX . 'societe_extrafields' ); // List of tables to insert into (insert done in same order)
2013-08-31 12:43:41 +02:00
$this -> import_fields_array [ $r ] = array ( 's.nom' => " Name* " , 's.status' => " Status " , 's.client' => " Customer* " , 's.fournisseur' => " Supplier* " , 's.code_client' => " CustomerCode " , 's.code_fournisseur' => " SupplierCode " , 's.code_compta' => " CustomerAccountancyCode " , 's.code_compta_fournisseur' => " SupplierAccountancyCode " , 's.address' => " Address " , 's.zip' => " Zip " , 's.town' => " Town " , 's.fk_departement' => " StateId " , 's.fk_pays' => " CountryCode " , 's.phone' => " Phone " , 's.fax' => " Fax " , 's.url' => " Url " , 's.email' => " Email " , 's.siret' => " ProfId1 " , 's.siren' => " ProfId2 " , 's.ape' => " ProfId3 " , 's.idprof4' => " ProfId4 " , 's.tva_intra' => " VATIntraShort " , 's.capital' => " Capital " , 's.note_private' => " NotePrivate " , 's.note_public' => " NotePublic " , 's.fk_typent' => " ThirdPartyType " , 's.fk_effectif' => " Staff " , " s.fk_forme_juridique " => " JuridicalStatus " , 's.fk_prospectlevel' => 'ProspectLevel' , 's.fk_stcomm' => 'ProspectStatus' , 's.default_lang' => 'DefaultLanguage' , 's.barcode' => 'BarCode' , 's.datec' => " DateCreation " );
2012-03-03 16:33:38 +01:00
// Add extra fields
2013-07-30 14:18:56 +02:00
$sql = " SELECT name, label, fieldrequired FROM " . MAIN_DB_PREFIX . " extrafields WHERE elementtype = 'societe' AND entity = " . $conf -> entity ;
2012-03-03 16:33:38 +01:00
$resql = $this -> db -> query ( $sql );
if ( $resql ) // This can fail when class is used on old database (during migration for example)
{
while ( $obj = $this -> db -> fetch_object ( $resql ))
{
$fieldname = 'extra.' . $obj -> name ;
$fieldlabel = ucfirst ( $obj -> label );
2012-10-25 13:11:55 +02:00
$this -> import_fields_array [ $r ][ $fieldname ] = $fieldlabel . ( $obj -> fieldrequired ? '*' : '' );
2012-03-03 16:33:38 +01:00
}
}
// End add extra fields
$this -> import_fieldshidden_array [ $r ] = array ( 's.fk_user_creat' => 'user->id' , 'extra.fk_object' => 'lastrowid-' . MAIN_DB_PREFIX . 'societe' ); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
2012-01-18 00:16:02 +01:00
$this -> import_convertvalue_array [ $r ] = array (
's.fk_typent' => array ( 'rule' => 'fetchidfromcodeid' , 'classfile' => '/core/class/ctypent.class.php' , 'class' => 'Ctypent' , 'method' => 'fetch' , 'dict' => 'DictionnaryCompanyType' ),
's.fk_pays' => array ( 'rule' => 'fetchidfromcodeid' , 'classfile' => '/core/class/cpays.class.php' , 'class' => 'Cpays' , 'method' => 'fetch' , 'dict' => 'DictionnaryCountry' ),
2012-03-04 13:00:53 +01:00
's.fk_stcomm' => array ( 'rule' => 'zeroifnull' ),
2014-03-21 13:29:13 +01:00
's.code_client' => array ( 'rule' => 'getcustomercodeifauto' ),
's.code_fournisseur' => array ( 'rule' => 'getsuppliercodeifauto' ),
's.code_compta' => array ( 'rule' => 'getcustomeraccountancycodeifauto' ),
's.code_compta_fournisseur' => array ( 'rule' => 'getsupplieraccountancycodeifauto' )
2012-01-18 00:16:02 +01:00
);
//$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t');
$this -> import_regex_array [ $r ] = array ( 's.status' => '^[0|1]' , 's.client' => '^[0|1|2|3]' , 's.fournisseur' => '^[0|1]' , 's.fk_typent' => 'id@' . MAIN_DB_PREFIX . 'c_typent' , 's.datec' => '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$' );
2014-03-21 13:29:13 +01:00
$this -> import_examplevalues_array [ $r ] = array ( 's.nom' => " MyBigCompany " , 's.status' => " 0 (closed) or 1 (active) " , 's.client' => '0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)' , 's.fournisseur' => '0 or 1' , 's.datec' => dol_print_date ( dol_now (), '%Y-%m-%d' ), 's.code_client' => " CU01-0001 or empty or 'auto' " , 's.code_fournisseur' => " SU01-0001 or empty or 'auto' " , 's.address' => " 61 jump street " , 's.zip' => " 123456 " , 's.town' => " Big town " , 's.fk_pays' => 'US, FR, DE...' , 's.phone' => " 0101010101 " , 's.fax' => " 0101010102 " , 's.url' => " http://mycompany.com " , 's.email' => " test@mycompany.com " , 's.siret' => " " , 's.siren' => " " , 's.ape' => " " , 's.idprof4' => " " , 's.tva_intra' => " FR0123456789 " , 's.capital' => " 10000 " , 's.note_private' => " This is an example of private note for record " , 's.note_public' => " This is an example of public note for record " , 's.fk_typent' => " 2 " , 's.fk_effectif' => " 3 " , " s.fk_forme_juridique " => " 1 " , 's.fk_prospectlevel' => 'PL_MEDIUM' , 's.fk_stcomm' => '0' , 's.default_lang' => 'en_US' , 's.barcode' => '123456789' );
2009-05-19 02:14:27 +02:00
2009-11-08 20:28:44 +01:00
// Import list of contact and attributes
2012-01-18 00:16:02 +01:00
$r ++ ;
2009-11-08 20:28:44 +01:00
$this -> import_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> import_label [ $r ] = 'ImportDataset_company_2' ;
$this -> import_icon [ $r ] = 'contact' ;
2012-01-22 02:28:49 +01:00
$this -> import_entities_array [ $r ] = array ( 's.fk_soc' => 'company' ); // We define here only fields that use another icon that the one defined into import_icon
2013-04-30 19:02:02 +02:00
$this -> import_tables_array [ $r ] = array ( 's' => MAIN_DB_PREFIX . 'socpeople' , 'extra' => MAIN_DB_PREFIX . 'socpeople_extrafields' ); // List of tables to insert into (insert done in same order)
2013-12-24 15:55:35 +01:00
$this -> import_fields_array [ $r ] = array ( 's.fk_soc' => 'ThirdPartyName' , 's.civilite' => 'UserTitle' , 's.lastname' => " Lastname* " , 's.firstname' => " Firstname " , 's.address' => " Address " , 's.zip' => " Zip " , 's.town' => " Town " , 's.fk_pays' => " CountryCode " , 's.birthday' => " BirthdayDate " , 's.poste' => " Role " , 's.phone' => " Phone " , 's.phone_perso' => " PhonePerso " , 's.phone_mobile' => " PhoneMobile " , 's.fax' => " Fax " , 's.email' => " Email " , 's.note_private' => " Note " , 's.note_public' => " Note " , 's.datec' => " DateCreation " );
2012-10-25 13:11:55 +02:00
// Add extra fields
2013-07-30 14:18:56 +02:00
$sql = " SELECT name, label, fieldrequired FROM " . MAIN_DB_PREFIX . " extrafields WHERE elementtype = 'socpeople' AND entity = " . $conf -> entity ;
2012-10-25 13:11:55 +02:00
$resql = $this -> db -> query ( $sql );
if ( $resql ) // This can fail when class is used on old database (during migration for example)
{
while ( $obj = $this -> db -> fetch_object ( $resql ))
{
$fieldname = 'extra.' . $obj -> name ;
$fieldlabel = ucfirst ( $obj -> label );
$this -> import_fields_array [ $r ][ $fieldname ] = $fieldlabel . ( $obj -> fieldrequired ? '*' : '' );
}
}
// End add extra fields
2013-04-30 19:02:02 +02:00
$this -> import_fieldshidden_array [ $r ] = array ( 's.fk_user_creat' => 'user->id' , 'extra.fk_object' => 'lastrowid-' . MAIN_DB_PREFIX . 'socpeople' ); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent)
2012-01-18 00:16:02 +01:00
$this -> import_convertvalue_array [ $r ] = array (
's.fk_soc' => array ( 'rule' => 'fetchidfromref' , 'file' => '/societe/class/societe.class.php' , 'class' => 'Societe' , 'method' => 'fetch' , 'element' => 'ThirdParty' ),
's.fk_pays' => array ( 'rule' => 'fetchidfromcodeid' , 'classfile' => '/core/class/cpays.class.php' , 'class' => 'Cpays' , 'method' => 'fetch' , 'dict' => 'DictionnaryCountry' ),
);
2009-11-09 09:48:05 +01:00
//$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t');
2012-01-18 00:16:02 +01:00
$this -> import_regex_array [ $r ] = array ( 's.birthday' => '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$' , 's.datec' => '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$' );
2013-12-24 15:55:35 +01:00
$this -> import_examplevalues_array [ $r ] = array ( 's.fk_soc' => 'MyBigCompany' , 's.civilite' => " MR " , 's.lastname' => " Smith " , 's.firstname' => 'John' , 's.address' => '61 jump street' , 's.zip' => '75000' , 's.town' => 'Bigtown' , 's.fk_pays' => 'US, FR, DE...' , 's.datec' => '1972-10-10' , 's.poste' => " Director " , 's.phone' => " 5551122 " , 's.phone_perso' => " 5551133 " , 's.phone_mobile' => " 5551144 " , 's.fax' => " 5551155 " , 's.email' => " johnsmith@email.com " , 's.note_private' => " My private note " , 's.note_public' => " My public note " );
2012-10-25 22:30:17 +02:00
2012-10-28 13:57:21 +01:00
// Import Bank Accounts
$r ++ ;
$this -> import_code [ $r ] = $this -> rights_class . '_' . $r ;
$this -> import_label [ $r ] = " ImportDataset_company_3 " ; // Translation key
$this -> import_icon [ $r ] = 'account' ;
$this -> import_entities_array [ $r ] = array (); // We define here only fields that use another icon that the one defined into import_icon
$this -> import_tables_array [ $r ] = array ( 'sr' => MAIN_DB_PREFIX . 'societe_rib' );
2012-10-19 13:00:53 +02:00
$this -> import_fields_array [ $r ] = array ( 'sr.fk_soc' => " ThirdPartyName* " , 'sr.bank' => " Bank " ,
'sr.code_banque' => " BankCode* " , 'sr.code_guichet' => " DeskCode* " , 'sr.number' => " BankAccountNumber* " ,
2012-10-28 13:57:21 +01:00
'sr.cle_rib' => " BankAccountNumberKey* " , 'sr.bic' => " BIC " , 'sr.iban_prefix' => " IBAN "
);
$this -> import_convertvalue_array [ $r ] = array (
'sr.fk_soc' => array ( 'rule' => 'fetchidfromref' , 'classfile' => '/societe/class/societe.class.php' , 'class' => 'Societe' , 'method' => 'fetch' , 'element' => 'ThirdParty' )
);
$this -> import_examplevalues_array [ $r ] = array ( 'sr.fk_soc' => " MyBigCompany " , 'sr.bank' => " ING " ,
2012-10-19 13:00:53 +02:00
'sr.code_banque' => " 0000 " , 'sr.code_guichet' => " 1111 " , 'sr.number' => " 3333333333 " ,
2012-10-25 22:30:17 +02:00
'sr.cle_rib' => " 22 " , 'sr.bic' => " USHINGMMXXX " , 'sr.iban_prefix' => " US00 0000 1111 22 3333 3333 "
2012-10-19 13:00:53 +02:00
);
2008-10-01 21:10:17 +02:00
}
2011-02-14 19:29:06 +01:00
/**
2012-01-04 21:23:50 +01:00
* Function called when module is enabled .
* The init function add constants , boxes , permissions and menus ( defined in constructor ) into Dolibarr database .
* It also creates data directories
*
* @ param string $options Options when enabling module ( '' , 'noboxes' )
* @ return int 1 if OK , 0 if KO
2011-02-14 19:29:06 +01:00
*/
2009-03-20 15:33:56 +01:00
function init ( $options = '' )
2008-10-01 21:10:17 +02:00
{
2012-04-05 11:07:16 +02:00
global $conf , $langs ;
2010-03-24 14:06:29 +01:00
2010-04-28 17:31:49 +02:00
// We disable this to prevent pb of modules not correctly disabled
2009-03-20 15:33:56 +01:00
//$this->remove($options);
2008-10-01 21:10:17 +02:00
2012-08-01 14:42:24 +02:00
//ODT template
$src = DOL_DOCUMENT_ROOT . '/install/doctemplates/thirdparties/template_thirdparty.odt' ;
2010-05-09 15:45:27 +02:00
$dirodt = DOL_DATA_ROOT . '/doctemplates/thirdparties' ;
2012-08-01 14:42:24 +02:00
$dest = $dirodt . '/template_thirdparty.odt' ;
if ( file_exists ( $src ) && ! file_exists ( $dest ))
2012-02-05 19:37:52 +01:00
{
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/files.lib.php' ;
2012-08-01 14:42:24 +02:00
dol_mkdir ( $dirodt );
$result = dol_copy ( $src , $dest , 0 , 0 );
if ( $result < 0 )
{
$langs -> load ( " errors " );
$this -> error = $langs -> trans ( 'ErrorFailToCopyFile' , $src , $dest );
return 0 ;
}
2012-02-05 19:37:52 +01:00
}
2008-10-01 21:10:17 +02:00
2010-03-24 14:06:29 +01:00
$sql = array ();
2010-03-21 21:29:29 +01:00
2009-03-20 15:33:56 +01:00
return $this -> _init ( $sql , $options );
2008-10-01 21:10:17 +02:00
}
2011-02-14 19:29:06 +01:00
/**
2012-03-03 17:37:45 +01:00
* Function called when module is disabled .
* Remove from database constants , boxes and permissions from Dolibarr database .
* Data directories are not deleted
*
* @ param string $options Options when enabling module ( '' , 'noboxes' )
* @ return int 1 if OK , 0 if KO
2011-02-14 19:29:06 +01:00
*/
2012-03-03 17:37:45 +01:00
function remove ( $options = '' )
{
2008-10-01 21:10:17 +02:00
$sql = array ();
2009-03-20 15:33:56 +01:00
return $this -> _remove ( $sql , $options );
2012-03-03 17:37:45 +01:00
}
2003-09-12 23:32:56 +02:00
}
?>