From cb644665bd4199164e7e7bc8d2a0d698e00f89d7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 20 Feb 2018 00:04:43 +0100 Subject: [PATCH 1/4] Fix output dir of grab --- htdocs/core/lib/website.lib.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 8a7e14f8b0d..81031d5e49c 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -230,11 +230,14 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify $error=0; + dol_syslog("Call getAllImages with grabimagesinto=".$grabimagesinto); + $alreadygrabbed=array(); if (preg_match('/\/$/', $urltograb)) $urltograb.='.'; $urltograb = dirname($urltograb); // So urltograb is now http://www.nltechno.com or http://www.nltechno.com/dir1 + // Search X in "img...src=X" preg_match_all('/]*)>/i', $tmp, $regs); foreach ($regs[0] as $key => $val) @@ -323,16 +326,20 @@ function getAllImages($object, $objectpage, $urltograb, &$tmp, &$action, $modify } $linkwithoutdomain = $regs[2][$key]; - $filetosave = $conf->medias->multidir_output[$conf->entity].'/image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key]; + + $dirforimages = '/'.$objectpage->pageurl; + if ($grabimagesinto == 'root') $dirforimages=''; + + $filetosave = $conf->medias->multidir_output[$conf->entity].'/image/'.$object->ref.$dirforimages.(preg_match('/^\//', $regs[2][$key])?'':'/').$regs[2][$key]; if (preg_match('/^http/', $regs[2][$key])) { $urltograbbis = $regs[2][$key]; $linkwithoutdomain = preg_replace('/^https?:\/\/[^\/]+\//i', '', $regs[2][$key]); - $filetosave = $conf->medias->multidir_output[$conf->entity].'/image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain; + $filetosave = $conf->medias->multidir_output[$conf->entity].'/image/'.$object->ref.$dirforimages.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain; } - $filename = 'image/'.$object->ref.'/'.$objectpage->pageurl.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain; + $filename = 'image/'.$object->ref.$dirforimages.(preg_match('/^\//', $linkwithoutdomain)?'':'/').$linkwithoutdomain; // Clean the aa/bb/../cc into aa/cc $filetosave = preg_replace('/\/[^\/]+\/\.\./', '', $filetosave); From aa1ede6f742c18510e4315aafcd3df97308b7857 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 20 Feb 2018 05:45:42 +0100 Subject: [PATCH 2/4] FIX Search criteria on vat --- htdocs/accountancy/customer/lines.php | 43 ++++++++----------- htdocs/accountancy/expensereport/lines.php | 48 +++++++++------------ htdocs/accountancy/supplier/lines.php | 50 +++++++++------------- 3 files changed, 58 insertions(+), 83 deletions(-) diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 2d197de8c9f..c4c3d03ee97 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -113,7 +113,7 @@ if (is_array($changeaccount) && count($changeaccount) > 0) { $db->begin(); $sql1 = "UPDATE " . MAIN_DB_PREFIX . "facturedet as l"; - $sql1 .= " SET l.fk_code_ventilation=" . $account_parent; + $sql1 .= " SET l.fk_code_ventilation=" . GETPOST('account_parent','int'); $sql1 .= ' WHERE l.rowid IN (' . implode(',', $changeaccount) . ')'; dol_syslog('accountancy/customer/lines.php::changeaccount sql= ' . $sql1); @@ -204,7 +204,7 @@ if (strlen(trim($search_account))) { $sql .= natural_search("aa.account_number", $search_account); } if (strlen(trim($search_vat))) { - $sql .= natural_search("fd.tva_tx", $search_vat); + $sql .= natural_search("fd.tva_tx", price2num($search_vat), 1); } if ($search_month > 0) { @@ -223,7 +223,7 @@ if (strlen(trim($search_country))) { $sql .= natural_search("co.label", $search_country); } if (strlen(trim($search_tvaintra))) { - $sql .= natural_search("s.tva_intra", $search_tva_intra); + $sql .= natural_search("s.tva_intra", $search_tvaintra); } $sql .= " AND f.entity IN (" . getEntity('facture', 0) . ")"; // We don't share object for accountancy $sql .= $db->order($sortfield, $sortorder); @@ -245,28 +245,19 @@ if ($result) { $i = 0; $param=''; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - if ($search_invoice) - $param .= "&search_invoice=" . $search_invoice; - if ($search_ref) - $param .= "&search_ref=" . $search_ref; - if ($search_label) - $param .= "&search_label=" . $search_label; - if ($search_desc) - $param .= "&search_desc=" . $search_desc; - if ($search_account) - $param .= "&search_account=" . $search_account; - if ($search_vat) - $param .= "&search_vat=" . $search_vat; - if ($search_day) $param.='&search_day='.urlencode($search_day); - if ($search_month) $param.='&search_month='.urlencode($search_month); - if ($search_year) $param.='&search_year='.urlencode($search_year); - if ($search_country) - $param .= "&search_country=" . $search_country; - if ($search_tvaintra) - $param .= "&search_tvaintra=" . $search_tvaintra; - + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); + if ($search_invoice) $param .= "&search_invoice=" . urlencode($search_invoice); + if ($search_ref) $param .= "&search_ref=" . urlencode($search_ref); + if ($search_label) $param .= "&search_label=" . urlencode($search_label); + if ($search_desc) $param .= "&search_desc=" . urlencode($search_desc); + if ($search_account) $param .= "&search_account=" . urlencode($search_account); + if ($search_vat) $param .= "&search_vat=" . urlencode($search_vat); + if ($search_day) $param .= '&search_day='.urlencode($search_day); + if ($search_month) $param .= '&search_month='.urlencode($search_month); + if ($search_year) $param .= '&search_year='.urlencode($search_year); + if ($search_country) $param .= "&search_country=" . urlencode($search_country); + if ($search_tvaintra) $param .= "&search_tvaintra=" . urlencode($search_tvaintra); print '
' . "\n"; print ''; @@ -370,7 +361,7 @@ if ($result) { print ''; print ''; - print '' . $objp->country .''; + print '' . $objp->country .''; print '' . $objp->tva_intra . ''; diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index df039bf4093..5c7347403d9 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -61,10 +61,10 @@ $limit = GETPOST('limit','int')?GETPOST('limit', 'int'):(empty($conf->global->AC $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOST('page', 'int'); -if ($page < 0) $page = 0; -$offset = $conf->liste_limit * $page; +if (empty($page) || $page < 0) $page = 0; $pageprev = $page - 1; $pagenext = $page + 1; +$offset = $limit * $page; if (! $sortfield) $sortfield = "erd.date, erd.rowid"; if (! $sortorder) { @@ -170,19 +170,19 @@ if (strlen(trim($search_expensereport))) { $sql .= " AND er.ref like '%" . $search_expensereport . "%'"; } if (strlen(trim($search_label))) { - $sql .= " AND f.label like '%" . $search_label . "%'"; + $sql .= natural_search("f.label", $search_label); } if (strlen(trim($search_desc))) { - $sql .= " AND er.comments like '%" . $search_desc . "%'"; + $sql .= natural_search("er.comments", $search_desc); } if (strlen(trim($search_amount))) { - $sql .= " AND erd.total_ht like '%" . $search_amount . "%'"; + $sql .= natural_search("erd.total_ht", $search_amount, 1); } if (strlen(trim($search_account))) { - $sql .= " AND aa.account_number like '%" . $search_account . "%'"; + $sql .= natural_search("aa.account_number", $search_account); } if (strlen(trim($search_vat))) { - $sql .= " AND (erd.tva_tx like '" . $search_vat . "%')"; + $sql .= natural_search("erd.tva_tx", price2num($search_vat), 1); } if ($search_month > 0) { @@ -219,25 +219,18 @@ if ($result) { $i = 0; $param=''; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - if ($search_expensereport) - $param .= "&search_expensereport=" . $search_expensereport; - if ($search_label) - $param .= "&search_label=" . $search_label; - if ($search_desc) - $param .= "&search_desc=" . $search_desc; - if ($search_account) - $param .= "&search_account=" . $search_account; - if ($search_vat) - $param .= "&search_vat=" . $search_vat; - if ($search_day) $param.='&search_day='.urlencode($search_day); - if ($search_month) $param.='&search_month='.urlencode($search_month); - if ($search_year) $param.='&search_year='.urlencode($search_year); - if ($search_country) - $param .= "&search_country=" . $search_country; - if ($search_tvaintra) - $param .= "&search_tvaintra=" . $search_tvaintra; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); + if ($search_expensereport) $param .= "&search_expensereport=" . urlencode($search_expensereport); + if ($search_label) $param .= "&search_label=" . urlencode($search_label); + if ($search_desc) $param .= "&search_desc=" . urlencode($search_desc); + if ($search_account) $param .= "&search_account=" . urlencode($search_account); + if ($search_vat) $param .= "&search_vat=" . urlencode($search_vat); + if ($search_day) $param .= '&search_day='.urlencode($search_day); + if ($search_month) $param .= '&search_month='.urlencode($search_month); + if ($search_year) $param .= '&search_year='.urlencode($search_year); + if ($search_country) $param .= "&search_country=" . urlencode($search_country); + if ($search_tvaintra) $param .= "&search_tvaintra=" . urlencode($search_tvaintra); print '' . "\n"; print ''; @@ -297,7 +290,6 @@ if ($result) { $expensereport_static = new ExpenseReport($db); - $var = True; while ( $i < min($num_lines, $limit) ) { $objp = $db->fetch_object($result); $codeCompta = length_accountg($objp->account_number) . ' - ' . $objp->label; @@ -347,7 +339,7 @@ if ($result) { print '
'; } else { - print $db->error(); + print $db->lasterror(); } diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index b8b1ed9206d..af9d82e5056 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -65,8 +65,8 @@ $limit = GETPOST('limit','int')?GETPOST('limit', 'int'):(empty($conf->global->AC $sortfield = GETPOST('sortfield', 'alpha'); $sortorder = GETPOST('sortorder', 'alpha'); $page = GETPOST('page', 'int'); -if ($page < 0) $page = 0; -$offset = $conf->liste_limit * $page; +if (empty($page) || $page < 0) $page = 0; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (! $sortfield) @@ -195,10 +195,10 @@ if (strlen(trim($search_amount))) { $sql .= natural_search("l.total_ht", $search_amount, 1); } if (strlen(trim($search_account))) { - $sql .= natural_search("aa.account_number", $search_account, 1); + $sql .= natural_search("aa.account_number", $search_account); } if (strlen(trim($search_vat))) { - $sql .= natural_search("l.tva_tx", $search_vat, 1); + $sql .= natural_search("l.tva_tx", price2num($search_vat), 1); } if ($search_month > 0) { @@ -214,10 +214,10 @@ else if ($search_year > 0) $sql.= " AND f.datef BETWEEN '".$db->idate(dol_get_first_day($search_year,1,false))."' AND '".$db->idate(dol_get_last_day($search_year,12,false))."'"; } if (strlen(trim($search_country))) { - $sql .= " AND (co.label like'" . $search_country . "%')"; + $sql .= natural_search("co.label", $search_country); } if (strlen(trim($search_tvaintra))) { - $sql .= " AND (s.tva_intra like'" . $search_tvaintra . "%')"; + $sql .= natural_search("s.tva_intra", $search_tvaintra); } $sql .= " AND f.entity IN (" . getEntity('facture_fourn', 0) . ")"; // We don't share object for accountancy @@ -241,27 +241,19 @@ if ($result) { $i = 0; $param=''; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - if ($search_invoice) - $param .= "&search_invoice=" . $search_invoice; - if ($search_ref) - $param .= "&search_ref=" . $search_ref; - if ($search_label) - $param .= "&search_label=" . $search_label; - if ($search_desc) - $param .= "&search_desc=" . $search_desc; - if ($search_account) - $param .= "&search_account=" . $search_account; - if ($search_vat) - $param .= "&search_vat=" . $search_vat; - if ($search_day) $param.='&search_day='.urlencode($search_day); - if ($search_month) $param.='&search_month='.urlencode($search_month); - if ($search_year) $param.='&search_year='.urlencode($search_year); - if ($search_country) - $param .= "&search_country=" . $search_country; - if ($search_tvaintra) - $param .= "&search_tvaintra=" . $search_tvaintra; + if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); + if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); + if ($search_invoice) $param .= "&search_invoice=" . urlencode($search_invoice); + if ($search_ref) $param .= "&search_ref=" . urlencode($search_ref); + if ($search_label) $param .= "&search_label=" . urlencode($search_label); + if ($search_desc) $param .= "&search_desc=" . urlencode($search_desc); + if ($search_account) $param .= "&search_account=" . urlencode($search_account); + if ($search_vat) $param .= "&search_vat=" . urlencode($search_vat); + if ($search_day) $param .= '&search_day='.urlencode($search_day); + if ($search_month) $param .= '&search_month='.urlencode($search_month); + if ($search_year) $param .= '&search_year='.urlencode($search_year); + if ($search_country) $param .= "&search_country=" . urlencode($search_country); + if ($search_tvaintra) $param .= "&search_tvaintra=" . urlencode($search_tvaintra); print '
' . "\n"; print ''; @@ -277,7 +269,7 @@ if ($result) { print $langs->trans("DescVentilDoneSupplier") . '
'; print '
' . $langs->trans("ChangeAccount") . '
'; - print $formaccounting->select_account(GETPOST('account_parent'), 'account_parent', 1); + print $formaccounting->select_account($account_parent, 'account_parent', 1); print '
'; $moreforfilter = ''; @@ -389,7 +381,7 @@ if ($result) { print '
'; } else { - print $db->error(); + print $db->lasterror(); } From 87a3019e73636b5a03fea19614e249b762e36650 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 20 Feb 2018 05:53:53 +0100 Subject: [PATCH 3/4] Fix upgrade missing steps --- htdocs/install/mysql/migration/6.0.0-7.0.0.sql | 11 +++++++++++ htdocs/install/upgrade2.php | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql index 4ffe73ac6ea..6e9e480cdb0 100644 --- a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql +++ b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql @@ -684,3 +684,14 @@ ALTER TABLE llx_resource ADD fk_country integer DEFAULT NULL; ALTER TABLE llx_resource ADD INDEX idx_resource_fk_country (fk_country); ALTER TABLE llx_resource ADD CONSTRAINT fk_resource_fk_country FOREIGN KEY (fk_country) REFERENCES llx_c_country (rowid); + +create table llx_facture_rec_extrafields +( + rowid integer AUTO_INCREMENT PRIMARY KEY, + tms timestamp, + fk_object integer NOT NULL, + import_key varchar(14) -- import key +) ENGINE=innodb; + + +ALTER TABLE llx_facture_rec_extrafields ADD INDEX idx_facture_rec_extrafields (fk_object); diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index d20357dd20c..560bf3d2593 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -3977,7 +3977,7 @@ function migrate_reset_blocked_log($db,$langs,$conf) } else { - print ' - '.$langs->trans('AlreadyInV7'); + print ' - '.$langs->trans('AlreadyInV7').'
'; } } else From 16fca2ee353d8b7d11f270db2b32c880e01f2ce7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 20 Feb 2018 10:05:11 +0100 Subject: [PATCH 4/4] Fix bad link --- htdocs/compta/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 01ea8d93de3..19612349214 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3257,7 +3257,7 @@ else if ($id > 0 || ! empty($ref)) // Invoice content - $linkback = '' . $langs->trans("BackToList") . ''; + $linkback = '' . $langs->trans("BackToList") . ''; $morehtmlref='
'; // Ref customer