Exchange rate editor: +filters
This commit is contained in:
parent
b3f911f810
commit
592789c597
@ -26,3 +26,4 @@ MulticurrencyDateSync=Date
|
|||||||
MulticurrencyRate=Exchange rate
|
MulticurrencyRate=Exchange rate
|
||||||
MulticurrencyCode=Currency code
|
MulticurrencyCode=Currency code
|
||||||
MulticurrencyEntity=Entity
|
MulticurrencyEntity=Entity
|
||||||
|
UnknownAction=Unknown action : "%s"
|
||||||
|
|||||||
@ -26,3 +26,4 @@ MulticurrencyDateSync=Date
|
|||||||
MulticurrencyRate=Taux de change
|
MulticurrencyRate=Taux de change
|
||||||
MulticurrencyCode=Code devise
|
MulticurrencyCode=Code devise
|
||||||
MulticurrencyEntity=Entité
|
MulticurrencyEntity=Entité
|
||||||
|
UnknownAction=Action non reconnue : "%s"
|
||||||
|
|||||||
@ -53,80 +53,70 @@ $hookmanager->initHooks(array('multicurrency_rates'));
|
|||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
|
|
||||||
$action = GETPOST('action', 'alpha') ?GETPOST('action', 'alpha') : 'view';
|
$action = GETPOST('action', 'alpha') ?GETPOST('action', 'alpha') : 'view';
|
||||||
$confirm = GETPOST('confirm', 'alpha');
|
|
||||||
$id = GETPOST('id', 'int');
|
|
||||||
$rowid = GETPOST('rowid', 'alpha');
|
|
||||||
$entity = GETPOST('entity', 'int');
|
|
||||||
$code = GETPOST('code', 'alpha');
|
|
||||||
|
|
||||||
$acts =array(); $actl =array();
|
|
||||||
$acts[0] = "activate";
|
|
||||||
$acts[1] = "disable";
|
|
||||||
$actl[0] = img_picto($langs->trans("Disabled"), 'switch_off');
|
|
||||||
$actl[1] = img_picto($langs->trans("Activated"), 'switch_on');
|
|
||||||
|
|
||||||
$listoffset = GETPOST('listoffset');
|
|
||||||
$listlimit = GETPOST('listlimit') > 0 ?GETPOST('listlimit') : 1000; // To avoid too long dictionaries
|
|
||||||
$active = 1;
|
|
||||||
|
|
||||||
$sortfield = GETPOST("sortfield", 'alpha');
|
|
||||||
$sortorder = GETPOST("sortorder", 'alpha');
|
|
||||||
$page = GETPOST("page", 'int');
|
|
||||||
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
|
||||||
$offset = $listlimit * $page;
|
|
||||||
$pageprev = $page - 1;
|
|
||||||
$pagenext = $page + 1;
|
|
||||||
// TODO: sorting, filtering, paginating
|
|
||||||
|
|
||||||
|
// column definition
|
||||||
|
$TVisibleColumn = array(
|
||||||
|
'rate.date_sync'
|
||||||
|
=> array('callback' => 'Date'),
|
||||||
|
'rate.rate'
|
||||||
|
=> array('callback' => 'Number'),
|
||||||
|
'currency.code'
|
||||||
|
=> array('callback' => 'CurrencyCode'),
|
||||||
|
// 'rate.entity'
|
||||||
|
// => array('callback' => 'Entity'),
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
_completeColumns($db, $TVisibleColumn);
|
||||||
_handleActions($db);
|
_handleActions($db, $TVisibleColumn);
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
function _handleActions($db) {
|
function _handleActions($db, $TVisibleColumn) {
|
||||||
|
global $langs;
|
||||||
$action = GETPOST('action', 'alpha');
|
$action = GETPOST('action', 'alpha');
|
||||||
if (empty($action)) $action = 'view';
|
if (empty($action)) $action = 'view';
|
||||||
|
|
||||||
$callbackName = '_action' . _camel($action);
|
$callbackName = '_action' . _camel($action);
|
||||||
if (!function_exists($callbackName)) {
|
if (!function_exists($callbackName)) {
|
||||||
setEventMessages('UnknownAction', array(), 'errors');
|
setEventMessages($langs->trans('UnknownAction', $action), array(), 'errors');
|
||||||
header('Location: ' . $_SERVER['PHP_SELF']);
|
header('Location: ' . $_SERVER['PHP_SELF']);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
call_user_func($callbackName, $db);
|
call_user_func($callbackName, $db, $TVisibleColumn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param DoliDB $db
|
* @param DoliDB $db
|
||||||
|
* @param array $TVisibleColumn
|
||||||
* @param string $mode
|
* @param string $mode
|
||||||
* @param int|null $targetId ID of the row targeted for edition, deletion, etc.
|
* @param int|null $targetId ID of the row targeted for edition, deletion, etc.
|
||||||
*/
|
*/
|
||||||
function _mainView($db, $mode='view', $targetId=NULL) {
|
function _mainView($db, $TVisibleColumn, $mode='view', $targetId=NULL) {
|
||||||
global $langs;
|
global $langs;
|
||||||
$title = $langs->trans('CurrencyRateSetup');
|
$title = $langs->trans('CurrencyRateSetup');
|
||||||
$limit = 123;
|
$limit = 123;
|
||||||
|
|
||||||
// column definition
|
$TSQLFilter = array();
|
||||||
$TVisibleColumn = array(
|
foreach ($TVisibleColumn as $colSelect => $colParam) {
|
||||||
'rate.date_sync'
|
if (isset($colParam['filter_value']) && !empty($colParam['filter_value'])) {
|
||||||
=> array('callback' => 'Date'),
|
$cbName = '_getSQLFilter' . ucfirst($colParam['callback']);
|
||||||
'rate.rate'
|
if (function_exists($cbName)) {
|
||||||
=> array('callback' => 'Number'),
|
$sqlFilter = call_user_func($cbName, $db, $colParam);
|
||||||
'currency.code'
|
} else {
|
||||||
=> array('callback' => 'CurrencyCode'),
|
$sqlFilter = ' AND ' . $colParam['name'] . ' = '
|
||||||
// 'rate.entity'
|
. '"' . $db->escape($colParam['filter_value']) . '"';
|
||||||
// => array('callback' => 'Entity'),
|
}
|
||||||
);
|
$TSQLFilter[] = $sqlFilter;
|
||||||
foreach ($TVisibleColumn as $colSelect => &$colParam) { $colParam['name'] = _columnAlias($colSelect); }
|
}
|
||||||
unset($colParam);
|
}
|
||||||
|
|
||||||
$sql = /** @lang SQL */
|
$sql = /** @lang SQL */
|
||||||
'SELECT rate.rowid, ' . join(', ', array_keys($TVisibleColumn)) . ' FROM ' . MAIN_DB_PREFIX . 'multicurrency_rate rate'
|
'SELECT rate.rowid, ' . join(', ', array_keys($TVisibleColumn)) . ' FROM ' . MAIN_DB_PREFIX . 'multicurrency_rate rate'
|
||||||
. ' LEFT JOIN ' . MAIN_DB_PREFIX . 'multicurrency currency ON rate.fk_multicurrency = currency.rowid'
|
. ' LEFT JOIN ' . MAIN_DB_PREFIX . 'multicurrency currency ON rate.fk_multicurrency = currency.rowid'
|
||||||
. ' WHERE rate.entity IN (' . getEntity('multicurrency') . ')'
|
. ' WHERE rate.entity IN (' . getEntity('multicurrency') . ')'
|
||||||
|
. (count($TSQLFilter) ? join('', $TSQLFilter) : '')
|
||||||
. ' ORDER BY rate.date_sync DESC'
|
. ' ORDER BY rate.date_sync DESC'
|
||||||
. ' LIMIT ' . intval($limit);
|
. ' LIMIT ' . intval($limit);
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
@ -159,32 +149,22 @@ function _mainView($db, $mode='view', $targetId=NULL) {
|
|||||||
. '</colgroup>';
|
. '</colgroup>';
|
||||||
|
|
||||||
|
|
||||||
// En-têtes de colonnes
|
|
||||||
echo '<thead>';
|
|
||||||
echo '<tr id="title-row">';
|
|
||||||
foreach ($TVisibleColumn as $colSelect => $colParam) {
|
|
||||||
echo '<th class="' . $colParam['name'] . '">';
|
|
||||||
echo $langs->trans('Multicurrency' . _camel(ucfirst($colParam['name'])));
|
|
||||||
echo '</th>';
|
|
||||||
}
|
|
||||||
echo '<th class="actions"></th>';
|
|
||||||
echo '</tr>';
|
|
||||||
|
|
||||||
// Formulaire des filtres de recherche
|
// Formulaire des filtres de recherche
|
||||||
echo '<tr id="filter-row">';
|
echo '<thead>';
|
||||||
|
echo '<tr id="filter-row" class="liste_titre_filter">';
|
||||||
foreach ($TVisibleColumn as $colSelect => $colParam) {
|
foreach ($TVisibleColumn as $colSelect => $colParam) {
|
||||||
echo '<td class="' . $colParam['name'] . '">';
|
echo '<td class="liste_titre ' . $colParam['name'] . '">';
|
||||||
echo _getCellContent(
|
echo _getCellContent(
|
||||||
GETPOST('search_' . $colParam['name']),
|
$colParam['filter_value'],
|
||||||
$colParam,
|
$colParam,
|
||||||
'search',
|
'search',
|
||||||
'form-filter'
|
'form-filter'
|
||||||
);
|
);
|
||||||
echo '</td>';
|
echo '</td>';
|
||||||
}
|
}
|
||||||
echo '<td class="actions">'
|
echo '<td class="liste_titre actions">'
|
||||||
. '<form method="get" id="form-filter" action="' . $_SERVER["PHP_SELF"] . '">'
|
. '<form method="get" id="form-filter" action="' . $_SERVER["PHP_SELF"] . '">'
|
||||||
. '<button class="like-link" name="action" value="search">'
|
. '<button class="like-link" name="action" value="filter">'
|
||||||
. '<span class="fa fa-search" > </span>'
|
. '<span class="fa fa-search" > </span>'
|
||||||
. '</button>'
|
. '</button>'
|
||||||
. '<button class="like-link" name="action" value="remove_filters">'
|
. '<button class="like-link" name="action" value="remove_filters">'
|
||||||
@ -193,6 +173,16 @@ function _mainView($db, $mode='view', $targetId=NULL) {
|
|||||||
. '</form>'
|
. '</form>'
|
||||||
. '</td>';
|
. '</td>';
|
||||||
echo '</tr>';
|
echo '</tr>';
|
||||||
|
|
||||||
|
// En-têtes de colonnes
|
||||||
|
echo '<tr class="liste_titre" id="title-row">';
|
||||||
|
foreach ($TVisibleColumn as $colSelect => $colParam) {
|
||||||
|
echo '<th class="liste_titre ' . $colParam['name'] . '">';
|
||||||
|
echo $langs->trans('Multicurrency' . _camel(ucfirst($colParam['name'])));
|
||||||
|
echo '</th>';
|
||||||
|
}
|
||||||
|
echo '<th class="liste_titre actions"></th>';
|
||||||
|
echo '</tr>';
|
||||||
echo '</thead>';
|
echo '</thead>';
|
||||||
|
|
||||||
// formulaire d'ajout ('new')
|
// formulaire d'ajout ('new')
|
||||||
@ -326,9 +316,10 @@ function _getCellDefault($rawValue, $mode='view', $inputName='', $formId=NULL) {
|
|||||||
case 'text':
|
case 'text':
|
||||||
return strip_tags($rawValue);
|
return strip_tags($rawValue);
|
||||||
case 'search':
|
case 'search':
|
||||||
return '<input name="search_' . $inputName . '" value="'
|
return '<input name="search_' . $inputName . '"'
|
||||||
. htmlspecialchars(GETPOST('search_' . $inputName), ENT_QUOTES)
|
. ' value="' . htmlspecialchars(GETPOST('search_' . $inputName), ENT_QUOTES) . '"'
|
||||||
. '" />';
|
. ' form="' . $formId . '"'
|
||||||
|
. ' />';
|
||||||
}
|
}
|
||||||
return $rawValue;
|
return $rawValue;
|
||||||
}
|
}
|
||||||
@ -363,9 +354,20 @@ function _getCellDate($rawValue, $mode='view', $inputName='', $formId=NULL) {
|
|||||||
case 'text':
|
case 'text':
|
||||||
return strip_tags($rawValue);
|
return strip_tags($rawValue);
|
||||||
case 'search':
|
case 'search':
|
||||||
return '<input name="search_' . $inputName . '" value="'
|
$select = _tagWithAttributes('select', array(
|
||||||
. htmlspecialchars(GETPOST('search_' . $inputName), ENT_QUOTES)
|
'form' => $formId,
|
||||||
. '" />';
|
'name' => 'search_' . $inputName
|
||||||
|
));
|
||||||
|
$y = intval(dol_print_date(dol_now(), '%Y'));
|
||||||
|
$emptyOptParams = array('value' => '');
|
||||||
|
if (empty($rawValue)) { $emptyOptParams['selected'] = 'selected'; }
|
||||||
|
$options = array(_tagWithAttributes('option', $emptyOptParams));
|
||||||
|
$options += array_map(function($i) use ($rawValue) {
|
||||||
|
$optParams = array('value' => $i);
|
||||||
|
if ($rawValue == $i) $optParams['selected'] = 'selected';
|
||||||
|
return _tagWithAttributes('option', $optParams) . $i . '</option>';
|
||||||
|
}, range($y-10, $y+1));
|
||||||
|
return $select . join("\n", $options) . '</select>';
|
||||||
}
|
}
|
||||||
return $rawValue;
|
return $rawValue;
|
||||||
}
|
}
|
||||||
@ -398,9 +400,10 @@ function _getCellNumber($rawValue, $mode='view', $inputName='', $formId=NULL) {
|
|||||||
case 'text':
|
case 'text':
|
||||||
return strip_tags($rawValue);
|
return strip_tags($rawValue);
|
||||||
case 'search':
|
case 'search':
|
||||||
return '<input name="search_' . $inputName . '" value="'
|
return '<input name="search_' . $inputName . '"'
|
||||||
. htmlspecialchars(GETPOST('search_' . $inputName), ENT_QUOTES)
|
. ' value="' . htmlspecialchars(GETPOST('search_' . $inputName), ENT_QUOTES) . '"'
|
||||||
. '" />';
|
. ' form="' . $formId . '"'
|
||||||
|
. ' />';
|
||||||
}
|
}
|
||||||
return $rawValue;
|
return $rawValue;
|
||||||
}
|
}
|
||||||
@ -413,6 +416,7 @@ function _getCellNumber($rawValue, $mode='view', $inputName='', $formId=NULL) {
|
|||||||
*/
|
*/
|
||||||
function _getCellCurrencyCode($rawValue, $mode='view', $inputName='', $formId=NULL) {
|
function _getCellCurrencyCode($rawValue, $mode='view', $inputName='', $formId=NULL) {
|
||||||
global $db, $langs;
|
global $db, $langs;
|
||||||
|
if ($formId) $formId = htmlspecialchars($formId, ENT_QUOTES);
|
||||||
$form = new Form($db);
|
$form = new Form($db);
|
||||||
switch ($mode) {
|
switch ($mode) {
|
||||||
case 'view': case 'modify': // 'modify' because the currency code is read-only
|
case 'view': case 'modify': // 'modify' because the currency code is read-only
|
||||||
@ -423,7 +427,7 @@ function _getCellCurrencyCode($rawValue, $mode='view', $inputName='', $formId=NU
|
|||||||
// add form attribute to the output of selectCurrency
|
// add form attribute to the output of selectCurrency
|
||||||
$select = preg_replace(
|
$select = preg_replace(
|
||||||
'/^<select /i',
|
'/^<select /i',
|
||||||
'<select form="' . htmlspecialchars($formId, ENT_QUOTES) . '" ',
|
'<select form="' . $formId . '" ',
|
||||||
$select
|
$select
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -433,46 +437,20 @@ function _getCellCurrencyCode($rawValue, $mode='view', $inputName='', $formId=NU
|
|||||||
case 'text':
|
case 'text':
|
||||||
return strip_tags($rawValue);
|
return strip_tags($rawValue);
|
||||||
case 'search':
|
case 'search':
|
||||||
return '<input name="search_' . $inputName . '" value="'
|
$select = $form->selectMultiCurrency($rawValue, 'search_' . $inputName, 1);
|
||||||
. htmlspecialchars(GETPOST('search_' . $inputName), ENT_QUOTES)
|
if ($formId) {
|
||||||
. '"'
|
// add form attribute to the output of selectCurrency
|
||||||
. ' />';
|
$select = preg_replace(
|
||||||
|
'/^<select /i',
|
||||||
|
'<select form="' . $formId . '" ',
|
||||||
|
$select
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $select;
|
||||||
}
|
}
|
||||||
return $rawValue;
|
return $rawValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
///**
|
|
||||||
// * @param $rawValue
|
|
||||||
// * @param string $mode
|
|
||||||
// * @param string $inputName
|
|
||||||
// * @return string
|
|
||||||
// */
|
|
||||||
//function _getCellEntity($rawValue, $mode='view', $inputName='', $formId=NULL) {
|
|
||||||
// global $db, $langs;
|
|
||||||
// $form = new Form($db);
|
|
||||||
// switch ($mode) {
|
|
||||||
// case 'view': case 'modify': // 'modify' because the entity is read-only
|
|
||||||
// return intval($rawValue);
|
|
||||||
// case 'new':
|
|
||||||
// $mc = new ActionsMulticompany($db);
|
|
||||||
// $select = $mc->select_entities($rawValue, $inputName);
|
|
||||||
// if ($formId) {
|
|
||||||
// // add form attribute to the output of selectCurrency
|
|
||||||
// $select = preg_replace(
|
|
||||||
// '/^<select /i',
|
|
||||||
// '<select form="' . htmlspecialchars($formId, ENT_QUOTES) . '" ',
|
|
||||||
// $select
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
// return $select;
|
|
||||||
// case 'raw':
|
|
||||||
// return $rawValue;
|
|
||||||
// case 'text':
|
|
||||||
// return strip_tags($rawValue);
|
|
||||||
// }
|
|
||||||
// return $rawValue;
|
|
||||||
//}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $colParam
|
* @param array $colParam
|
||||||
* @return string
|
* @return string
|
||||||
@ -558,15 +536,29 @@ function _camel($str) {
|
|||||||
* Default: view all currency rates
|
* Default: view all currency rates
|
||||||
* @param DoliDB $db
|
* @param DoliDB $db
|
||||||
*/
|
*/
|
||||||
function _actionView($db) {
|
function _actionView($db, $TVisibleColumn) {
|
||||||
_mainView($db, 'view', intval(GETPOST('id', 'int')));
|
_mainView($db, $TVisibleColumn, 'view', intval(GETPOST('id', 'int')));
|
||||||
|
}
|
||||||
|
|
||||||
|
function _actionFilter($db, $TVisibleColumn) {
|
||||||
|
_mainView($db, $TVisibleColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _actionRemoveFilters($db, $TVisibleColumn) {
|
||||||
|
foreach ($TVisibleColumn as $colSelect => &$colParam) {
|
||||||
|
if (isset($colParam['filter_value'])) {
|
||||||
|
unset($colParam['filter_value']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($colParam);
|
||||||
|
_mainView($db, $TVisibleColumn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new currency rate
|
* Add a new currency rate
|
||||||
* @param DoliDB $db
|
* @param DoliDB $db
|
||||||
*/
|
*/
|
||||||
function _actionAdd($db) {
|
function _actionAdd($db, $TVisibleColumn) {
|
||||||
global $langs, $conf;
|
global $langs, $conf;
|
||||||
$dateSync = GETPOST('date_sync', 'alpha');
|
$dateSync = GETPOST('date_sync', 'alpha');
|
||||||
$rate = GETPOST('rate', 'int');
|
$rate = GETPOST('rate', 'int');
|
||||||
@ -583,23 +575,23 @@ function _actionAdd($db) {
|
|||||||
if (!$resql) {
|
if (!$resql) {
|
||||||
setEventMessages($langs->trans('TODOSaveFailed'), array(), 'errors');
|
setEventMessages($langs->trans('TODOSaveFailed'), array(), 'errors');
|
||||||
}
|
}
|
||||||
_mainView($db, 'view');
|
_mainView($db, $TVisibleColumn, 'view');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show a currency rate in edit mode
|
* Show a currency rate in edit mode
|
||||||
* @param DoliDB $db
|
* @param DoliDB $db
|
||||||
*/
|
*/
|
||||||
function _actionModify($db) {
|
function _actionModify($db, $TVisibleColumn) {
|
||||||
$id = intval(GETPOST('id', 'int'));
|
$id = intval(GETPOST('id', 'int'));
|
||||||
_mainView($db, 'modify', $id);
|
_mainView($db, $TVisibleColumn, 'modify', $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Saves a currency rate
|
* Saves a currency rate
|
||||||
* @param $db
|
* @param $db
|
||||||
*/
|
*/
|
||||||
function _actionUpdate($db) {
|
function _actionUpdate($db, $TVisibleColumn) {
|
||||||
global $langs;
|
global $langs;
|
||||||
$id = intval(GETPOST('id', 'int'));
|
$id = intval(GETPOST('id', 'int'));
|
||||||
$dateSync = GETPOST('date_sync', 'alpha');
|
$dateSync = GETPOST('date_sync', 'alpha');
|
||||||
@ -624,14 +616,14 @@ function _actionUpdate($db) {
|
|||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans('Saved'), array(), 'mesgs');
|
setEventMessages($langs->trans('Saved'), array(), 'mesgs');
|
||||||
}
|
}
|
||||||
_mainView($db);
|
_mainView($db, $TVisibleColumn);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show a confirm form prior to deleting a currency rate
|
* Show a confirm form prior to deleting a currency rate
|
||||||
* @param DoliDB $db
|
* @param DoliDB $db
|
||||||
*/
|
*/
|
||||||
function _actionDelete($db) {
|
function _actionDelete($db, $TVisibleColumn) {
|
||||||
global $langs;
|
global $langs;
|
||||||
global $delayedhtmlcontent;
|
global $delayedhtmlcontent;
|
||||||
$id = intval(GETPOST('id', 'int'));
|
$id = intval(GETPOST('id', 'int'));
|
||||||
@ -650,14 +642,14 @@ function _actionDelete($db) {
|
|||||||
0,
|
0,
|
||||||
1
|
1
|
||||||
);
|
);
|
||||||
_mainView($db, 'view');
|
_mainView($db, $TVisibleColumn, 'view');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a currency rate
|
* Delete a currency rate
|
||||||
* @param DoliDB $db
|
* @param DoliDB $db
|
||||||
*/
|
*/
|
||||||
function _actionConfirmDelete($db) {
|
function _actionConfirmDelete($db, $TVisibleColumn) {
|
||||||
global $langs;
|
global $langs;
|
||||||
$id = intval(GETPOST('id', 'int'));
|
$id = intval(GETPOST('id', 'int'));
|
||||||
if ($id === 0) {
|
if ($id === 0) {
|
||||||
@ -672,7 +664,7 @@ function _actionConfirmDelete($db) {
|
|||||||
setEventMessages($langs->trans('MulticurrencyRateDeleted'), array(), 'mesgs');
|
setEventMessages($langs->trans('MulticurrencyRateDeleted'), array(), 'mesgs');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_mainView($db, 'view');
|
_mainView($db, $TVisibleColumn, 'view');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -686,3 +678,63 @@ function _setEventMessageOnce($message, $level='errors') {
|
|||||||
setEventMessages($message, array(), $level);
|
setEventMessages($message, array(), $level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Completes the column definition array with values from HTTP query
|
||||||
|
* @param DoliDB $db
|
||||||
|
* @param array $TVisibleColumn
|
||||||
|
*/
|
||||||
|
function _completeColumns($db, &$TVisibleColumn) {
|
||||||
|
foreach ($TVisibleColumn as $colSelect => &$colParam) {
|
||||||
|
$colParam['name'] = _columnAlias($colSelect);
|
||||||
|
if (GETPOSTISSET('search_' . $colParam['name'])) {
|
||||||
|
$searchValue = GETPOST('search_' . $colParam['name']);
|
||||||
|
if (empty($searchValue)) continue;
|
||||||
|
$colParam['filter_value'] = $searchValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unset($colParam);
|
||||||
|
// $confirm = GETPOST('confirm', 'alpha');
|
||||||
|
// $listoffset = GETPOST('listoffset');
|
||||||
|
// $listlimit = GETPOST('listlimit') > 0 ?GETPOST('listlimit') : 1000; // To avoid too long dictionaries
|
||||||
|
// $sortfield = GETPOST("sortfield", 'alpha');
|
||||||
|
// $sortorder = GETPOST("sortorder", 'alpha');
|
||||||
|
// $page = GETPOST("page", 'int');
|
||||||
|
// if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
|
||||||
|
// $offset = $listlimit * $page;
|
||||||
|
// $pageprev = $page - 1;
|
||||||
|
// $pagenext = $page + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param DoliDB $db
|
||||||
|
* @param array $colParam
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function _getSQLFilterNumber($db, $colParam) {
|
||||||
|
$filterVal = $colParam['filter_value'];
|
||||||
|
// apply price2num to every part of the string delimited by '<' or '>'
|
||||||
|
$filterVal = join(
|
||||||
|
'',
|
||||||
|
array_map(
|
||||||
|
'price2num',
|
||||||
|
preg_split(
|
||||||
|
'/([><])/',
|
||||||
|
$filterVal,
|
||||||
|
-1,
|
||||||
|
PREG_SPLIT_DELIM_CAPTURE
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$sqlFilter = natural_search($colParam['name'], $filterVal, 1);
|
||||||
|
return $sqlFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _getSQLFilterDate($db, $colParam) {
|
||||||
|
$year = intval($colParam['filter_value']);
|
||||||
|
$yearPlusOne = ($year+1) . '-01-01 00:00:00';
|
||||||
|
$year .= '-01-01 00:00:00';
|
||||||
|
$sqlFilter = ' AND (rate.date_sync > "' . $year . '"'
|
||||||
|
. ' AND rate.date_sync < "' . ($yearPlusOne) . '")';
|
||||||
|
return $sqlFilter;
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user