2011-03-01 10:22:58 +01:00
< ? php
/* Copyright ( C ) 2004 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2004 Eric Seigne < eric . seigne @ ryxeo . com >
2016-10-29 16:18:39 +02:00
* Copyright ( C ) 2005 - 2016 Laurent Destailleur < eldy @ users . sourceforge . net >
2012-12-30 15:13:49 +01:00
* Copyright ( C ) 2005 - 2012 Regis Houssin < regis . houssin @ capnetworks . com >
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
2011-08-01 00:21:57 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2011-03-01 10:22:58 +01:00
*/
/**
2011-08-08 18:00:16 +02:00
* \file htdocs / admin / workflow . php
2011-03-01 10:22:58 +01:00
* \ingroup company
2011-08-08 18:00:16 +02:00
* \brief Workflows setup page
2011-03-01 10:22:58 +01:00
*/
2012-08-22 23:24:21 +02:00
require '../main.inc.php' ;
2012-08-22 23:11:24 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php' ;
2011-03-01 10:22:58 +01:00
2017-11-14 01:00:57 +01:00
$langs -> loadLangs ( array ( " admin " , " workflow " , " propal " , " workflow " , " orders " , " supplier_proposals " ));
2011-03-01 10:22:58 +01:00
2012-02-13 09:45:38 +01:00
if ( ! $user -> admin ) accessforbidden ();
$action = GETPOST ( 'action' , 'alpha' );
2011-03-01 10:22:58 +01:00
/*
* Actions
*/
2012-02-13 09:45:38 +01:00
if ( preg_match ( '/set(.*)/' , $action , $reg ))
2011-03-01 10:22:58 +01:00
{
2012-02-13 10:02:28 +01:00
if ( ! dolibarr_set_const ( $db , $reg [ 1 ], 1 , 'chaine' , 0 , '' , $conf -> entity ) > 0 )
2011-03-01 10:22:58 +01:00
{
dol_print_error ( $db );
}
}
2012-02-13 09:45:38 +01:00
if ( preg_match ( '/del(.*)/' , $action , $reg ))
2011-03-01 10:22:58 +01:00
{
2012-02-13 10:02:28 +01:00
if ( ! dolibarr_del_const ( $db , $reg [ 1 ], $conf -> entity ) > 0 )
2011-03-01 10:22:58 +01:00
{
dol_print_error ( $db );
}
}
/*
* View
*/
llxHeader ( '' , $langs -> trans ( " WorkflowSetup " ), '' );
$linkback = '<a href="' . DOL_URL_ROOT . '/admin/modules.php">' . $langs -> trans ( " BackToModuleList " ) . '</a>' ;
2015-09-24 18:33:48 +02:00
print load_fiche_titre ( $langs -> trans ( " WorkflowSetup " ), $linkback , 'title_setup' );
2011-03-01 10:22:58 +01:00
print $langs -> trans ( " WorkflowDesc " ) . '<br>' ;
print " <br> " ;
2012-02-13 10:02:28 +01:00
// List of workflow we can enable
2011-03-01 10:22:58 +01:00
clearstatcache ();
2012-07-17 15:27:36 +02:00
$workflowcodes = array (
2016-10-29 16:18:39 +02:00
// Automatic creation
'WORKFLOW_PROPAL_AUTOCREATE_ORDER' => array ( 'family' => 'create' , 'position' => 10 , 'enabled' => '! empty($conf->propal->enabled) && ! empty($conf->commande->enabled)' , 'picto' => 'order' ),
2016-02-15 07:04:07 +01:00
'WORKFLOW_ORDER_AUTOCREATE_INVOICE' => array ( 'family' => 'create' , 'position' => 20 , 'enabled' => '! empty($conf->commande->enabled) && ! empty($conf->facture->enabled)' , 'picto' => 'bill' ),
2017-11-14 01:00:57 +01:00
'separator1' => array ( 'family' => 'separator' , 'position' => 25 ),
// Automatic classification proposal
'WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL' => array ( 'family' => 'classify_proposal' , 'position' => 30 , 'enabled' => '! empty($conf->propal->enabled) && ! empty($conf->commande->enabled)' , 'picto' => 'propal' , 'warning' => '' ),
'WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL' => array ( 'family' => 'classify_proposal' , 'position' => 31 , 'enabled' => '! empty($conf->propal->enabled) && ! empty($conf->facture->enabled)' , 'picto' => 'propal' , 'warning' => '' ),
// Automatic classification invoice
'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING' => array ( 'family' => 'classify_order' , 'position' => 40 , 'enabled' => '! empty($conf->expedition->enabled) && ! empty($conf->commande->enabled)' , 'picto' => 'order' ),
2014-01-23 20:02:19 +01:00
// For the following 2 options, if module invoice is disabled, they does not exists, so "Classify billed" for order must be done manually from order card.
2017-11-14 01:00:57 +01:00
'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER' => array ( 'family' => 'classify_order' , 'position' => 41 , 'enabled' => '! empty($conf->facture->enabled) && ! empty($conf->commande->enabled)' , 'picto' => 'order' , 'warning' => '' ),
//Moved as hidden feature: 'WORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER'=>array('family'=>'classify_order', 'position'=>42, 'enabled'=>'! empty($conf->facture->enabled) && ! empty($conf->commande->enabled)', 'picto'=>'order','warning'=>''),
'separator2' => array ( 'family' => 'separator' , 'position' => 50 ),
// Automatic classification supplier proposal
'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL' => array ( 'family' => 'classify_supplier_proposal' , 'position' => 60 , 'enabled' => '! empty($conf->supplier_proposal->enabled) && ! empty($conf->fournisseur->enabled)' , 'picto' => 'propal' , 'warning' => '' ),
// Automatic classification supplier order
'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER' => array ( 'family' => 'classify_supplier_order' , 'position' => 62 , 'enabled' => '! empty($conf->fournisseur->enabled)' , 'picto' => 'order' , 'warning' => '' ),
2012-04-04 09:24:20 +02:00
);
2012-04-14 15:04:46 +02:00
2012-07-24 20:15:34 +02:00
if ( ! empty ( $conf -> modules_parts [ 'workflow' ]) && is_array ( $conf -> modules_parts [ 'workflow' ]))
{
foreach ( $conf -> modules_parts [ 'workflow' ] as $workflow )
{
$workflowcodes = array_merge ( $workflowcodes , $workflow );
}
}
2012-04-04 09:24:20 +02:00
2017-11-14 01:00:57 +01:00
// Sort on position
$workflowcodes = dol_sort_array ( $workflowcodes , 'position' );
2016-02-15 07:04:07 +01:00
2012-07-17 15:27:36 +02:00
$nbqualified = 0 ;
2016-02-15 07:04:07 +01:00
$oldfamily = '' ;
2011-03-01 10:22:58 +01:00
2017-11-14 01:00:57 +01:00
print '<table class="noborder" width="100%">' . " \n " ;
2012-07-24 20:15:34 +02:00
foreach ( $workflowcodes as $key => $params )
2011-03-01 10:22:58 +01:00
{
2012-07-24 20:15:34 +02:00
$picto = $params [ 'picto' ];
$enabled = $params [ 'enabled' ];
2016-02-15 07:04:07 +01:00
$family = $params [ 'family' ];
2017-11-14 01:00:57 +01:00
if ( $family == 'separator' )
{
print '</table><br>' ;
print '<table class="noborder" width="100%">' . " \n " ;
continue ;
}
if ( ! verifCond ( $enabled )) continue ;
2012-07-17 15:27:36 +02:00
$nbqualified ++ ;
2016-02-15 07:04:07 +01:00
2017-11-14 01:00:57 +01:00
2016-02-15 07:04:07 +01:00
if ( $oldfamily != $family )
{
print '<tr class="liste_titre">' . " \n " ;
2016-10-29 16:18:39 +02:00
print ' <td>' ;
2017-11-14 01:00:57 +01:00
if ( $family == 'create' )
{
print $langs -> trans ( " AutomaticCreation " );
}
elseif ( preg_match ( '/classify_(.*)/' , $family , $reg ))
{
print $langs -> trans ( " AutomaticClassification " );
if ( $reg [ 1 ] == 'proposal' ) print ' - ' . $langs -> trans ( 'Proposal' );
if ( $reg [ 1 ] == 'order' ) print ' - ' . $langs -> trans ( 'Order' );
if ( $reg [ 1 ] == 'supplier_proposal' ) print ' - ' . $langs -> trans ( 'SupplierProposal' );
if ( $reg [ 1 ] == 'supplier_order' ) print ' - ' . $langs -> trans ( 'SupplierOrder' );
}
else
{
print $langs -> trans ( " Description " );
}
2016-10-29 16:18:39 +02:00
print '</td>' ;
2016-02-15 07:04:07 +01:00
print ' <td align="center">' . $langs -> trans ( " Status " ) . '</td>' ;
print " </tr> \n " ;
$oldfamily = $family ;
2016-08-04 09:55:16 +02:00
}
2017-04-25 11:59:18 +02:00
print " <tr class= \" oddeven \" > \n " ;
2012-07-22 13:36:28 +02:00
print " <td> " . img_object ( '' , $picto ) . $langs -> trans ( 'desc' . $key );
2012-07-24 20:15:34 +02:00
if ( ! empty ( $params [ 'warning' ]))
2012-07-22 13:36:28 +02:00
{
$langs -> load ( " errors " );
2012-07-24 20:15:34 +02:00
print ' ' . img_warning ( $langs -> transnoentitiesnoconv ( $params [ 'warning' ]));
2012-07-22 13:36:28 +02:00
}
print " </td> \n " ;
2012-07-17 15:27:36 +02:00
print '<td align="center">' ;
2012-07-24 20:15:34 +02:00
if ( ! empty ( $conf -> use_javascript_ajax ))
2012-07-17 15:27:36 +02:00
{
print ajax_constantonoff ( $key );
}
else
{
if ( ! empty ( $conf -> global -> $key ))
{
print '<a href="' . $_SERVER [ 'PHP_SELF' ] . '?action=del' . $key . '">' ;
print img_picto ( $langs -> trans ( " Activated " ), 'switch_on' );
print '</a>' ;
}
else
{
print '<a href="' . $_SERVER [ 'PHP_SELF' ] . '?action=set' . $key . '">' ;
print img_picto ( $langs -> trans ( " Disabled " ), 'switch_off' );
print '</a>' ;
}
}
print '</td>' ;
print '</tr>' ;
2011-03-01 10:37:54 +01:00
}
2012-07-17 15:27:36 +02:00
if ( $nbqualified == 0 )
2011-03-01 10:37:54 +01:00
{
print '<tr><td colspan="3">' . $langs -> trans ( " ThereIsNoWorkflowToModify " );
2011-03-01 10:22:58 +01:00
}
print '</table>' ;
2012-02-13 10:02:28 +01:00
2012-02-13 09:45:38 +01:00
llxFooter ();
2011-03-01 10:22:58 +01:00
$db -> close ();