2011-03-01 10:22:58 +01:00
< ? php
2018-10-27 14:43:12 +02:00
/* Copyright ( C ) 2010 - 2012 Regis Houssin < regis . houssin @ inodbox . com >
2012-02-23 20:42:25 +01:00
* Copyright ( C ) 2010 Laurent Destailleur < eldy @ users . sourceforge . net >
2011-03-01 10:22:58 +01: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
2011-03-01 10:22:58 +01: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
2019-09-23 21:55:30 +02:00
* along with this program . If not , see < https :// www . gnu . org / licenses />.
2011-03-01 10:22:58 +01:00
*/
/**
* \defgroup workflow Module workflow
2011-08-31 12:27:17 +02:00
* \brief Workflow management
2011-10-24 14:11:49 +02:00
* \file htdocs / core / modules / modWorkflow . class . php
2011-03-01 10:22:58 +01:00
* \ingroup workflow
2021-03-20 13:55:43 +01:00
* \brief Description and activation file for the module Workflow
2011-03-01 10:22:58 +01:00
*/
2020-04-10 10:59:32 +02:00
include_once DOL_DOCUMENT_ROOT . '/core/modules/DolibarrModules.class.php' ;
2011-03-01 10:22:58 +01:00
/**
2015-09-07 15:55:26 +02:00
* Class to describe and enable module Workflow
2011-03-01 10:22:58 +01:00
*/
class modWorkflow extends DolibarrModules
{
2020-10-31 14:32:18 +01: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
2020-10-31 14:32:18 +01:00
*/
public function __construct ( $db )
{
$this -> db = $db ;
// Id for module (must be unique).
// Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id).
$this -> numero = 6000 ;
// Key text used to identify module (for permissions, menus, etc...)
$this -> rights_class = 'workflow' ;
$this -> family = " technic " ;
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
$this -> name = preg_replace ( '/^mod/i' , '' , get_class ( $this ));
// Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module)
2021-02-15 16:35:51 +01:00
$this -> description = " Inter-modules workflow management " ;
2020-10-31 14:32:18 +01:00
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
$this -> version = 'dolibarr' ;
// Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase)
$this -> const_name = 'MAIN_MODULE_' . strtoupper ( $this -> name );
// Name of png file (without png) used for this module.
// If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
// If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module'
$this -> picto = 'technic' ;
// Data directories to create when module is enabled
$this -> dirs = array ( " /workflow/temp " );
// Config pages. Put here list of php page names stored in admmin directory used to setup module.
$this -> config_page_url = array ( 'workflow.php' );
// Dependencies
$this -> hidden = false ; // A condition to hide module
2020-04-10 10:59:32 +02:00
$this -> depends = array (); // List of module class names as string that must be enabled if this module is enabled
$this -> requiredby = array (); // List of module ids to disable if this one is disabled
$this -> conflictwith = array (); // List of module class names as string this module is in conflict with
2022-09-27 20:48:47 +02:00
$this -> phpmin = array ( 7 , 0 ); // Minimum version of PHP required by module
2020-10-31 14:32:18 +01:00
$this -> need_dolibarr_version = array ( 2 , 8 ); // Minimum version of Dolibarr required by module
$this -> langfiles = array ( " @workflow " );
// Constants
// List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
// Example: $this->const=array(1 => array('MYMODULE_MYNEWCONST1', 'chaine', 'myvalue', 'This is a constant to add', 1),
// 2 => array('MYMODULE_MYNEWCONST2', 'chaine', 'myvalue', 'This is another constant to add', 0, 'current', 1)
// );
$this -> const = array (
//0=>array('WORKFLOW_PROPAL_AUTOCREATE_ORDER', 'chaine', '1', 'WORKFLOW_PROPAL_AUTOCREATE_ORDER', 0, 'current', 0),
//0=>array('WORKFLOW_ORDER_AUTOCREATE_INVOICE', 'chaine', '1', 'WORKFLOW_ORDER_AUTOCREATE_INVOICE', 0, 'current', 0),
0 => array ( 'WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL' , 'chaine' , '1' , 'WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL' , 0 , 'current' , 0 ),
1 => array ( 'WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL' , 'chaine' , '1' , 'WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL' , 0 , 'current' , 0 ),
2 => array ( 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING' , 'chaine' , '1' , 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING' , 0 , 'current' , 0 ),
2021-08-03 15:33:06 +02:00
3 => array ( 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED' , 'chaine' , '1' , 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED' , 0 , 'current' , 0 ),
2020-10-31 14:32:18 +01:00
4 => array ( 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER' , 'chaine' , '1' , 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER' , 0 , 'current' , 0 ),
5 => array ( 'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL' , 'chaine' , '1' , 'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL' , 0 , 'current' , 0 ),
2021-11-19 23:03:12 +01:00
6 => array ( 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION' , 'chaine' , '1' , 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION' , 0 , 'current' , 0 ),
7 => array ( 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED' , 'chaine' , '1' , 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED' , 0 , 'current' , 0 ),
8 => array ( 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER' , 'chaine' , '1' , 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER' , 0 , 'current' , 0 ),
2022-02-08 11:54:52 +01:00
10 => array ( 'WORKFLOW_TICKET_LINK_CONTRACT' , 'chaine' , '0' , 'Automatically link a ticket to available contracts' , 0 , 'current' , 0 ),
2022-02-10 17:06:46 +01:00
11 => array ( 'WORKFLOW_TICKET_USE_PARENT_COMPANY_CONTRACTS' , 'chaine' , '0' , 'Search among parent companies contracts when automatically linking a ticket to available contracts' , 0 , 'current' , 0 ),
2022-12-30 19:06:04 +01:00
12 => array ( 'WORKFLOW_TICKET_CREATE_INTERVENTION' , 'chaine' , '0' , 'WORKFLOW_TICKET_CREATE_INTERVENTION' , 0 , 'current' , 0 )
2020-10-31 14:32:18 +01:00
);
// Boxes
$this -> boxes = array ();
// Permissions
$this -> rights = array ();
$r = 0 ;
/*
2021-02-23 22:03:23 +01:00
$r ++ ;
$this -> rights [ $r ][ 0 ] = 6001 ; // id de la permission
$this -> rights [ $r ][ 1 ] = " Lire les workflow " ; // 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 ] = 'read' ;
*/
2011-03-01 10:22:58 +01:00
2020-10-31 14:32:18 +01:00
// Main menu entries
$this -> menus = array (); // List of menus to add
$r = 0 ;
/*
2021-02-23 22:03:23 +01:00
$this -> menu [ $r ] = array ( 'fk_menu' => 0 ,
'type' => 'top' ,
'titre' => 'Workflow' ,
'mainmenu' => 'workflow' ,
'url' => '/workflow/index.php' ,
'langs' => '@workflow' ,
'position' => 100 ,
'perms' => '$user->rights->workflow->read' ,
'enabled' => '$conf->workflow->enabled' ,
'target' => '' ,
'user' => 0 );
$r ++ ;
$this -> menu [ $r ] = array ( 'fk_menu' => 'r=0' ,
'type' => 'left' ,
'titre' => 'Workflow' ,
'mainmenu' => 'workflow' ,
'url' => '/workflow/index.php' ,
'langs' => '@workflow' ,
'position' => 101 ,
'enabled' => 1 ,
'perms' => '$user->rights->workflow->read' ,
'target' => '' ,
'user' => 0 );
$r ++ ;
*/
2020-10-31 14:32:18 +01:00
}
2011-03-01 10:22:58 +01:00
2020-10-31 14:32:18 +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
*
2020-10-31 14:32:18 +01:00
* @ param string $options Options when enabling module ( '' , 'noboxes' )
2019-02-26 21:13:07 +01:00
* @ return int 1 if OK , 0 if KO
2020-10-31 14:32:18 +01:00
*/
public function init ( $options = '' )
{
2011-12-05 19:03:36 +01:00
// Permissions
2012-03-03 17:37:45 +01:00
$this -> remove ( $options );
2011-12-17 18:35:12 +01:00
2011-12-05 19:03:36 +01:00
$sql = array ();
2011-03-01 10:22:58 +01:00
2020-10-31 14:32:18 +01:00
return $this -> _init ( $sql , $options );
}
2011-03-01 10:22:58 +01:00
}