2017-03-28 06:35:03 +02:00
< ? php
/* Copyright ( C ) 2017 Alexandre Spangaro < aspangaro @ zendsi . com >
*
* 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
* the Free Software Foundation ; either version 3 of the License , or
* ( 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
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*
*/
/**
2017-04-30 07:41:47 +02:00
* \file htdocs / accountancy / admin / journals_list . php
2017-03-28 06:35:03 +02:00
* \ingroup Advanced accountancy
* \brief Setup page to configure journals
*/
2018-06-26 01:25:03 +02:00
2017-03-28 06:35:03 +02:00
require '../../main.inc.php' ;
2017-05-01 08:16:09 +02:00
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formadmin.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/lib/admin.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/lib/functions2.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php' ;
require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php' ;
require_once DOL_DOCUMENT_ROOT . '/accountancy/class/accountingjournal.class.php' ;
2017-03-28 06:35:03 +02:00
2018-05-26 23:52:52 +02:00
// Load translation files required by the page
2018-04-18 06:20:34 +02:00
$langs -> loadLangs ( array ( " admin " , " compta " , " accountancy " ));
2017-03-28 06:35:03 +02:00
2018-11-05 17:53:31 +01:00
$action = GETPOST ( 'action' , 'aZ09' ) ? GETPOST ( 'action' , 'aZ09' ) : 'view' ;
2017-05-01 08:16:09 +02:00
$confirm = GETPOST ( 'confirm' , 'alpha' );
2018-04-25 16:01:06 +02:00
$id = 35 ;
2017-05-01 08:16:09 +02:00
$rowid = GETPOST ( 'rowid' , 'alpha' );
2017-06-18 21:13:48 +02:00
$code = GETPOST ( 'code' , 'alpha' );
2017-05-01 08:16:09 +02:00
// Security access
2017-07-07 20:05:32 +02:00
if ( empty ( $user -> rights -> accounting -> chartofaccount ))
2017-05-01 08:16:09 +02:00
{
2017-03-28 06:35:03 +02:00
accessforbidden ();
2017-05-01 08:16:09 +02:00
}
$acts [ 0 ] = " activate " ;
$acts [ 1 ] = " disable " ;
$actl [ 0 ] = img_picto ( $langs -> trans ( " Disabled " ), 'switch_off' );
$actl [ 1 ] = img_picto ( $langs -> trans ( " Activated " ), 'switch_on' );
2018-10-12 16:49:53 +02:00
$listoffset = GETPOST ( 'listoffset' , 'alpha' );
$listlimit = GETPOST ( 'listlimit' , 'int' ) > 0 ? GETPOST ( 'listlimit' , 'int' ) : 1000 ;
2017-05-01 08:16:09 +02:00
$active = 1 ;
$sortfield = GETPOST ( " sortfield " , 'alpha' );
$sortorder = GETPOST ( " sortorder " , 'alpha' );
$page = GETPOST ( " page " , 'int' );
2017-11-03 19:37:54 +01:00
if ( empty ( $page ) || $page == - 1 ) { $page = 0 ; } // If $page is not defined, or '' or -1
2017-05-01 08:16:09 +02:00
$offset = $listlimit * $page ;
$pageprev = $page - 1 ;
$pagenext = $page + 1 ;
2017-05-05 16:54:05 +02:00
if ( empty ( $sortfield )) $sortfield = 'code' ;
if ( empty ( $sortorder )) $sortorder = 'ASC' ;
2017-05-01 08:16:09 +02:00
2017-03-28 06:35:03 +02:00
$error = 0 ;
2017-06-10 12:56:28 +02:00
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
2017-05-01 08:16:09 +02:00
$hookmanager -> initHooks ( array ( 'admin' ));
// This page is a generic page to edit dictionaries
// Put here declaration of dictionaries properties
// Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this.
$taborder = array ( 35 );
// Name of SQL tables of dictionaries
$tabname = array ();
$tabname [ 35 ] = MAIN_DB_PREFIX . " accounting_journal " ;
2017-03-28 06:35:03 +02:00
2017-05-01 08:16:09 +02:00
// Dictionary labels
$tablib = array ();
$tablib [ 35 ] = " DictionaryAccountancyJournal " ;
2017-03-28 06:35:03 +02:00
2017-05-01 08:16:09 +02:00
// Requests to extract data
$tabsql = array ();
2018-05-13 20:35:07 +02:00
$tabsql [ 35 ] = " SELECT a.rowid as rowid, a.code as code, a.label, a.nature, a.active FROM " . MAIN_DB_PREFIX . " accounting_journal as a " ;
2017-03-28 06:35:03 +02:00
2017-05-01 08:16:09 +02:00
// Criteria to sort dictionaries
$tabsqlsort = array ();
$tabsqlsort [ 35 ] = " code ASC " ;
// Nom des champs en resultat de select pour affichage du dictionnaire
$tabfield = array ();
$tabfield [ 35 ] = " code,label,nature " ;
// Nom des champs d'edition pour modification d'un enregistrement
$tabfieldvalue = array ();
$tabfieldvalue [ 35 ] = " code,label,nature " ;
// Nom des champs dans la table pour insertion d'un enregistrement
$tabfieldinsert = array ();
2018-05-14 20:59:38 +02:00
$tabfieldinsert [ 35 ] = " code,label,nature " ;
2017-05-01 08:16:09 +02:00
// Nom du rowid si le champ n'est pas de type autoincrement
// Example: "" if id field is "rowid" and has autoincrement on
// "nameoffield" if id field is not "rowid" or has not autoincrement on
$tabrowid = array ();
$tabrowid [ 35 ] = " " ;
// Condition to show dictionary in setup page
$tabcond = array ();
$tabcond [ 35 ] = ! empty ( $conf -> accounting -> enabled );
// List of help for fields
$tabhelp = array ();
$tabhelp [ 35 ] = array ( 'code' => $langs -> trans ( " EnterAnyCode " ));
// List of check for fields (NOT USED YET)
$tabfieldcheck = array ();
$tabfieldcheck [ 35 ] = array ();
// Complete all arrays with entries found into modules
complete_dictionary_with_modules ( $taborder , $tabname , $tablib , $tabsql , $tabsqlsort , $tabfield , $tabfieldvalue , $tabfieldinsert , $tabrowid , $tabcond , $tabhelp , $tabfieldcheck );
// Define elementList and sourceList (used for dictionary type of contacts "llx_c_type_contact")
$elementList = array ();
2018-09-09 13:42:38 +02:00
// Must match ids defined into eldy.lib.php
$sourceList = array (
'1' => $langs -> trans ( 'AccountingJournalType1' ),
'2' => $langs -> trans ( 'AccountingJournalType2' ),
'3' => $langs -> trans ( 'AccountingJournalType3' ),
'4' => $langs -> trans ( 'AccountingJournalType4' ),
'5' => $langs -> trans ( 'AccountingJournalType5' ),
'8' => $langs -> trans ( 'AccountingJournalType8' ),
'9' => $langs -> trans ( 'AccountingJournalType9' ),
);
2017-03-28 06:35:03 +02:00
/*
* Actions
*/
2018-10-12 16:49:53 +02:00
if ( GETPOST ( 'button_removefilter' , 'alpha' ) || GETPOST ( 'button_removefilter.x' , 'alpha' ) || GETPOST ( 'button_removefilter_x' , 'alpha' ))
2017-05-01 08:16:09 +02:00
{
2017-10-07 13:09:31 +02:00
$search_country_id = '' ;
2017-05-01 08:16:09 +02:00
}
// Actions add or modify an entry into a dictionary
2018-10-12 16:49:53 +02:00
if ( GETPOST ( 'actionadd' , 'alpha' ) || GETPOST ( 'actionmodify' , 'alpha' ))
2017-05-01 08:16:09 +02:00
{
2017-10-07 13:09:31 +02:00
$listfield = explode ( ',' , str_replace ( ' ' , '' , $tabfield [ $id ]));
$listfieldinsert = explode ( ',' , $tabfieldinsert [ $id ]);
$listfieldmodify = explode ( ',' , $tabfieldinsert [ $id ]);
$listfieldvalue = explode ( ',' , $tabfieldvalue [ $id ]);
// Check that all fields are filled
$ok = 1 ;
foreach ( $listfield as $f => $value )
{
2017-05-01 08:16:09 +02:00
if ( $fieldnamekey == 'libelle' || ( $fieldnamekey == 'label' )) $fieldnamekey = 'Label' ;
2017-10-07 13:09:31 +02:00
if ( $fieldnamekey == 'code' ) $fieldnamekey = 'Code' ;
2017-05-01 08:16:09 +02:00
if ( $fieldnamekey == 'nature' ) $fieldnamekey = 'Nature' ;
2017-10-07 13:09:31 +02:00
}
// Other checks
if ( isset ( $_POST [ " code " ]))
{
if ( $_POST [ " code " ] == '0' )
{
$ok = 0 ;
setEventMessages ( $langs -> transnoentities ( 'ErrorCodeCantContainZero' ), null , 'errors' );
}
/* if ( ! is_numeric ( $_POST [ 'code' ])) // disabled, code may not be in numeric base
2017-05-01 08:16:09 +02:00
{
$ok = 0 ;
2017-09-15 23:49:04 +02:00
$msg .= $langs -> transnoentities ( 'ErrorFieldFormat' , $langs -> transnoentities ( 'Code' )) . '<br>' ;
2017-05-01 08:16:09 +02:00
} */
2017-10-07 13:09:31 +02:00
}
2018-03-06 19:56:08 +01:00
if ( ! GETPOST ( 'label' , 'alpha' ))
{
setEventMessages ( $langs -> transnoentities ( " ErrorFieldRequired " , $langs -> transnoentitiesnoconv ( " Label " )), null , 'errors' );
$ok = 0 ;
}
2017-05-01 08:16:09 +02:00
// Clean some parameters
2017-10-07 13:09:31 +02:00
if ( $_POST [ " accountancy_code " ] <= 0 ) $_POST [ " accountancy_code " ] = '' ; // If empty, we force to null
2017-05-01 08:16:09 +02:00
if ( $_POST [ " accountancy_code_sell " ] <= 0 ) $_POST [ " accountancy_code_sell " ] = '' ; // If empty, we force to null
if ( $_POST [ " accountancy_code_buy " ] <= 0 ) $_POST [ " accountancy_code_buy " ] = '' ; // If empty, we force to null
2017-10-07 13:09:31 +02:00
// Si verif ok et action add, on ajoute la ligne
2018-10-12 16:49:53 +02:00
if ( $ok && GETPOST ( 'actionadd' , 'alpha' ))
2017-10-07 13:09:31 +02:00
{
if ( $tabrowid [ $id ])
{
// Recupere id libre pour insertion
$newid = 0 ;
$sql = " SELECT max( " . $tabrowid [ $id ] . " ) newid from " . $tabname [ $id ];
$result = $db -> query ( $sql );
if ( $result )
{
$obj = $db -> fetch_object ( $result );
$newid = ( $obj -> newid + 1 );
} else {
dol_print_error ( $db );
}
}
// Add new entry
$sql = " INSERT INTO " . $tabname [ $id ] . " ( " ;
// List of fields
if ( $tabrowid [ $id ] && ! in_array ( $tabrowid [ $id ], $listfieldinsert ))
$sql .= $tabrowid [ $id ] . " , " ;
$sql .= $tabfieldinsert [ $id ];
2018-03-06 19:56:08 +01:00
$sql .= " ,active,entity) " ;
2017-10-07 13:09:31 +02:00
$sql .= " VALUES( " ;
// List of values
if ( $tabrowid [ $id ] && ! in_array ( $tabrowid [ $id ], $listfieldinsert ))
$sql .= $newid . " , " ;
$i = 0 ;
foreach ( $listfieldinsert as $f => $value )
{
if ( $value == 'entity' ) {
$_POST [ $listfieldvalue [ $i ]] = $conf -> entity ;
}
if ( $i ) $sql .= " , " ;
2018-03-06 19:56:08 +01:00
if ( $_POST [ $listfieldvalue [ $i ]] == '' ) $sql .= " null " ; // For vat, we want/accept code = ''
2017-10-07 13:09:31 +02:00
else $sql .= " ' " . $db -> escape ( $_POST [ $listfieldvalue [ $i ]]) . " ' " ;
$i ++ ;
}
2018-03-06 19:56:08 +01:00
$sql .= " ,1, " . $conf -> entity . " ) " ;
2017-10-07 13:09:31 +02:00
dol_syslog ( " actionadd " , LOG_DEBUG );
$result = $db -> query ( $sql );
if ( $result ) // Add is ok
{
setEventMessages ( $langs -> transnoentities ( " RecordSaved " ), null , 'mesgs' );
$_POST = array ( 'id' => $id ); // Clean $_POST array, we keep only
}
else
{
if ( $db -> errno () == 'DB_ERROR_RECORD_ALREADY_EXISTS' ) {
setEventMessages ( $langs -> transnoentities ( " ErrorRecordAlreadyExists " ), null , 'errors' );
}
else {
dol_print_error ( $db );
}
}
}
// Si verif ok et action modify, on modifie la ligne
2018-10-12 16:49:53 +02:00
if ( $ok && GETPOST ( 'actionmodify' , 'alpha' ))
2017-10-07 13:09:31 +02:00
{
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
// Modify entry
$sql = " UPDATE " . $tabname [ $id ] . " SET " ;
// Modifie valeur des champs
if ( $tabrowid [ $id ] && ! in_array ( $tabrowid [ $id ], $listfieldmodify ))
{
$sql .= $tabrowid [ $id ] . " = " ;
$sql .= " ' " . $db -> escape ( $rowid ) . " ', " ;
}
$i = 0 ;
foreach ( $listfieldmodify as $field )
{
if ( $field == 'price' || preg_match ( '/^amount/i' , $field ) || $field == 'taux' ) {
$_POST [ $listfieldvalue [ $i ]] = price2num ( $_POST [ $listfieldvalue [ $i ]], 'MU' );
}
else if ( $field == 'entity' ) {
$_POST [ $listfieldvalue [ $i ]] = $conf -> entity ;
}
if ( $i ) $sql .= " , " ;
$sql .= $field . " = " ;
if ( $_POST [ $listfieldvalue [ $i ]] == '' && ! ( $listfieldvalue [ $i ] == 'code' && $id == 10 )) $sql .= " null " ; // For vat, we want/accept code = ''
else $sql .= " ' " . $db -> escape ( $_POST [ $listfieldvalue [ $i ]]) . " ' " ;
$i ++ ;
}
$sql .= " WHERE " . $rowidcol . " = ' " . $rowid . " ' " ;
2018-03-06 19:56:08 +01:00
$sql .= " AND entity = " . $conf -> entity ;
2017-10-07 13:09:31 +02:00
dol_syslog ( " actionmodify " , LOG_DEBUG );
//print $sql;
$resql = $db -> query ( $sql );
if ( ! $resql )
{
setEventMessages ( $db -> error (), null , 'errors' );
}
}
//$_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
2017-05-01 08:16:09 +02:00
}
2018-10-12 16:49:53 +02:00
//if (GETPOST('actioncancel', 'alpha'))
2018-09-09 13:42:38 +02:00
//{
// $_GET["id"]=GETPOST('id', 'int'); // Force affichage dictionnaire en cours d'edition
//}
2017-05-01 08:16:09 +02:00
if ( $action == 'confirm_delete' && $confirm == 'yes' ) // delete
{
2017-10-07 13:09:31 +02:00
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
$sql = " DELETE from " . $tabname [ $id ] . " WHERE " . $rowidcol . " =' " . $rowid . " ' " ;
2018-03-06 19:56:08 +01:00
$sql .= " AND entity = " . $conf -> entity ;
2017-10-07 13:09:31 +02:00
dol_syslog ( " delete " , LOG_DEBUG );
$result = $db -> query ( $sql );
if ( ! $result )
{
if ( $db -> errno () == 'DB_ERROR_CHILD_EXISTS' )
{
setEventMessages ( $langs -> transnoentities ( " ErrorRecordIsUsedByChild " ), null , 'errors' );
}
else
{
dol_print_error ( $db );
}
}
2017-05-01 08:16:09 +02:00
}
// activate
if ( $action == $acts [ 0 ])
{
2017-10-07 13:09:31 +02:00
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
if ( $rowid ) {
$sql = " UPDATE " . $tabname [ $id ] . " SET active = 1 WHERE " . $rowidcol . " =' " . $rowid . " ' " ;
}
elseif ( $code ) {
$sql = " UPDATE " . $tabname [ $id ] . " SET active = 1 WHERE code=' " . $code . " ' " ;
}
2018-03-06 19:56:08 +01:00
$sql .= " AND entity = " . $conf -> entity ;
2017-10-07 13:09:31 +02:00
$result = $db -> query ( $sql );
if ( ! $result )
{
dol_print_error ( $db );
}
2017-05-01 08:16:09 +02:00
}
// disable
if ( $action == $acts [ 1 ])
{
2017-10-07 13:09:31 +02:00
if ( $tabrowid [ $id ]) { $rowidcol = $tabrowid [ $id ]; }
else { $rowidcol = " rowid " ; }
if ( $rowid ) {
$sql = " UPDATE " . $tabname [ $id ] . " SET active = 0 WHERE " . $rowidcol . " =' " . $rowid . " ' " ;
}
elseif ( $code ) {
$sql = " UPDATE " . $tabname [ $id ] . " SET active = 0 WHERE code=' " . $code . " ' " ;
}
2018-03-06 19:56:08 +01:00
$sql .= " AND entity = " . $conf -> entity ;
2017-10-07 13:09:31 +02:00
$result = $db -> query ( $sql );
if ( ! $result )
{
dol_print_error ( $db );
}
2017-05-01 08:16:09 +02:00
}
2017-03-28 06:35:03 +02:00
2017-10-06 11:02:44 +02:00
2017-03-28 06:35:03 +02:00
/*
* View
*/
$form = new Form ( $db );
2017-05-01 08:16:09 +02:00
$formadmin = new FormAdmin ( $db );
2017-03-28 06:35:03 +02:00
2017-05-01 08:16:09 +02:00
llxHeader ();
2017-03-28 06:35:03 +02:00
2017-05-01 08:16:09 +02:00
$titre = $langs -> trans ( " DictionarySetup " );
$linkback = '' ;
if ( $id )
2017-03-28 06:35:03 +02:00
{
2017-10-07 13:09:31 +02:00
$titre .= ' - ' . $langs -> trans ( $tablib [ $id ]);
$titlepicto = 'title_accountancy' ;
2017-03-28 06:35:03 +02:00
}
2017-05-01 08:16:09 +02:00
print load_fiche_titre ( $titre , $linkback , $titlepicto );
2017-03-28 06:35:03 +02:00
2017-05-01 08:16:09 +02:00
// Confirmation de la suppression de la ligne
if ( $action == 'delete' )
2017-03-28 06:35:03 +02:00
{
2017-10-07 13:09:31 +02:00
print $form -> formconfirm ( $_SERVER [ " PHP_SELF " ] . '?' . ( $page ? 'page=' . $page . '&' : '' ) . 'sortfield=' . $sortfield . '&sortorder=' . $sortorder . '&rowid=' . $rowid . '&code=' . $code . '&id=' . $id , $langs -> trans ( 'DeleteLine' ), $langs -> trans ( 'ConfirmDeleteLine' ), 'confirm_delete' , '' , 0 , 1 );
2017-03-28 06:35:03 +02:00
}
2017-05-01 08:16:09 +02:00
//var_dump($elementList);
/*
* Show a dictionary
*/
if ( $id )
2017-03-28 06:35:03 +02:00
{
2017-10-07 13:09:31 +02:00
// Complete requete recherche valeurs avec critere de tri
$sql = $tabsql [ $id ];
2018-03-06 19:56:08 +01:00
$sql .= " WHERE a.entity = " . $conf -> entity ;
2017-10-07 13:09:31 +02:00
2018-04-25 16:01:06 +02:00
// If sort order is "country", we use country_code instead
if ( $sortfield == 'country' ) $sortfield = 'country_code' ;
$sql .= $db -> order ( $sortfield , $sortorder );
2017-10-07 13:09:31 +02:00
$sql .= $db -> plimit ( $listlimit + 1 , $offset );
$fieldlist = explode ( ',' , $tabfield [ $id ]);
print '<form action="' . $_SERVER [ 'PHP_SELF' ] . '?id=' . $id . '" method="POST">' ;
print '<input type="hidden" name="token" value="' . $_SESSION [ 'newtoken' ] . '">' ;
print '<input type="hidden" name="from" value="' . dol_escape_htmltag ( GETPOST ( 'from' , 'alpha' )) . '">' ;
print '<div class="div-table-responsive">' ;
print '<table class="noborder" width="100%">' ;
// Form to add a new line
if ( $tabname [ $id ])
{
$alabelisused = 0 ;
$fieldlist = explode ( ',' , $tabfield [ $id ]);
// Line for title
print '<tr class="liste_titre">' ;
foreach ( $fieldlist as $field => $value )
{
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$valuetoshow = ucfirst ( $fieldlist [ $field ]); // Par defaut
$valuetoshow = $langs -> trans ( $valuetoshow ); // try to translate
$align = " left " ;
if ( $fieldlist [ $field ] == 'code' ) { $valuetoshow = $langs -> trans ( " Code " ); }
if ( $fieldlist [ $field ] == 'libelle' || $fieldlist [ $field ] == 'label' )
{
$valuetoshow = $langs -> trans ( " Label " );
}
if ( $fieldlist [ $field ] == 'nature' ) { $valuetoshow = $langs -> trans ( " Nature " ); }
if ( $valuetoshow != '' )
{
print '<td align="' . $align . '">' ;
if ( ! empty ( $tabhelp [ $id ][ $value ]) && preg_match ( '/^http(s*):/i' , $tabhelp [ $id ][ $value ])) print '<a href="' . $tabhelp [ $id ][ $value ] . '" target="_blank">' . $valuetoshow . ' ' . img_help ( 1 , $valuetoshow ) . '</a>' ;
else if ( ! empty ( $tabhelp [ $id ][ $value ])) print $form -> textwithpicto ( $valuetoshow , $tabhelp [ $id ][ $value ]);
else print $valuetoshow ;
print '</td>' ;
}
if ( $fieldlist [ $field ] == 'libelle' || $fieldlist [ $field ] == 'label' ) $alabelisused = 1 ;
}
print '<td>' ;
print '<input type="hidden" name="id" value="' . $id . '">' ;
print '</td>' ;
print '<td style="min-width: 26px;"></td>' ;
print '<td style="min-width: 26px;"></td>' ;
print '<td style="min-width: 26px;"></td>' ;
print '</tr>' ;
// Line to enter new values
print '<tr class="oddeven nodrag nodrap nohover">' ;
$obj = new stdClass ();
// If data was already input, we define them in obj to populate input fields.
2018-10-12 16:49:53 +02:00
if ( GETPOST ( 'actionadd' , 'alpha' ))
2017-10-07 13:09:31 +02:00
{
foreach ( $fieldlist as $key => $val )
{
if ( GETPOST ( $val ) != '' )
$obj -> $val = GETPOST ( $val );
}
}
$tmpaction = 'create' ;
$parameters = array ( 'fieldlist' => $fieldlist , 'tabname' => $tabname [ $id ]);
$reshook = $hookmanager -> executeHooks ( 'createDictionaryFieldlist' , $parameters , $obj , $tmpaction ); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager -> error ; $errors = $hookmanager -> errors ;
if ( empty ( $reshook ))
{
fieldListJournal ( $fieldlist , $obj , $tabname [ $id ], 'add' );
}
print '<td colspan="4" align="right">' ;
print '<input type="submit" class="button" name="actionadd" value="' . $langs -> trans ( " Add " ) . '">' ;
print '</td>' ;
print " </tr> " ;
print '<tr><td colspan="7"> </td></tr>' ; // Keep to have a line with enough height
}
// List of available record in database
dol_syslog ( " htdocs/admin/dict " , LOG_DEBUG );
$resql = $db -> query ( $sql );
if ( $resql )
{
$num = $db -> num_rows ( $resql );
$i = 0 ;
$param = '&id=' . $id ;
if ( $search_country_id > 0 ) $param .= '&search_country_id=' . $search_country_id ;
$paramwithsearch = $param ;
if ( $sortorder ) $paramwithsearch .= '&sortorder=' . $sortorder ;
if ( $sortfield ) $paramwithsearch .= '&sortfield=' . $sortfield ;
2018-10-12 16:49:53 +02:00
if ( GETPOST ( 'from' , 'alpha' )) $paramwithsearch .= '&from=' . GETPOST ( 'from' , 'alpha' );
2017-10-07 13:09:31 +02:00
// There is several pages
if ( $num > $listlimit )
{
print '<tr class="none"><td align="right" colspan="' . ( 3 + count ( $fieldlist )) . '">' ;
print_fleche_navigation ( $page , $_SERVER [ " PHP_SELF " ], $paramwithsearch , ( $num > $listlimit ), '<li class="pagination"><span>' . $langs -> trans ( " Page " ) . ' ' . ( $page + 1 ) . '</span></li>' );
print '</td></tr>' ;
}
// Title line with search boxes
print '<tr class="liste_titre_filter liste_titre_add">' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre"></td>' ;
print '<td class="liste_titre" align="center">' ;
if ( $filterfound )
{
$searchpicto = $form -> showFilterAndCheckAddButtons ( 0 );
print $searchpicto ;
}
print '</td>' ;
print '</tr>' ;
// Title of lines
print '<tr class="liste_titre">' ;
foreach ( $fieldlist as $field => $value )
{
// Determine le nom du champ par rapport aux noms possibles
// dans les dictionnaires de donnees
$showfield = 1 ; // By defaut
$align = " left " ;
$sortable = 1 ;
$valuetoshow = '' ;
/*
2017-05-01 08:16:09 +02:00
$tmparray = getLabelOfField ( $fieldlist [ $field ]);
$showfield = $tmp [ 'showfield' ];
$valuetoshow = $tmp [ 'valuetoshow' ];
$align = $tmp [ 'align' ];
$sortable = $tmp [ 'sortable' ];
*/
2017-10-07 13:09:31 +02:00
$valuetoshow = ucfirst ( $fieldlist [ $field ]); // By defaut
$valuetoshow = $langs -> trans ( $valuetoshow ); // try to translate
if ( $fieldlist [ $field ] == 'code' ) { $valuetoshow = $langs -> trans ( " Code " ); }
if ( $fieldlist [ $field ] == 'libelle' || $fieldlist [ $field ] == 'label' ) { $valuetoshow = $langs -> trans ( " Label " ); }
if ( $fieldlist [ $field ] == 'nature' ) { $valuetoshow = $langs -> trans ( " Nature " ); }
// Affiche nom du champ
if ( $showfield )
{
print getTitleFieldOfList ( $valuetoshow , 0 , $_SERVER [ " PHP_SELF " ], ( $sortable ? $fieldlist [ $field ] : '' ), ( $page ? 'page=' . $page . '&' : '' ), $param , " align= " . $align , $sortfield , $sortorder );
}
}
2017-05-01 08:16:09 +02:00
print getTitleFieldOfList ( $langs -> trans ( " Status " ), 0 , $_SERVER [ " PHP_SELF " ], " active " , ( $page ? 'page=' . $page . '&' : '' ), $param , 'align="center"' , $sortfield , $sortorder );
2017-10-07 13:09:31 +02:00
print getTitleFieldOfList ( '' );
print getTitleFieldOfList ( '' );
print getTitleFieldOfList ( '' );
print '</tr>' ;
if ( $num )
{
// Lines with values
while ( $i < $num )
{
$obj = $db -> fetch_object ( $resql );
//print_r($obj);
print '<tr class="oddeven" id="rowid-' . $obj -> rowid . '">' ;
if ( $action == 'edit' && ( $rowid == ( ! empty ( $obj -> rowid ) ? $obj -> rowid : $obj -> code )))
{
$tmpaction = 'edit' ;
$parameters = array ( 'fieldlist' => $fieldlist , 'tabname' => $tabname [ $id ]);
$reshook = $hookmanager -> executeHooks ( 'editDictionaryFieldlist' , $parameters , $obj , $tmpaction ); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager -> error ; $errors = $hookmanager -> errors ;
// Show fields
if ( empty ( $reshook )) fieldListJournal ( $fieldlist , $obj , $tabname [ $id ], 'edit' );
print '<td align="center" colspan="4">' ;
print '<input type="hidden" name="page" value="' . $page . '">' ;
print '<input type="hidden" name="rowid" value="' . $rowid . '">' ;
print '<input type="submit" class="button" name="actionmodify" value="' . $langs -> trans ( " Modify " ) . '">' ;
print '<input type="submit" class="button" name="actioncancel" value="' . $langs -> trans ( " Cancel " ) . '">' ;
print '<div name="' . ( ! empty ( $obj -> rowid ) ? $obj -> rowid : $obj -> code ) . '"></div>' ;
print '</td>' ;
}
else
{
$tmpaction = 'view' ;
$parameters = array ( 'var' => $var , 'fieldlist' => $fieldlist , 'tabname' => $tabname [ $id ]);
$reshook = $hookmanager -> executeHooks ( 'viewDictionaryFieldlist' , $parameters , $obj , $tmpaction ); // Note that $action and $object may have been modified by some hooks
$error = $hookmanager -> error ; $errors = $hookmanager -> errors ;
if ( empty ( $reshook ))
{
2018-05-16 20:56:01 +02:00
$langs -> load ( " accountancy " );
2017-10-07 13:09:31 +02:00
foreach ( $fieldlist as $field => $value )
{
$showfield = 1 ;
$align = " left " ;
$valuetoshow = $obj -> { $fieldlist [ $field ]};
if ( $valuetoshow == 'all' ) {
$valuetoshow = $langs -> trans ( 'All' );
}
else if ( $fieldlist [ $field ] == 'nature' && $tabname [ $id ] == MAIN_DB_PREFIX . 'accounting_journal' ) {
$key = $langs -> trans ( " AccountingJournalType " . strtoupper ( $obj -> nature ));
2018-05-16 20:56:01 +02:00
$valuetoshow = ( $obj -> nature && $key != " AccountingJournalType " . strtoupper ( $langs -> trans ( $obj -> nature )) ? $key : $obj -> { $fieldlist [ $field ]});
2017-10-07 13:09:31 +02:00
}
2018-05-16 20:56:01 +02:00
else if ( $fieldlist [ $field ] == 'label' && $tabname [ $id ] == MAIN_DB_PREFIX . 'accounting_journal' ) {
$valuetoshow = $langs -> trans ( $obj -> label );
}
2017-10-07 13:09:31 +02:00
$class = 'tddict' ;
2017-05-01 08:16:09 +02:00
// Show value for field
if ( $showfield ) print '<!-- ' . $fieldlist [ $field ] . ' --><td align="' . $align . '" class="' . $class . '">' . $valuetoshow . '</td>' ;
2017-10-07 13:09:31 +02:00
}
}
// Can an entry be erased or disabled ?
$iserasable = 1 ; $canbedisabled = 1 ; $canbemodified = 1 ; // true by default
if ( isset ( $obj -> code ) && $id != 10 )
{
if (( $obj -> code == '0' || $obj -> code == '' || preg_match ( '/unknown/i' , $obj -> code ))) { $iserasable = 0 ; $canbedisabled = 0 ; }
else if ( $obj -> code == 'RECEP' ) { $iserasable = 0 ; $canbedisabled = 0 ; }
else if ( $obj -> code == 'EF0' ) { $iserasable = 0 ; $canbedisabled = 0 ; }
}
$canbemodified = $iserasable ;
$url = $_SERVER [ " PHP_SELF " ] . '?' . ( $page ? 'page=' . $page . '&' : '' ) . 'sortfield=' . $sortfield . '&sortorder=' . $sortorder . '&rowid=' . ( ! empty ( $obj -> rowid ) ? $obj -> rowid : ( ! empty ( $obj -> code ) ? $obj -> code : '' )) . '&code=' . ( ! empty ( $obj -> code ) ? urlencode ( $obj -> code ) : '' );
if ( $param ) $url .= '&' . $param ;
$url .= '&' ;
// Active
print '<td align="center" class="nowrap">' ;
if ( $canbedisabled ) print '<a href="' . $url . 'action=' . $acts [ $obj -> active ] . '">' . $actl [ $obj -> active ] . '</a>' ;
2018-03-16 10:33:23 +01:00
else print $langs -> trans ( " AlwaysActive " );
2017-10-07 13:09:31 +02:00
print " </td> " ;
// Modify link
if ( $canbemodified ) print '<td align="center"><a class="reposition" href="' . $url . 'action=edit">' . img_edit () . '</a></td>' ;
else print '<td> </td>' ;
// Delete link
if ( $iserasable )
{
print '<td align="center">' ;
if ( $user -> admin ) print '<a href="' . $url . 'action=delete">' . img_delete () . '</a>' ;
//else print '<a href="#">'.img_delete().'</a>'; // Some dictionary can be edited by other profile than admin
print '</td>' ;
}
else print '<td> </td>' ;
print '<td></td>' ;
print '</td>' ;
}
print " </tr> \n " ;
$i ++ ;
}
}
}
else {
dol_print_error ( $db );
}
print '</table>' ;
2017-09-05 20:42:34 +02:00
print '</div>' ;
2017-05-01 08:16:09 +02:00
2017-10-07 13:09:31 +02:00
print '</form>' ;
2017-03-28 06:35:03 +02:00
}
2017-05-01 08:16:09 +02:00
print '<br>' ;
2018-07-28 14:02:33 +02:00
// End of page
2017-03-28 06:35:03 +02:00
llxFooter ();
2017-05-01 08:16:09 +02:00
$db -> close ();
/**
* Show fields in insert / edit mode
*
* @ param array $fieldlist Array of fields
* @ param Object $obj If we show a particular record , obj is filled with record fields
* @ param string $tabname Name of SQL table
* @ param string $context 'add' = Output field for the " add form " , 'edit' = Output field for the " edit form " , 'hide' = Output field for the " add form " but we dont want it to be rendered
* @ return void
*/
2017-09-12 19:52:05 +02:00
function fieldListJournal ( $fieldlist , $obj = '' , $tabname = '' , $context = '' )
2017-05-01 08:16:09 +02:00
{
global $conf , $langs , $db ;
global $form , $mysoc ;
global $region_id ;
global $elementList , $sourceList , $localtax_typeList ;
global $bc ;
$formadmin = new FormAdmin ( $db );
$formcompany = new FormCompany ( $db );
foreach ( $fieldlist as $field => $value )
{
if ( $fieldlist [ $field ] == 'nature' )
{
print '<td>' ;
print $form -> selectarray ( 'nature' , $sourceList ,( ! empty ( $obj -> { $fieldlist [ $field ]}) ? $obj -> { $fieldlist [ $field ]} : '' ));
print '</td>' ;
}
elseif ( $fieldlist [ $field ] == 'code' && isset ( $obj -> { $fieldlist [ $field ]})) {
print '<td><input type="text" class="flat minwidth100" value="' . ( ! empty ( $obj -> { $fieldlist [ $field ]}) ? $obj -> { $fieldlist [ $field ]} : '' ) . '" name="' . $fieldlist [ $field ] . '"></td>' ;
}
else
{
print '<td>' ;
$size = '' ; $class = '' ;
if ( $fieldlist [ $field ] == 'code' ) $class = 'maxwidth100' ;
if ( $fieldlist [ $field ] == 'label' ) $class = 'quatrevingtpercent' ;
if ( $fieldlist [ $field ] == 'sortorder' || $fieldlist [ $field ] == 'sens' || $fieldlist [ $field ] == 'category_type' ) $size = 'size="2" ' ;
print '<input type="text" ' . $size . 'class="flat' . ( $class ? ' ' . $class : '' ) . '" value="' . ( isset ( $obj -> { $fieldlist [ $field ]}) ? $obj -> { $fieldlist [ $field ]} : '' ) . '" name="' . $fieldlist [ $field ] . '">' ;
print '</td>' ;
}
}
2017-07-07 20:05:32 +02:00
}