Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop
This commit is contained in:
commit
adb4af7099
@ -111,6 +111,10 @@ with
|
|||||||
// DOL CHANGE If we keep this, the image is not visible on pages after the first one.
|
// DOL CHANGE If we keep this, the image is not visible on pages after the first one.
|
||||||
//var_dump($file.' '.(!@TCPDF_STATIC::file_exists($file)));
|
//var_dump($file.' '.(!@TCPDF_STATIC::file_exists($file)));
|
||||||
//return false;
|
//return false;
|
||||||
|
$tfile = str_replace(' ', '%20', $file);
|
||||||
|
if (@TCPDF_STATIC::file_exists($tfile)) {
|
||||||
|
$file = $tfile;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
* Replace in tcpdf.php
|
* Replace in tcpdf.php
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
"npm": ">=5.6.0"
|
"npm": ">=5.6.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"zapier-platform-core": "11.0.1"
|
"zapier-platform-core": "11.3.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"mocha": "^5.2.0",
|
"mocha": "^5.2.0",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2016 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2016 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
@ -26,8 +26,8 @@
|
|||||||
*/
|
*/
|
||||||
require '../../main.inc.php';
|
require '../../main.inc.php';
|
||||||
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||||
@ -49,9 +49,14 @@ $search_desc = GETPOST('search_desc', 'alpha');
|
|||||||
$search_amount = GETPOST('search_amount', 'alpha');
|
$search_amount = GETPOST('search_amount', 'alpha');
|
||||||
$search_account = GETPOST('search_account', 'alpha');
|
$search_account = GETPOST('search_account', 'alpha');
|
||||||
$search_vat = GETPOST('search_vat', 'alpha');
|
$search_vat = GETPOST('search_vat', 'alpha');
|
||||||
$search_day = GETPOST("search_day", "int");
|
$search_date_startday = GETPOST('search_date_startday', 'int');
|
||||||
$search_month = GETPOST("search_month", "int");
|
$search_date_startmonth = GETPOST('search_date_startmonth', 'int');
|
||||||
$search_year = GETPOST("search_year", "int");
|
$search_date_startyear = GETPOST('search_date_startyear', 'int');
|
||||||
|
$search_date_endday = GETPOST('search_date_endday', 'int');
|
||||||
|
$search_date_endmonth = GETPOST('search_date_endmonth', 'int');
|
||||||
|
$search_date_endyear = GETPOST('search_date_endyear', 'int');
|
||||||
|
$search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear); // Use tzserver
|
||||||
|
$search_date_end = dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
|
||||||
|
|
||||||
// Load variable for pagination
|
// Load variable for pagination
|
||||||
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
||||||
@ -61,9 +66,9 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa
|
|||||||
if (empty($page) || $page < 0) {
|
if (empty($page) || $page < 0) {
|
||||||
$page = 0;
|
$page = 0;
|
||||||
}
|
}
|
||||||
|
$offset = $limit * $page;
|
||||||
$pageprev = $page - 1;
|
$pageprev = $page - 1;
|
||||||
$pagenext = $page + 1;
|
$pagenext = $page + 1;
|
||||||
$offset = $limit * $page;
|
|
||||||
if (!$sortfield) {
|
if (!$sortfield) {
|
||||||
$sortfield = "erd.date, erd.rowid";
|
$sortfield = "erd.date, erd.rowid";
|
||||||
}
|
}
|
||||||
@ -101,9 +106,14 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x'
|
|||||||
$search_amount = '';
|
$search_amount = '';
|
||||||
$search_account = '';
|
$search_account = '';
|
||||||
$search_vat = '';
|
$search_vat = '';
|
||||||
$search_day = '';
|
$search_date_startday = '';
|
||||||
$search_month = '';
|
$search_date_startmonth = '';
|
||||||
$search_year = '';
|
$search_date_startyear = '';
|
||||||
|
$search_date_endday = '';
|
||||||
|
$search_date_endmonth = '';
|
||||||
|
$search_date_endyear = '';
|
||||||
|
$search_date_start = '';
|
||||||
|
$search_date_end = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($changeaccount) && count($changeaccount) > 0 && $user->rights->accounting->bind->write) {
|
if (is_array($changeaccount) && count($changeaccount) > 0 && $user->rights->accounting->bind->write) {
|
||||||
@ -204,7 +214,12 @@ if (strlen(trim($search_account))) {
|
|||||||
if (strlen(trim($search_vat))) {
|
if (strlen(trim($search_vat))) {
|
||||||
$sql .= natural_search("erd.tva_tx", price2num($search_vat), 1);
|
$sql .= natural_search("erd.tva_tx", price2num($search_vat), 1);
|
||||||
}
|
}
|
||||||
$sql .= dolSqlDateFilter('erd.date', $search_day, $search_month, $search_year);
|
if ($search_date_start) {
|
||||||
|
$sql .= " AND erd.date >= '".$db->idate($search_date_start)."'";
|
||||||
|
}
|
||||||
|
if ($search_date_end) {
|
||||||
|
$sql .= " AND erd.date <= '".$db->idate($search_date_end)."'";
|
||||||
|
}
|
||||||
$sql .= " AND er.entity IN (".getEntity('expensereport', 0).")"; // We don't share object for accountancy
|
$sql .= " AND er.entity IN (".getEntity('expensereport', 0).")"; // We don't share object for accountancy
|
||||||
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
@ -222,9 +237,8 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
|
|||||||
|
|
||||||
$sql .= $db->plimit($limit + 1, $offset);
|
$sql .= $db->plimit($limit + 1, $offset);
|
||||||
|
|
||||||
dol_syslog('accountancy/expensereport/lines.php::list');
|
dol_syslog("accountancy/expensereport/lines.php", LOG_DEBUG);
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
|
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$num_lines = $db->num_rows($result);
|
$num_lines = $db->num_rows($result);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
@ -254,14 +268,23 @@ if ($result) {
|
|||||||
if ($search_vat) {
|
if ($search_vat) {
|
||||||
$param .= "&search_vat=".urlencode($search_vat);
|
$param .= "&search_vat=".urlencode($search_vat);
|
||||||
}
|
}
|
||||||
if ($search_day) {
|
if ($search_date_startday) {
|
||||||
$param .= '&search_day='.urlencode($search_day);
|
$param .= '&search_date_startday='.urlencode($search_date_startday);
|
||||||
}
|
}
|
||||||
if ($search_month) {
|
if ($search_date_startmonth) {
|
||||||
$param .= '&search_month='.urlencode($search_month);
|
$param .= '&search_date_startmonth='.urlencode($search_date_startmonth);
|
||||||
}
|
}
|
||||||
if ($search_year) {
|
if ($search_date_startyear) {
|
||||||
$param .= '&search_year='.urlencode($search_year);
|
$param .= '&search_date_startyear='.urlencode($search_date_startyear);
|
||||||
|
}
|
||||||
|
if ($search_date_endday) {
|
||||||
|
$param .= '&search_date_endday='.urlencode($search_date_endday);
|
||||||
|
}
|
||||||
|
if ($search_date_endmonth) {
|
||||||
|
$param .= '&search_date_endmonth='.urlencode($search_date_endmonth);
|
||||||
|
}
|
||||||
|
if ($search_date_endyear) {
|
||||||
|
$param .= '&search_date_endyear='.urlencode($search_date_endyear);
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'."\n";
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'."\n";
|
||||||
@ -276,12 +299,11 @@ if ($result) {
|
|||||||
print '<input type="hidden" name="page" value="'.$page.'">';
|
print '<input type="hidden" name="page" value="'.$page.'">';
|
||||||
|
|
||||||
print_barre_liste($langs->trans("ExpenseReportLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit);
|
print_barre_liste($langs->trans("ExpenseReportLinesDone"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num_lines, $nbtotalofrecords, 'title_accountancy', 0, '', '', $limit);
|
||||||
|
|
||||||
print '<span class="opacitymedium">'.$langs->trans("DescVentilDoneExpenseReport").'</span><br>';
|
print '<span class="opacitymedium">'.$langs->trans("DescVentilDoneExpenseReport").'</span><br>';
|
||||||
|
|
||||||
print '<br><div class="inline-block divButAction">'.$langs->trans("ChangeAccount").'<br>';
|
print '<br><div class="inline-block divButAction paddingbottom">'.$langs->trans("ChangeAccount").' ';
|
||||||
print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle');
|
print $formaccounting->select_account($account_parent, 'account_parent', 2, array(), 0, 0, 'maxwidth300 maxwidthonsmartphone valignmiddle');
|
||||||
print '<input type="submit" class="button valignmiddle" value="'.$langs->trans("ChangeBinding").'" /></div>';
|
print '<input type="submit" class="button small valignmiddle" value="'.$langs->trans("ChangeBinding").'"/></div>';
|
||||||
|
|
||||||
$moreforfilter = '';
|
$moreforfilter = '';
|
||||||
|
|
||||||
@ -296,11 +318,12 @@ if ($result) {
|
|||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
}
|
}
|
||||||
print '<td class="liste_titre center">';
|
print '<td class="liste_titre center">';
|
||||||
if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) {
|
print '<div class="nowrap">';
|
||||||
print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_day" value="'.$search_day.'">';
|
print $form->selectDate($search_date_start ? $search_date_start : -1, 'search_date_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
|
||||||
}
|
print '</div>';
|
||||||
print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month" value="'.$search_month.'">';
|
print '<div class="nowrap">';
|
||||||
$formother->select_year($search_year, 'search_year', 1, 20, 5);
|
print $form->selectDate($search_date_end ? $search_date_end : -1, 'search_date_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
|
||||||
|
print '</div>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
|
||||||
@ -394,12 +417,11 @@ if ($result) {
|
|||||||
print '<td class="center">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>';
|
print '<td class="center">'.vatrate($objp->tva_tx.($objp->vat_src_code ? ' ('.$objp->vat_src_code.')' : '')).'</td>';
|
||||||
|
|
||||||
// Accounting account affected
|
// Accounting account affected
|
||||||
print '<td>';
|
print '<td class="center">';
|
||||||
print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1);
|
print $accountingaccountstatic->getNomUrl(0, 1, 1, '', 1);
|
||||||
print ' <a class="editfielda reposition marginleftonly marginrightonly" href="./card.php?id='.$objp->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($param ? '?'.$param : '')).'">';
|
print ' <a class="editfielda reposition marginleftonly marginrightonly" href="./card.php?id='.$objp->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"].($param ? '?'.$param : '')).'">';
|
||||||
print img_edit();
|
print img_edit();
|
||||||
print '</a></td>';
|
print '</a></td>';
|
||||||
|
|
||||||
print '<td class="center"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="'.$objp->rowid.'"/></td>';
|
print '<td class="center"><input type="checkbox" class="checkforaction" name="changeaccount[]" value="'.$objp->rowid.'"/></td>';
|
||||||
|
|
||||||
print "</tr>";
|
print "</tr>";
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
/* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
|
||||||
* Copyright (C) 2013-2017 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
* Copyright (C) 2013-2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
|
||||||
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
* Copyright (C) 2014-2015 Ari Elbaz (elarifr) <github@accedinfo.com>
|
||||||
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
* Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro>
|
||||||
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>s
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>s
|
||||||
@ -30,9 +30,9 @@ require '../../main.inc.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
|
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
||||||
|
|
||||||
// Load translation files required by the page
|
// Load translation files required by the page
|
||||||
@ -59,9 +59,14 @@ $search_desc = GETPOST('search_desc', 'alpha');
|
|||||||
$search_amount = GETPOST('search_amount', 'alpha');
|
$search_amount = GETPOST('search_amount', 'alpha');
|
||||||
$search_account = GETPOST('search_account', 'alpha');
|
$search_account = GETPOST('search_account', 'alpha');
|
||||||
$search_vat = GETPOST('search_vat', 'alpha');
|
$search_vat = GETPOST('search_vat', 'alpha');
|
||||||
$search_day = GETPOST("search_day", "int");
|
$search_date_startday = GETPOST('search_date_startday', 'int');
|
||||||
$search_month = GETPOST("search_month", "int");
|
$search_date_startmonth = GETPOST('search_date_startmonth', 'int');
|
||||||
$search_year = GETPOST("search_year", "int");
|
$search_date_startyear = GETPOST('search_date_startyear', 'int');
|
||||||
|
$search_date_endday = GETPOST('search_date_endday', 'int');
|
||||||
|
$search_date_endmonth = GETPOST('search_date_endmonth', 'int');
|
||||||
|
$search_date_endyear = GETPOST('search_date_endyear', 'int');
|
||||||
|
$search_date_start = dol_mktime(0, 0, 0, $search_date_startmonth, $search_date_startday, $search_date_startyear); // Use tzserver
|
||||||
|
$search_date_end = dol_mktime(23, 59, 59, $search_date_endmonth, $search_date_endday, $search_date_endyear);
|
||||||
|
|
||||||
// Load variable for pagination
|
// Load variable for pagination
|
||||||
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : (empty($conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION) ? $conf->liste_limit : $conf->global->ACCOUNTING_LIMIT_LIST_VENTILATION);
|
||||||
@ -83,6 +88,9 @@ if (!$sortorder) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||||
|
$hookmanager->initHooks(array('accountancyexpensereportlist'));
|
||||||
|
|
||||||
$formaccounting = new FormAccounting($db);
|
$formaccounting = new FormAccounting($db);
|
||||||
$accounting = new AccountingAccount($db);
|
$accounting = new AccountingAccount($db);
|
||||||
|
|
||||||
@ -101,7 +109,7 @@ if (empty($user->rights->accounting->mouvements->lire)) {
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Action
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (GETPOST('cancel', 'alpha')) {
|
if (GETPOST('cancel', 'alpha')) {
|
||||||
@ -111,30 +119,47 @@ if (!GETPOST('confirmmassaction', 'alpha') && $massaction != 'presend' && $massa
|
|||||||
$massaction = '';
|
$massaction = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Purge search criteria
|
$parameters = array();
|
||||||
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All test are required to be compatible with all browsers
|
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
|
||||||
$search_login = '';
|
if ($reshook < 0) {
|
||||||
$search_expensereport = '';
|
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
$search_label = '';
|
}
|
||||||
$search_desc = '';
|
|
||||||
$search_amount = '';
|
if (empty($reshook)) {
|
||||||
$search_account = '';
|
// Purge search criteria
|
||||||
$search_vat = '';
|
if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha')) { // All test are required to be compatible with all browsers
|
||||||
$search_day = '';
|
$search_login = '';
|
||||||
$search_month = '';
|
$search_expensereport = '';
|
||||||
$search_year = '';
|
$search_label = '';
|
||||||
|
$search_desc = '';
|
||||||
|
$search_amount = '';
|
||||||
|
$search_account = '';
|
||||||
|
$search_vat = '';
|
||||||
|
$search_date_startday = '';
|
||||||
|
$search_date_startmonth = '';
|
||||||
|
$search_date_startyear = '';
|
||||||
|
$search_date_endday = '';
|
||||||
|
$search_date_endmonth = '';
|
||||||
|
$search_date_endyear = '';
|
||||||
|
$search_date_start = '';
|
||||||
|
$search_date_end = '';
|
||||||
|
$search_country = '';
|
||||||
|
$search_tvaintra = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mass actions
|
||||||
|
$objectclass = 'ExpenseReport';
|
||||||
|
$objectlabel = 'ExpenseReport';
|
||||||
|
$permissiontoread = $user->rights->expensereport->read;
|
||||||
|
$permissiontodelete = $user->rights->expensereport->delete;
|
||||||
|
$uploaddir = $conf->expensereport->dir_output;
|
||||||
|
include DOL_DOCUMENT_ROOT . '/core/actions_massactions.inc.php';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mass actions
|
|
||||||
$objectclass = 'ExpenseReport';
|
|
||||||
$objectlabel = 'ExpenseReport';
|
|
||||||
$permissiontoread = $user->rights->expensereport->read;
|
|
||||||
$permissiontodelete = $user->rights->expensereport->delete;
|
|
||||||
$uploaddir = $conf->expensereport->dir_output;
|
|
||||||
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
|
|
||||||
|
|
||||||
if ($massaction == 'ventil' && $user->rights->accounting->bind->write) {
|
if ($massaction == 'ventil' && $user->rights->accounting->bind->write) {
|
||||||
$msg = '';
|
$msg = '';
|
||||||
|
|
||||||
//print '<div><span style="color:red">' . $langs->trans("Processing") . '...</span></div>';
|
//print '<div><span style="color:red">' . $langs->trans("Processing") . '...</span></div>';
|
||||||
if (!empty($mesCasesCochees)) {
|
if (!empty($mesCasesCochees)) {
|
||||||
$msg = '<div>'.$langs->trans("SelectedLines").': '.count($mesCasesCochees).'</div>';
|
$msg = '<div>'.$langs->trans("SelectedLines").': '.count($mesCasesCochees).'</div>';
|
||||||
@ -159,7 +184,7 @@ if ($massaction == 'ventil' && $user->rights->accounting->bind->write) {
|
|||||||
$accountventilated = new AccountingAccount($db);
|
$accountventilated = new AccountingAccount($db);
|
||||||
$accountventilated->fetch($monCompte, '', 1);
|
$accountventilated->fetch($monCompte, '', 1);
|
||||||
|
|
||||||
dol_syslog('accountancy/expensereport/list.php', LOG_DEBUG);
|
dol_syslog('accountancy/expensereport/list.php:: sql='.$sql, LOG_DEBUG);
|
||||||
if ($db->query($sql)) {
|
if ($db->query($sql)) {
|
||||||
$msg .= '<div><span style="color:green">'.$langs->trans("LineOfExpenseReport").' '.$monId.' - '.$langs->trans("VentilatedinAccount").' : '.length_accountg($accountventilated->account_number).'</span></div>';
|
$msg .= '<div><span style="color:green">'.$langs->trans("LineOfExpenseReport").' '.$monId.' - '.$langs->trans("VentilatedinAccount").' : '.length_accountg($accountventilated->account_number).'</span></div>';
|
||||||
$ok++;
|
$ok++;
|
||||||
@ -201,6 +226,9 @@ $sql .= " erd.rowid, erd.fk_c_type_fees, erd.comments, erd.total_ht as price, er
|
|||||||
$sql .= " f.id as type_fees_id, f.code as type_fees_code, f.label as type_fees_label, f.accountancy_code as code_buy,";
|
$sql .= " f.id as type_fees_id, f.code as type_fees_code, f.label as type_fees_label, f.accountancy_code as code_buy,";
|
||||||
$sql .= " u.rowid as userid, u.login, u.lastname, u.firstname, u.email, u.gender, u.employee, u.photo, u.statut,";
|
$sql .= " u.rowid as userid, u.login, u.lastname, u.firstname, u.email, u.gender, u.employee, u.photo, u.statut,";
|
||||||
$sql .= " aa.rowid as aarowid";
|
$sql .= " aa.rowid as aarowid";
|
||||||
|
$parameters = array();
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
$sql .= $hookmanager->resPrint;
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."expensereport as er";
|
$sql .= " FROM ".MAIN_DB_PREFIX."expensereport as er";
|
||||||
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."expensereport_det as erd ON er.rowid = erd.fk_expensereport";
|
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."expensereport_det as erd ON er.rowid = erd.fk_expensereport";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_type_fees as f ON f.id = erd.fk_c_type_fees";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_type_fees as f ON f.id = erd.fk_c_type_fees";
|
||||||
@ -233,9 +261,19 @@ if (strlen(trim($search_account))) {
|
|||||||
if (strlen(trim($search_vat))) {
|
if (strlen(trim($search_vat))) {
|
||||||
$sql .= natural_search("erd.tva_tx", $search_vat, 1);
|
$sql .= natural_search("erd.tva_tx", $search_vat, 1);
|
||||||
}
|
}
|
||||||
$sql .= dolSqlDateFilter('erd.date', $search_day, $search_month, $search_year);
|
if ($search_date_start) {
|
||||||
|
$sql .= " AND erd.date >= '".$db->idate($search_date_start)."'";
|
||||||
|
}
|
||||||
|
if ($search_date_end) {
|
||||||
|
$sql .= " AND erd.date <= '".$db->idate($search_date_end)."'";
|
||||||
|
}
|
||||||
$sql .= " AND er.entity IN (".getEntity('expensereport', 0).")"; // We don't share object for accountancy
|
$sql .= " AND er.entity IN (".getEntity('expensereport', 0).")"; // We don't share object for accountancy
|
||||||
|
|
||||||
|
// Add where from hooks
|
||||||
|
$parameters = array();
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters); // Note that $action and $object may have been modified by hook
|
||||||
|
$sql .= $hookmanager->resPrint;
|
||||||
|
|
||||||
$sql .= $db->order($sortfield, $sortorder);
|
$sql .= $db->order($sortfield, $sortorder);
|
||||||
|
|
||||||
// Count total nb of records
|
// Count total nb of records
|
||||||
@ -251,7 +289,13 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) {
|
|||||||
|
|
||||||
$sql .= $db->plimit($limit + 1, $offset);
|
$sql .= $db->plimit($limit + 1, $offset);
|
||||||
|
|
||||||
dol_syslog('accountancy/expensereport/list.php');
|
dol_syslog("accountancy/expensereport/list.php", LOG_DEBUG);
|
||||||
|
// MAX_JOIN_SIZE can be very low (ex: 300000) on some limited configurations (ex: https://www.online.net/fr/hosting/online-perso)
|
||||||
|
// This big SELECT command may exceed the MAX_JOIN_SIZE limit => Therefore we use SQL_BIG_SELECTS=1 to disable the MAX_JOIN_SIZE security
|
||||||
|
if ($db->type == 'mysqli') {
|
||||||
|
$db->query("SET SQL_BIG_SELECTS=1");
|
||||||
|
}
|
||||||
|
|
||||||
$result = $db->query($sql);
|
$result = $db->query($sql);
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$num_lines = $db->num_rows($result);
|
$num_lines = $db->num_rows($result);
|
||||||
@ -272,14 +316,23 @@ if ($result) {
|
|||||||
if ($search_lineid) {
|
if ($search_lineid) {
|
||||||
$param .= '&search_lineid='.urlencode($search_lineid);
|
$param .= '&search_lineid='.urlencode($search_lineid);
|
||||||
}
|
}
|
||||||
if ($search_day) {
|
if ($search_date_startday) {
|
||||||
$param .= '&search_day='.urlencode($search_day);
|
$param .= '&search_date_startday='.urlencode($search_date_startday);
|
||||||
}
|
}
|
||||||
if ($search_month) {
|
if ($search_date_startmonth) {
|
||||||
$param .= '&search_month='.urlencode($search_month);
|
$param .= '&search_date_startmonth='.urlencode($search_date_startmonth);
|
||||||
}
|
}
|
||||||
if ($search_year) {
|
if ($search_date_startyear) {
|
||||||
$param .= '&search_year='.urlencode($search_year);
|
$param .= '&search_date_startyear='.urlencode($search_date_startyear);
|
||||||
|
}
|
||||||
|
if ($search_date_endday) {
|
||||||
|
$param .= '&search_date_endday='.urlencode($search_date_endday);
|
||||||
|
}
|
||||||
|
if ($search_date_endmonth) {
|
||||||
|
$param .= '&search_date_endmonth='.urlencode($search_date_endmonth);
|
||||||
|
}
|
||||||
|
if ($search_date_endyear) {
|
||||||
|
$param .= '&search_date_endyear='.urlencode($search_date_endyear);
|
||||||
}
|
}
|
||||||
if ($search_expensereport) {
|
if ($search_expensereport) {
|
||||||
$param .= '&search_expensereport='.urlencode($search_expensereport);
|
$param .= '&search_expensereport='.urlencode($search_expensereport);
|
||||||
@ -302,7 +355,6 @@ if ($result) {
|
|||||||
);
|
);
|
||||||
$massactionbutton = $form->selectMassAction('ventil', $arrayofmassactions, 1);
|
$massactionbutton = $form->selectMassAction('ventil', $arrayofmassactions, 1);
|
||||||
|
|
||||||
|
|
||||||
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'."\n";
|
print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'."\n";
|
||||||
print '<input type="hidden" name="action" value="ventil">';
|
print '<input type="hidden" name="action" value="ventil">';
|
||||||
if ($optioncss != '') {
|
if ($optioncss != '') {
|
||||||
@ -335,20 +387,21 @@ if ($result) {
|
|||||||
if (!empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) {
|
if (!empty($conf->global->ACCOUNTANCY_USE_EXPENSE_REPORT_VALIDATION_DATE)) {
|
||||||
print '<td class="liste_titre"></td>';
|
print '<td class="liste_titre"></td>';
|
||||||
}
|
}
|
||||||
print '<td class="liste_titre center nowraponall minwidth100imp">';
|
print '<td class="liste_titre center">';
|
||||||
if (!empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) {
|
print '<div class="nowrap">';
|
||||||
print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_day" value="'.$search_day.'">';
|
print $form->selectDate($search_date_start ? $search_date_start : -1, 'search_date_start', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From'));
|
||||||
}
|
print '</div>';
|
||||||
print '<input class="flat valignmiddle maxwidth25" type="text" maxlength="2" name="search_month" value="'.$search_month.'">';
|
print '<div class="nowrap">';
|
||||||
$formother->select_year($search_year, 'search_year', 1, 20, 5);
|
print $form->selectDate($search_date_end ? $search_date_end : -1, 'search_date_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to'));
|
||||||
|
print '</div>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth50" name="search_label" value="'.dol_escape_htmltag($search_label).'"></td>';
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidthonsmartphone" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidthonsmartphone" name="search_desc" value="'.dol_escape_htmltag($search_desc).'"></td>';
|
||||||
print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>';
|
print '<td class="liste_titre right"><input type="text" class="flat maxwidth50 right" name="search_amount" value="'.dol_escape_htmltag($search_amount).'"></td>';
|
||||||
print '<td class="liste_titre right"><input type="text" class="right flat maxwidth50" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></td>';
|
print '<td class="liste_titre right"><input type="text" class="flat maxwidth50 right" name="search_vat" placeholder="%" size="1" value="'.dol_escape_htmltag($search_vat).'"></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="center" class="liste_titre">';
|
print '<td class="center liste_titre">';
|
||||||
$searchpicto = $form->showFilterButtons();
|
$searchpicto = $form->showFilterButtons();
|
||||||
print $searchpicto;
|
print $searchpicto;
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -468,6 +521,9 @@ if ($result) {
|
|||||||
} else {
|
} else {
|
||||||
print $db->error();
|
print $db->error();
|
||||||
}
|
}
|
||||||
|
if ($db->type == 'mysqli') {
|
||||||
|
$db->query("SET SQL_BIG_SELECTS=0"); // Enable MAX_JOIN_SIZE limitation
|
||||||
|
}
|
||||||
|
|
||||||
// Add code to auto check the box when we select an account
|
// Add code to auto check the box when we select an account
|
||||||
print '<script type="text/javascript">
|
print '<script type="text/javascript">
|
||||||
|
|||||||
@ -124,6 +124,7 @@ if (empty($reshook)) {
|
|||||||
$object->bic = trim(GETPOST("bic"));
|
$object->bic = trim(GETPOST("bic"));
|
||||||
$object->iban = trim(GETPOST("iban"));
|
$object->iban = trim(GETPOST("iban"));
|
||||||
$object->domiciliation = trim(GETPOST("domiciliation", "nohtml"));
|
$object->domiciliation = trim(GETPOST("domiciliation", "nohtml"));
|
||||||
|
$object->pti_in_ctti = empty(GETPOST("pti_in_ctti")) ? 0 : 1;
|
||||||
|
|
||||||
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
||||||
$object->owner_address = trim(GETPOST("owner_address", 'nohtml'));
|
$object->owner_address = trim(GETPOST("owner_address", 'nohtml'));
|
||||||
@ -224,6 +225,7 @@ if (empty($reshook)) {
|
|||||||
$object->bic = trim(GETPOST("bic"));
|
$object->bic = trim(GETPOST("bic"));
|
||||||
$object->iban = trim(GETPOST("iban"));
|
$object->iban = trim(GETPOST("iban"));
|
||||||
$object->domiciliation = trim(GETPOST("domiciliation", "nohtml"));
|
$object->domiciliation = trim(GETPOST("domiciliation", "nohtml"));
|
||||||
|
$object->pti_in_ctti = empty(GETPOST("pti_in_ctti")) ? 0 : 1;
|
||||||
|
|
||||||
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
$object->proprio = trim(GETPOST("proprio", 'alphanohtml'));
|
||||||
$object->owner_address = trim(GETPOST("owner_address", 'nohtml'));
|
$object->owner_address = trim(GETPOST("owner_address", 'nohtml'));
|
||||||
@ -537,6 +539,13 @@ if ($action == 'create') {
|
|||||||
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
print '<tr><td>'.$langs->trans($bickey).'</td>';
|
||||||
print '<td><input maxlength="11" type="text" class="flat minwidth150" name="bic" value="'.(GETPOST('bic') ?GETPOST('bic', 'alpha') : $object->bic).'"></td></tr>';
|
print '<td><input maxlength="11" type="text" class="flat minwidth150" name="bic" value="'.(GETPOST('bic') ?GETPOST('bic', 'alpha') : $object->bic).'"></td></tr>';
|
||||||
|
|
||||||
|
if ($conf->paymentbybanktransfer->enabled) {
|
||||||
|
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td>';
|
||||||
|
print '<td><input type="checkbox" class="flat minwidth150" name="pti_in_ctti"'. (empty(GETPOST('pti_in_ctti')) ? '' : ' checked ') . '> ';
|
||||||
|
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
|
||||||
|
print '</td></tr>';
|
||||||
|
}
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
||||||
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
|
print '<textarea class="flat quatrevingtpercent" name="domiciliation" rows="'.ROWS_2.'">';
|
||||||
print (GETPOST('domiciliation') ?GETPOST('domiciliation') : $object->domiciliation);
|
print (GETPOST('domiciliation') ?GETPOST('domiciliation') : $object->domiciliation);
|
||||||
@ -777,6 +786,11 @@ if ($action == 'create') {
|
|||||||
print '<tr><td>'.$langs->trans("ICS").' ('.$langs->trans("BankTransfer").')</td>';
|
print '<tr><td>'.$langs->trans("ICS").' ('.$langs->trans("BankTransfer").')</td>';
|
||||||
print '<td>'.$object->ics_transfer.'</td>';
|
print '<td>'.$object->ics_transfer.'</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td><td>';
|
||||||
|
print (empty($object->pti_in_ctti) ? $langs->trans("No") : $langs->trans("Yes")) . ' ';
|
||||||
|
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
|
||||||
|
print "</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
||||||
@ -1074,6 +1088,11 @@ if ($action == 'create') {
|
|||||||
if ($conf->paymentbybanktransfer->enabled) {
|
if ($conf->paymentbybanktransfer->enabled) {
|
||||||
print '<tr><td>'.$langs->trans("ICS").' ('.$langs->trans("BankTransfer").')</td>';
|
print '<tr><td>'.$langs->trans("ICS").' ('.$langs->trans("BankTransfer").')</td>';
|
||||||
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="32" type="text" class="flat" name="ics_transfer" value="'.(GETPOSTISSET('ics_transfer') ? GETPOST('ics_transfer', 'alphanohtml') : $object->ics_transfer).'"></td></tr>';
|
print '<td><input class="minwidth150 maxwidth200onsmartphone" maxlength="32" type="text" class="flat" name="ics_transfer" value="'.(GETPOSTISSET('ics_transfer') ? GETPOST('ics_transfer', 'alphanohtml') : $object->ics_transfer).'"></td></tr>';
|
||||||
|
|
||||||
|
print '<tr><td>'.$langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation").'</td>';
|
||||||
|
print '<td><input type="checkbox" class="flat minwidth150" name="pti_in_ctti"'. ($object->pti_in_ctti ? ' checked ' : '') . '> ';
|
||||||
|
print img_picto($langs->trans("SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp"), 'info');
|
||||||
|
print '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
print '<tr><td>'.$langs->trans("BankAccountDomiciliation").'</td><td>';
|
||||||
|
|||||||
@ -145,6 +145,12 @@ class Account extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public $iban_prefix;
|
public $iban_prefix;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* XML SEPA format: place Payment Type Information (PmtTpInf) in Credit Transfer Transaction Information (CdtTrfTxInf)
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
public $pti_in_ctti = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Name of account holder
|
* Name of account holder
|
||||||
* @var string
|
* @var string
|
||||||
@ -680,6 +686,7 @@ class Account extends CommonObject
|
|||||||
$sql .= ", bic";
|
$sql .= ", bic";
|
||||||
$sql .= ", iban_prefix";
|
$sql .= ", iban_prefix";
|
||||||
$sql .= ", domiciliation";
|
$sql .= ", domiciliation";
|
||||||
|
$sql .= ", pti_in_ctti";
|
||||||
$sql .= ", proprio";
|
$sql .= ", proprio";
|
||||||
$sql .= ", owner_address";
|
$sql .= ", owner_address";
|
||||||
$sql .= ", currency_code";
|
$sql .= ", currency_code";
|
||||||
@ -706,6 +713,7 @@ class Account extends CommonObject
|
|||||||
$sql .= ", '".$this->db->escape($this->bic)."'";
|
$sql .= ", '".$this->db->escape($this->bic)."'";
|
||||||
$sql .= ", '".$this->db->escape($this->iban)."'";
|
$sql .= ", '".$this->db->escape($this->iban)."'";
|
||||||
$sql .= ", '".$this->db->escape($this->domiciliation)."'";
|
$sql .= ", '".$this->db->escape($this->domiciliation)."'";
|
||||||
|
$sql .= ", ".((int) $this->pti_in_ctti);
|
||||||
$sql .= ", '".$this->db->escape($this->proprio)."'";
|
$sql .= ", '".$this->db->escape($this->proprio)."'";
|
||||||
$sql .= ", '".$this->db->escape($this->owner_address)."'";
|
$sql .= ", '".$this->db->escape($this->owner_address)."'";
|
||||||
$sql .= ", '".$this->db->escape($this->currency_code)."'";
|
$sql .= ", '".$this->db->escape($this->currency_code)."'";
|
||||||
@ -828,6 +836,7 @@ class Account extends CommonObject
|
|||||||
$sql .= ",bic='".$this->db->escape($this->bic)."'";
|
$sql .= ",bic='".$this->db->escape($this->bic)."'";
|
||||||
$sql .= ",iban_prefix = '".$this->db->escape($this->iban)."'";
|
$sql .= ",iban_prefix = '".$this->db->escape($this->iban)."'";
|
||||||
$sql .= ",domiciliation='".$this->db->escape($this->domiciliation)."'";
|
$sql .= ",domiciliation='".$this->db->escape($this->domiciliation)."'";
|
||||||
|
$sql .= ",pti_in_ctti=".((int) $this->pti_in_ctti);
|
||||||
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
|
$sql .= ",proprio = '".$this->db->escape($this->proprio)."'";
|
||||||
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
|
$sql .= ",owner_address = '".$this->db->escape($this->owner_address)."'";
|
||||||
|
|
||||||
@ -949,7 +958,7 @@ class Account extends CommonObject
|
|||||||
|
|
||||||
$sql = "SELECT ba.rowid, ba.ref, ba.label, ba.bank, ba.number, ba.courant, ba.clos, ba.rappro, ba.url,";
|
$sql = "SELECT ba.rowid, ba.ref, ba.label, ba.bank, ba.number, ba.courant, ba.clos, ba.rappro, ba.url,";
|
||||||
$sql .= " ba.code_banque, ba.code_guichet, ba.cle_rib, ba.bic, ba.iban_prefix as iban,";
|
$sql .= " ba.code_banque, ba.code_guichet, ba.cle_rib, ba.bic, ba.iban_prefix as iban,";
|
||||||
$sql .= " ba.domiciliation, ba.proprio, ba.owner_address, ba.state_id, ba.fk_pays as country_id,";
|
$sql .= " ba.domiciliation, ba.pti_in_ctti, ba.proprio, ba.owner_address, ba.state_id, ba.fk_pays as country_id,";
|
||||||
$sql .= " ba.account_number, ba.fk_accountancy_journal, ba.currency_code,";
|
$sql .= " ba.account_number, ba.fk_accountancy_journal, ba.currency_code,";
|
||||||
$sql .= " ba.min_allowed, ba.min_desired, ba.comment,";
|
$sql .= " ba.min_allowed, ba.min_desired, ba.comment,";
|
||||||
$sql .= " ba.datec as date_creation, ba.tms as date_update, ba.ics, ba.ics_transfer,";
|
$sql .= " ba.datec as date_creation, ba.tms as date_update, ba.ics, ba.ics_transfer,";
|
||||||
@ -992,6 +1001,7 @@ class Account extends CommonObject
|
|||||||
$this->bic = $obj->bic;
|
$this->bic = $obj->bic;
|
||||||
$this->iban = $obj->iban;
|
$this->iban = $obj->iban;
|
||||||
$this->domiciliation = $obj->domiciliation;
|
$this->domiciliation = $obj->domiciliation;
|
||||||
|
$this->pti_in_ctti = $obj->pti_in_ctti;
|
||||||
$this->proprio = $obj->proprio;
|
$this->proprio = $obj->proprio;
|
||||||
$this->owner_address = $obj->owner_address;
|
$this->owner_address = $obj->owner_address;
|
||||||
|
|
||||||
@ -1188,9 +1198,11 @@ class Account extends CommonObject
|
|||||||
* Return current sold
|
* Return current sold
|
||||||
*
|
*
|
||||||
* @param int $option 1=Exclude future operation date (this is to exclude input made in advance and have real account sold)
|
* @param int $option 1=Exclude future operation date (this is to exclude input made in advance and have real account sold)
|
||||||
* @return int Current sold (value date <= today)
|
* @param tms $date_end Date until we want to get bank account sold
|
||||||
|
* @param string $field dateo or datev
|
||||||
|
* @return int current sold (value date <= today)
|
||||||
*/
|
*/
|
||||||
public function solde($option = 0)
|
public function solde($option = 0, $date_end = '', $field = 'dateo')
|
||||||
{
|
{
|
||||||
$solde = 0;
|
$solde = 0;
|
||||||
|
|
||||||
@ -1198,7 +1210,7 @@ class Account extends CommonObject
|
|||||||
$sql .= " FROM ".MAIN_DB_PREFIX."bank";
|
$sql .= " FROM ".MAIN_DB_PREFIX."bank";
|
||||||
$sql .= " WHERE fk_account = ".((int) $this->id);
|
$sql .= " WHERE fk_account = ".((int) $this->id);
|
||||||
if ($option == 1) {
|
if ($option == 1) {
|
||||||
$sql .= " AND dateo <= '".$this->db->idate(dol_now())."'";
|
$sql .= " AND ".$this->db->escape($field)." <= '".(!empty($date_end) ? $this->db->idate($date_end) : $this->db->idate(dol_now()))."'";
|
||||||
}
|
}
|
||||||
|
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
|
|||||||
@ -64,6 +64,7 @@ class BonPrelevement extends CommonObject
|
|||||||
public $emetteur_numero_compte;
|
public $emetteur_numero_compte;
|
||||||
public $emetteur_code_banque;
|
public $emetteur_code_banque;
|
||||||
public $emetteur_number_key;
|
public $emetteur_number_key;
|
||||||
|
public $sepa_xml_pti_in_ctti;
|
||||||
|
|
||||||
public $emetteur_iban;
|
public $emetteur_iban;
|
||||||
public $emetteur_bic;
|
public $emetteur_bic;
|
||||||
@ -107,6 +108,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$this->emetteur_numero_compte = "";
|
$this->emetteur_numero_compte = "";
|
||||||
$this->emetteur_code_banque = "";
|
$this->emetteur_code_banque = "";
|
||||||
$this->emetteur_number_key = "";
|
$this->emetteur_number_key = "";
|
||||||
|
$this->sepa_xml_pti_in_ctti = false;
|
||||||
|
|
||||||
$this->emetteur_iban = "";
|
$this->emetteur_iban = "";
|
||||||
$this->emetteur_bic = "";
|
$this->emetteur_bic = "";
|
||||||
@ -1038,10 +1040,11 @@ class BonPrelevement extends CommonObject
|
|||||||
}
|
}
|
||||||
$account = new Account($this->db);
|
$account = new Account($this->db);
|
||||||
if ($account->fetch($id) > 0) {
|
if ($account->fetch($id) > 0) {
|
||||||
$this->emetteur_code_banque = $account->code_banque;
|
$this->emetteur_code_banque = $account->code_banque;
|
||||||
$this->emetteur_code_guichet = $account->code_guichet;
|
$this->emetteur_code_guichet = $account->code_guichet;
|
||||||
$this->emetteur_numero_compte = $account->number;
|
$this->emetteur_numero_compte = $account->number;
|
||||||
$this->emetteur_number_key = $account->cle_rib;
|
$this->emetteur_number_key = $account->cle_rib;
|
||||||
|
$this->sepa_xml_pti_in_ctti = (bool) $account->pti_in_ctti;
|
||||||
$this->emetteur_iban = $account->iban;
|
$this->emetteur_iban = $account->iban;
|
||||||
$this->emetteur_bic = $account->bic;
|
$this->emetteur_bic = $account->bic;
|
||||||
|
|
||||||
@ -1881,6 +1884,24 @@ class BonPrelevement extends CommonObject
|
|||||||
// Add EndToEndId. Must be a unique ID for each payment (for example by including bank, buyer or seller, date, checksum)
|
// Add EndToEndId. Must be a unique ID for each payment (for example by including bank, buyer or seller, date, checksum)
|
||||||
$XML_CREDITOR .= ' <EndToEndId>'.(($conf->global->PRELEVEMENT_END_TO_END != "") ? $conf->global->PRELEVEMENT_END_TO_END : ('CT-'.dol_trunc($row_idfac.'-'.$row_ref, 20, 'right', 'UTF-8', 1)).'-'.$Rowing).'</EndToEndId>'.$CrLf; // ISO20022 states that EndToEndId has a MaxLength of 35 characters
|
$XML_CREDITOR .= ' <EndToEndId>'.(($conf->global->PRELEVEMENT_END_TO_END != "") ? $conf->global->PRELEVEMENT_END_TO_END : ('CT-'.dol_trunc($row_idfac.'-'.$row_ref, 20, 'right', 'UTF-8', 1)).'-'.$Rowing).'</EndToEndId>'.$CrLf; // ISO20022 states that EndToEndId has a MaxLength of 35 characters
|
||||||
$XML_CREDITOR .= ' </PmtId>'.$CrLf;
|
$XML_CREDITOR .= ' </PmtId>'.$CrLf;
|
||||||
|
if ($this->sepa_xml_pti_in_ctti) {
|
||||||
|
$XML_CREDITOR .= ' <PmtTpInf>' . $CrLf;
|
||||||
|
|
||||||
|
// Can be 'NORM' for normal or 'HIGH' for high priority level
|
||||||
|
if (!empty($conf->global->PAYMENTBYBANKTRANSFER_FORCE_HIGH_PRIORITY)) {
|
||||||
|
$instrprty = 'HIGH';
|
||||||
|
} else {
|
||||||
|
$instrprty = 'NORM';
|
||||||
|
}
|
||||||
|
$XML_CREDITOR .= ' <InstrPrty>'.$instrprty.'</InstrPrty>' . $CrLf;
|
||||||
|
$XML_CREDITOR .= ' <SvcLvl>' . $CrLf;
|
||||||
|
$XML_CREDITOR .= ' <Cd>SEPA</Cd>' . $CrLf;
|
||||||
|
$XML_CREDITOR .= ' </SvcLvl>' . $CrLf;
|
||||||
|
$XML_CREDITOR .= ' <CtgyPurp>' . $CrLf;
|
||||||
|
$XML_CREDITOR .= ' <Cd>CORE</Cd>' . $CrLf;
|
||||||
|
$XML_CREDITOR .= ' </CtgyPurp>' . $CrLf;
|
||||||
|
$XML_CREDITOR .= ' </PmtTpInf>' . $CrLf;
|
||||||
|
}
|
||||||
$XML_CREDITOR .= ' <Amt>'.$CrLf;
|
$XML_CREDITOR .= ' <Amt>'.$CrLf;
|
||||||
$XML_CREDITOR .= ' <InstdAmt Ccy="EUR">'.round($row_somme, 2).'</InstdAmt>'.$CrLf;
|
$XML_CREDITOR .= ' <InstdAmt Ccy="EUR">'.round($row_somme, 2).'</InstdAmt>'.$CrLf;
|
||||||
$XML_CREDITOR .= ' </Amt>'.$CrLf;
|
$XML_CREDITOR .= ' </Amt>'.$CrLf;
|
||||||
@ -2031,6 +2052,7 @@ class BonPrelevement extends CommonObject
|
|||||||
$this->emetteur_code_guichet = $account->code_guichet;
|
$this->emetteur_code_guichet = $account->code_guichet;
|
||||||
$this->emetteur_numero_compte = $account->number;
|
$this->emetteur_numero_compte = $account->number;
|
||||||
$this->emetteur_number_key = $account->cle_rib;
|
$this->emetteur_number_key = $account->cle_rib;
|
||||||
|
$this->sepa_xml_pti_in_ctti = (bool) $account->pti_in_ctti;
|
||||||
$this->emetteur_iban = $account->iban;
|
$this->emetteur_iban = $account->iban;
|
||||||
$this->emetteur_bic = $account->bic;
|
$this->emetteur_bic = $account->bic;
|
||||||
|
|
||||||
@ -2125,17 +2147,17 @@ class BonPrelevement extends CommonObject
|
|||||||
//$XML_SEPA_INFO .= ' <BtchBookg>False</BtchBookg>'.$CrLf;
|
//$XML_SEPA_INFO .= ' <BtchBookg>False</BtchBookg>'.$CrLf;
|
||||||
$XML_SEPA_INFO .= ' <NbOfTxs>'.$nombre.'</NbOfTxs>'.$CrLf;
|
$XML_SEPA_INFO .= ' <NbOfTxs>'.$nombre.'</NbOfTxs>'.$CrLf;
|
||||||
$XML_SEPA_INFO .= ' <CtrlSum>'.$total.'</CtrlSum>'.$CrLf;
|
$XML_SEPA_INFO .= ' <CtrlSum>'.$total.'</CtrlSum>'.$CrLf;
|
||||||
/*
|
if (!$this->sepa_xml_pti_in_ctti) {
|
||||||
$XML_SEPA_INFO .= ' <PmtTpInf>'.$CrLf;
|
$XML_SEPA_INFO .= ' <PmtTpInf>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' <SvcLvl>'.$CrLf;
|
$XML_SEPA_INFO .= ' <SvcLvl>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' <Cd>SEPA</Cd>'.$CrLf;
|
$XML_SEPA_INFO .= ' <Cd>SEPA</Cd>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' </SvcLvl>'.$CrLf;
|
$XML_SEPA_INFO .= ' </SvcLvl>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' <LclInstrm>'.$CrLf;
|
$XML_SEPA_INFO .= ' <LclInstrm>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' <Cd>TRF</Cd>'.$CrLf;
|
$XML_SEPA_INFO .= ' <Cd>CORE</Cd>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' </LclInstrm>'.$CrLf;
|
$XML_SEPA_INFO .= ' </LclInstrm>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' <CtgyPurp><Cd>SECU</Cd></CtgyPurp>'.$CrLf;
|
$XML_SEPA_INFO .= ' <SeqTp>' . $format . '</SeqTp>' . $CrLf;
|
||||||
$XML_SEPA_INFO .= ' </PmtTpInf>'.$CrLf;
|
$XML_SEPA_INFO .= ' </PmtTpInf>' . $CrLf;
|
||||||
*/
|
}
|
||||||
$XML_SEPA_INFO .= ' <ReqdExctnDt>'.dol_print_date($dateTime_ETAD, 'dayrfc').'</ReqdExctnDt>'.$CrLf;
|
$XML_SEPA_INFO .= ' <ReqdExctnDt>'.dol_print_date($dateTime_ETAD, 'dayrfc').'</ReqdExctnDt>'.$CrLf;
|
||||||
$XML_SEPA_INFO .= ' <Dbtr>'.$CrLf;
|
$XML_SEPA_INFO .= ' <Dbtr>'.$CrLf;
|
||||||
$XML_SEPA_INFO .= ' <Nm>'.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).'</Nm>'.$CrLf;
|
$XML_SEPA_INFO .= ' <Nm>'.dolEscapeXML(strtoupper(dol_string_unaccent($this->raison_sociale))).'</Nm>'.$CrLf;
|
||||||
|
|||||||
@ -265,9 +265,9 @@ if (empty($reshook)) {
|
|||||||
$error++;
|
$error++;
|
||||||
$action = 'create';
|
$action = 'create';
|
||||||
}
|
}
|
||||||
$array_options = $extrafields->getOptionalsFromPost($object->table_element);
|
//$array_options = $extrafields->getOptionalsFromPost($object->table_element);
|
||||||
|
|
||||||
$object->array_options = $array_options;
|
//$object->array_options = $array_options;
|
||||||
|
|
||||||
$id = $object->create($user);
|
$id = $object->create($user);
|
||||||
|
|
||||||
|
|||||||
@ -46,6 +46,7 @@ if ($user->socid) {
|
|||||||
$socid = $user->socid;
|
$socid = $user->socid;
|
||||||
}
|
}
|
||||||
$result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture');
|
$result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture');
|
||||||
|
$hookmanager->initHooks(array('invoicesuppliercardcontact'));
|
||||||
|
|
||||||
$object = new FactureFournisseur($db);
|
$object = new FactureFournisseur($db);
|
||||||
|
|
||||||
|
|||||||
@ -51,6 +51,7 @@ if ($user->socid) {
|
|||||||
$socid = $user->socid;
|
$socid = $user->socid;
|
||||||
}
|
}
|
||||||
$result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture');
|
$result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture');
|
||||||
|
$hookmanager->initHooks(array('invoicesuppliercarddocument'));
|
||||||
|
|
||||||
// Get parameters
|
// Get parameters
|
||||||
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
|
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
|
||||||
|
|||||||
@ -44,6 +44,7 @@ if ($user->socid) {
|
|||||||
$socid = $user->socid;
|
$socid = $user->socid;
|
||||||
}
|
}
|
||||||
$result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture');
|
$result = restrictedArea($user, 'fournisseur', $id, 'facture_fourn', 'facture');
|
||||||
|
$hookmanager->initHooks(array('invoicesuppliercardinfo'));
|
||||||
|
|
||||||
$object = new FactureFournisseur($db);
|
$object = new FactureFournisseur($db);
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -245,3 +245,9 @@ create table llx_inventory_extrafields
|
|||||||
import_key varchar(14) -- import key
|
import_key varchar(14) -- import key
|
||||||
) ENGINE=innodb;
|
) ENGINE=innodb;
|
||||||
ALTER TABLE llx_inventory_extrafields ADD INDEX idx_inventory_extrafields (fk_object);
|
ALTER TABLE llx_inventory_extrafields ADD INDEX idx_inventory_extrafields (fk_object);
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE llx_reception MODIFY COLUMN ref_supplier varchar(128);
|
||||||
|
|
||||||
|
ALTER TABLE llx_bank_account ADD COLUMN pti_in_ctti smallint DEFAULT 0 AFTER domiciliation;
|
||||||
|
|
||||||
|
|||||||
@ -42,6 +42,7 @@ create table llx_bank_account
|
|||||||
country_iban varchar(2), -- deprecated
|
country_iban varchar(2), -- deprecated
|
||||||
cle_iban varchar(2),
|
cle_iban varchar(2),
|
||||||
domiciliation varchar(255),
|
domiciliation varchar(255),
|
||||||
|
pti_in_ctti smallint DEFAULT 0,
|
||||||
state_id integer DEFAULT NULL,
|
state_id integer DEFAULT NULL,
|
||||||
fk_pays integer NOT NULL,
|
fk_pays integer NOT NULL,
|
||||||
proprio varchar(60),
|
proprio varchar(60),
|
||||||
|
|||||||
@ -26,11 +26,11 @@ create table llx_reception
|
|||||||
ref varchar(30) NOT NULL,
|
ref varchar(30) NOT NULL,
|
||||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||||
fk_soc integer NOT NULL,
|
fk_soc integer NOT NULL,
|
||||||
fk_projet integer DEFAULT NULL,
|
fk_projet integer DEFAULT NULL,
|
||||||
|
|
||||||
ref_ext varchar(30), -- reference into an external system (not used by dolibarr)
|
ref_ext varchar(30), -- reference into an external system (not used by dolibarr)
|
||||||
ref_int varchar(30), -- reference into an internal system (deprecated)
|
ref_int varchar(30), -- reference into an internal system (deprecated)
|
||||||
ref_supplier varchar(30), -- customer number
|
ref_supplier varchar(128), -- supplier number
|
||||||
|
|
||||||
date_creation datetime, -- date de creation
|
date_creation datetime, -- date de creation
|
||||||
fk_user_author integer, -- author of creation
|
fk_user_author integer, -- author of creation
|
||||||
@ -38,7 +38,7 @@ create table llx_reception
|
|||||||
date_valid datetime, -- date de validation
|
date_valid datetime, -- date de validation
|
||||||
fk_user_valid integer, -- valideur
|
fk_user_valid integer, -- valideur
|
||||||
date_delivery datetime DEFAULT NULL, -- date planned of delivery
|
date_delivery datetime DEFAULT NULL, -- date planned of delivery
|
||||||
date_reception datetime,
|
date_reception datetime,
|
||||||
fk_shipping_method integer,
|
fk_shipping_method integer,
|
||||||
tracking_number varchar(50),
|
tracking_number varchar(50),
|
||||||
fk_statut smallint DEFAULT 0, -- 0 = draft, 1 = validated, 2 = billed or closed depending on WORKFLOW_BILL_ON_SHIPMENT option
|
fk_statut smallint DEFAULT 0, -- 0 = draft, 1 = validated, 2 = billed or closed depending on WORKFLOW_BILL_ON_SHIPMENT option
|
||||||
|
|||||||
@ -182,3 +182,5 @@ IfYouDontReconcileDisableProperty=If you don't make the bank reconciliations on
|
|||||||
NoBankAccountDefined=No bank account defined
|
NoBankAccountDefined=No bank account defined
|
||||||
NoRecordFoundIBankcAccount=No record found in bank account. Commonly, this occurs when a record has been deleted manually from the list of transaction in the bank account (for example during a reconciliation of the bank account). Another reason is that the payment was recorded when the module "%s" was disabled.
|
NoRecordFoundIBankcAccount=No record found in bank account. Commonly, this occurs when a record has been deleted manually from the list of transaction in the bank account (for example during a reconciliation of the bank account). Another reason is that the payment was recorded when the module "%s" was disabled.
|
||||||
AlreadyOneBankAccount=Already one bank account defined
|
AlreadyOneBankAccount=Already one bank account defined
|
||||||
|
SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=SEPA transfer: 'Payment Type' at 'Credit Transfer' level
|
||||||
|
SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=SEPA XML: PaymentTypeInformation is mandatory and can now be placed at CreditTransferTransactionInformation level (instead of Payment level). We strongly recommend to place PaymentTypeInformation at Payment level, as all banks will not necessarily accept it at CreditTransferTransactionInformation level. Contact your bank before placing PaymentTypeInformation at CreditTransferTransactionInformation level.
|
||||||
Loading…
Reference in New Issue
Block a user