From 2c074a94f39d0f1e3c17499b530134d04a88903b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 15 Feb 2015 15:57:38 +0100 Subject: [PATCH 01/54] Fix: [ bug #1790 ] Sending a test mail from admin page, gives "File already exists" error --- ChangeLog | 1 + htdocs/core/class/html.formmail.class.php | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5870e55152d..0b21f163136 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,6 +21,7 @@ English Dolibarr ChangeLog - Fix: [ bug #1812 ] SQL Error message while sending emailing with PostgreSQL datatabase - Fix: [ bug #1819 ] SQL error when searching for an invoice payment - Fix: [ bug #1827 ] Tax reports gives incorrect amounts when using external modules that create lines with special codes +- Fix: [ bug #1790 ] Sending a test mail from admin page, gives "File already exists" error ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 9d80ced54e3..45e0aec2f65 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -2,6 +2,7 @@ /* Copyright (C) 2005-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2010-2011 Juanjo Menent + * Copyright (C) 2015 Marcos García * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -500,6 +501,10 @@ class FormMail $out.= "\n"; } + if ($this->withform == 1 || $this->withform == -1) { + $out .= ''; + } + // Attached files if (! empty($this->withfile)) { From 5db4bb68a43d25dbbe92223d41d3e56fb770da54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sun, 15 Feb 2015 16:00:07 +0100 Subject: [PATCH 02/54] Updated bug name --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0b21f163136..cf3e84bed2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,7 +21,7 @@ English Dolibarr ChangeLog - Fix: [ bug #1812 ] SQL Error message while sending emailing with PostgreSQL datatabase - Fix: [ bug #1819 ] SQL error when searching for an invoice payment - Fix: [ bug #1827 ] Tax reports gives incorrect amounts when using external modules that create lines with special codes -- Fix: [ bug #1790 ] Sending a test mail from admin page, gives "File already exists" error +- Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. From 0a81fe667f42219a66201a2e4440a8b8c8336987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Mon, 16 Feb 2015 10:44:10 +0100 Subject: [PATCH 03/54] Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work --- ChangeLog | 1 + htdocs/core/lib/agenda.lib.php | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5870e55152d..afeeb932e9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -21,6 +21,7 @@ English Dolibarr ChangeLog - Fix: [ bug #1812 ] SQL Error message while sending emailing with PostgreSQL datatabase - Fix: [ bug #1819 ] SQL error when searching for an invoice payment - Fix: [ bug #1827 ] Tax reports gives incorrect amounts when using external modules that create lines with special codes +- Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index e730a1ed45b..c9773372e93 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -144,12 +144,19 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh foreach ($showextcals as $val) { $htmlname = dol_string_nospecial($val['name']); + print ''; print '' . "\n"; From 6f08893016977a6a4b767bde1bb4259df72af562 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Mon, 16 Feb 2015 12:26:20 +0100 Subject: [PATCH 04/54] Fix: [ bug #1846 ] Browser IE11 not detected --- ChangeLog | 1 + htdocs/core/lib/functions.lib.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 29fadcba4fc..31e0bad5a16 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ Fix: [ bug #1752 ] Date filter of margins module, filters since 12H instead of 0 Fix: [ bug #1757 ] Sorting breaks product/service statistics Fix: [ bug #1797 ] Tulip supplier invoice module takes creation date instead of invoice date Fix: [ bug #1792 ] Users are not allowed to see margins module index page when no product view permission is enabled +Fix: [ bug #1846 ] Browser IE11 not detected ***** ChangeLog for 3.5.6 compared to 3.5.5 ***** Fix: Avoid missing class error for fetch_thirdparty method #1973 diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index b5bac3b0ab0..85e4b68f519 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -10,6 +10,7 @@ * Copyright (C) 2010-2011 Juanjo Menent * Copyright (C) 2013 Cédric Salvador * Copyright (C) 2013 Alexandre Spangaro + * Copyright (C) 2014-2015 Marcos García * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -146,7 +147,7 @@ function getBrowserInfo() elseif (preg_match('/epiphany/i',$_SERVER["HTTP_USER_AGENT"])) { $name='epiphany'; $version=$reg[2]; } elseif ((empty($phone) || preg_match('/iphone/i',$_SERVER["HTTP_USER_AGENT"])) && preg_match('/safari(\/|\s)([\d\.]*)/i',$_SERVER["HTTP_USER_AGENT"], $reg)) { $name='safari'; $version=$reg[2]; } // Safari is often present in string for mobile but its not. elseif (preg_match('/opera(\/|\s)([\d\.]*)/i', $_SERVER["HTTP_USER_AGENT"], $reg)) { $name='opera'; $version=$reg[2]; } - elseif (preg_match('/msie(\/|\s)([\d\.]*)/i', $_SERVER["HTTP_USER_AGENT"], $reg)) { $name='ie'; $version=$reg[2]; } // MS products at end + elseif (preg_match('/(MSIE\s([0-9]+\.[0-9]))|.*(Trident\/[0-9]+.[0-9];\srv:([0-9]+\.[0-9]+))/i', $_SERVER["HTTP_USER_AGENT"], $reg)) { $name='ie'; $version= end($reg); } // MS products at end // Other $firefox=0; if (in_array($name,array('firefox','iceweasel'))) $firefox=1; From 3efb737cbf685501752a6c69131b8d79cf07bbde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Mon, 16 Feb 2015 12:30:10 +0100 Subject: [PATCH 05/54] Fix: [ bug #1845 ] Undefined "$conf->browser->ie" var in "functions.lib.php" --- htdocs/core/lib/functions.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 85e4b68f519..687c8d3d855 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2516,7 +2516,7 @@ function load_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpath $return=''; if ($picto == 'setup') $picto='title.png'; - if (!empty($conf->browser->ie) && $picto=='title.png') $picto='title.gif'; + if (($conf->browser->name == 'ie') && $picto=='title.png') $picto='title.gif'; $return.= "\n"; $return.= ''; @@ -2554,7 +2554,7 @@ function print_barre_liste($titre, $page, $file, $options='', $sortfield='', $so global $conf,$langs; if ($picto == 'setup') $picto='title.png'; - if (!empty($conf->browser->ie) && $picto=='title.png') $picto='title.gif'; + if (($conf->browser->name == 'ie') && $picto=='title.png') $picto='title.gif'; if (($num > $conf->liste_limit) || ($num == -1)) { From 529d4447efaff3334ba64815bd800ad8d151ea0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Tue, 17 Feb 2015 00:04:31 +0100 Subject: [PATCH 06/54] Fix: [ bug #1652 ] Margin tab should not be shown for thirds not clients --- htdocs/core/modules/modMargin.class.php | 3 ++- htdocs/margin/tabs/thirdpartyMargins.php | 9 --------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/htdocs/core/modules/modMargin.class.php b/htdocs/core/modules/modMargin.class.php index 19100576a83..0a0d33789b6 100644 --- a/htdocs/core/modules/modMargin.class.php +++ b/htdocs/core/modules/modMargin.class.php @@ -1,5 +1,6 @@ + * Copyright (C) 2015 Marcos García * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -80,7 +81,7 @@ class modMargin extends DolibarrModules // New pages on tabs $this->tabs = array( 'product:+margin:Margins:margins:$user->rights->margins->liretous:/margin/tabs/productMargins.php?id=__ID__', - 'thirdparty:+margin:Margins:margins:empty($user->societe_id) && $user->rights->margins->liretous:/margin/tabs/thirdpartyMargins.php?socid=__ID__' + 'thirdparty:+margin:Margins:margins:empty($user->societe_id) && $user->rights->margins->liretous && ($societe->client > 0):/margin/tabs/thirdpartyMargins.php?socid=__ID__' ); diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index 457d55e81f0..5782b72c356 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -94,15 +94,6 @@ if ($socid > 0) print ''; } - if ($societe->fournisseur) - { - print ''; - } - // Total Margin print ''; + print ''; foreach ($showextcals as $val) { $htmlname = dol_string_nospecial($val['name']); print ''; } From d46c76311c9c869219351c1dc941ac40a3ce78d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Fri, 20 Feb 2015 10:23:17 +0100 Subject: [PATCH 11/54] Correction --- htdocs/core/class/html.formmail.class.php | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/htdocs/core/class/html.formmail.class.php b/htdocs/core/class/html.formmail.class.php index 45e0aec2f65..7ffd535f0ec 100644 --- a/htdocs/core/class/html.formmail.class.php +++ b/htdocs/core/class/html.formmail.class.php @@ -255,6 +255,7 @@ class FormMail if ($this->withform == 1) { $out.= '
'."\n"; + $out.= ''; $out.= ''; } foreach ($this->param as $key=>$value) @@ -501,10 +502,6 @@ class FormMail $out.= "\n"; } - if ($this->withform == 1 || $this->withform == -1) { - $out .= ''; - } - // Attached files if (! empty($this->withfile)) { From 41196c01e9cd0957b5be4fae1a7366d3db32ee27 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Feb 2015 15:48:54 +0100 Subject: [PATCH 12/54] Add hidden option FCKEDITOR_ALLOW_ANY_CONTENT to solve bug of editor not accepting all html tags from templates. --- htdocs/core/class/doleditor.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index d6e23beac70..0839639217f 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -183,7 +183,8 @@ class DolEditor customConfig : ckeditorConfig, readOnly : '.($this->readonly?'true':'false').', htmlEncodeOutput :'.$htmlencode_force.', - toolbar: \''.$this->toolbarname.'\', + allowedContent :'.(empty($conf->global->FCKEDITOR_ALLOW_ANY_CONTENT)?'false':'true').', + toolbar: \''.$this->toolbarname.'\', toolbarStartupExpanded: '.($this->toolbarstartexpanded ? 'true' : 'false').', width: '.($this->width ? '\''.$this->width.'\'' : '\'\'').', height: '.$this->height.', From dba050fd43e3786782c2a77cbd16c80055bb7fab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Feb 2015 15:55:55 +0100 Subject: [PATCH 13/54] Fix: tags h correctly supported --- htdocs/theme/amarok/ckeditor/config.js | 18 ++++++++++-------- htdocs/theme/auguria/ckeditor/config.js | 14 ++++++++------ htdocs/theme/bureau2crea/ckeditor/config.js | 14 ++++++++------ htdocs/theme/cameleo/ckeditor/config.js | 15 +++++++++------ htdocs/theme/eldy/ckeditor/config.js | 6 +++--- 5 files changed, 38 insertions(+), 29 deletions(-) diff --git a/htdocs/theme/amarok/ckeditor/config.js b/htdocs/theme/amarok/ckeditor/config.js index 4243ac6e57e..97f1c0a0b62 100755 --- a/htdocs/theme/amarok/ckeditor/config.js +++ b/htdocs/theme/amarok/ckeditor/config.js @@ -24,8 +24,8 @@ CKEDITOR.editorConfig = function( config ) config.fullPage = false; // Not a full html page string, just part of it config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; //config.contentsCss = '/css/mysitestyles.css'; - config.image_previewText=' '; - + config.image_previewText=' '; // Must no be empty + config.toolbar_Full = [ ['Source','-','Save','NewPage','Preview','-','Templates'], @@ -45,30 +45,33 @@ CKEDITOR.editorConfig = function( config ) ['Maximize', 'ShowBlocks','-','About'] ]; + // Used for mailing fields config.toolbar_dolibarr_mailings = [ ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], - ['NumberedList','BulletedList','Outdent','Indent'], + ['NumberedList','BulletedList','Outdent','Indent','CreateDiv'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Anchor','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for notes fields config.toolbar_dolibarr_notes = [ - ['Source'], + ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for details lines config.toolbar_dolibarr_details = [ ['Source','Maximize'], @@ -77,7 +80,7 @@ CKEDITOR.editorConfig = function( config ) ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], - ['SpecialChar'] + ['Link','Unlink','SpecialChar'] ]; // Used for mailing fields @@ -86,5 +89,4 @@ CKEDITOR.editorConfig = function( config ) ['Source','Maximize'], ['Find'] ]; - }; diff --git a/htdocs/theme/auguria/ckeditor/config.js b/htdocs/theme/auguria/ckeditor/config.js index fd4a34b0453..97f1c0a0b62 100644 --- a/htdocs/theme/auguria/ckeditor/config.js +++ b/htdocs/theme/auguria/ckeditor/config.js @@ -24,8 +24,8 @@ CKEDITOR.editorConfig = function( config ) config.fullPage = false; // Not a full html page string, just part of it config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; //config.contentsCss = '/css/mysitestyles.css'; - config.image_previewText=' '; - + config.image_previewText=' '; // Must no be empty + config.toolbar_Full = [ ['Source','-','Save','NewPage','Preview','-','Templates'], @@ -45,30 +45,33 @@ CKEDITOR.editorConfig = function( config ) ['Maximize', 'ShowBlocks','-','About'] ]; + // Used for mailing fields config.toolbar_dolibarr_mailings = [ ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent','CreateDiv'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Anchor','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for notes fields config.toolbar_dolibarr_notes = [ - ['Source'], + ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for details lines config.toolbar_dolibarr_details = [ ['Source','Maximize'], @@ -86,5 +89,4 @@ CKEDITOR.editorConfig = function( config ) ['Source','Maximize'], ['Find'] ]; - }; diff --git a/htdocs/theme/bureau2crea/ckeditor/config.js b/htdocs/theme/bureau2crea/ckeditor/config.js index fd4a34b0453..97f1c0a0b62 100644 --- a/htdocs/theme/bureau2crea/ckeditor/config.js +++ b/htdocs/theme/bureau2crea/ckeditor/config.js @@ -24,8 +24,8 @@ CKEDITOR.editorConfig = function( config ) config.fullPage = false; // Not a full html page string, just part of it config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; //config.contentsCss = '/css/mysitestyles.css'; - config.image_previewText=' '; - + config.image_previewText=' '; // Must no be empty + config.toolbar_Full = [ ['Source','-','Save','NewPage','Preview','-','Templates'], @@ -45,30 +45,33 @@ CKEDITOR.editorConfig = function( config ) ['Maximize', 'ShowBlocks','-','About'] ]; + // Used for mailing fields config.toolbar_dolibarr_mailings = [ ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent','CreateDiv'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Anchor','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for notes fields config.toolbar_dolibarr_notes = [ - ['Source'], + ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], ['Link','Unlink','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for details lines config.toolbar_dolibarr_details = [ ['Source','Maximize'], @@ -86,5 +89,4 @@ CKEDITOR.editorConfig = function( config ) ['Source','Maximize'], ['Find'] ]; - }; diff --git a/htdocs/theme/cameleo/ckeditor/config.js b/htdocs/theme/cameleo/ckeditor/config.js index 99d5d33fc5d..97f1c0a0b62 100644 --- a/htdocs/theme/cameleo/ckeditor/config.js +++ b/htdocs/theme/cameleo/ckeditor/config.js @@ -25,7 +25,7 @@ CKEDITOR.editorConfig = function( config ) config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; //config.contentsCss = '/css/mysitestyles.css'; config.image_previewText=' '; // Must no be empty - + config.toolbar_Full = [ ['Source','-','Save','NewPage','Preview','-','Templates'], @@ -45,30 +45,33 @@ CKEDITOR.editorConfig = function( config ) ['Maximize', 'ShowBlocks','-','About'] ]; + // Used for mailing fields config.toolbar_dolibarr_mailings = [ ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent','CreateDiv'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], - ['Link','Unlink','Anchor','Image','Table','SpecialChar'] + ['Link','Unlink','Anchor','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for notes fields config.toolbar_dolibarr_notes = [ - ['Source'], + ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], - ['Link','Unlink','Image','Table','SpecialChar'] + ['Link','Unlink','Image','Table','HorizontalRule','SpecialChar'] ]; + // Used for details lines config.toolbar_dolibarr_details = [ ['Source','Maximize'], diff --git a/htdocs/theme/eldy/ckeditor/config.js b/htdocs/theme/eldy/ckeditor/config.js index 150b75dbd54..97f1c0a0b62 100644 --- a/htdocs/theme/eldy/ckeditor/config.js +++ b/htdocs/theme/eldy/ckeditor/config.js @@ -25,7 +25,7 @@ CKEDITOR.editorConfig = function( config ) config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; //config.contentsCss = '/css/mysitestyles.css'; config.image_previewText=' '; // Must no be empty - + config.toolbar_Full = [ ['Source','-','Save','NewPage','Preview','-','Templates'], @@ -51,7 +51,7 @@ CKEDITOR.editorConfig = function( config ) ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent','CreateDiv'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], @@ -64,7 +64,7 @@ CKEDITOR.editorConfig = function( config ) ['Source','Maximize'], ['Cut','Copy','Paste','-','SpellChecker'], ['Undo','Redo','-','Find','Replace'], - ['Font','FontSize'], + ['Format','Font','FontSize'], ['Bold','Italic','Underline','Strike','Subscript','Superscript','-','TextColor','RemoveFormat'], ['NumberedList','BulletedList','Outdent','Indent'], ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'], From 9e078b32d261bdfe91ed11e177b93973623b61a5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Feb 2015 18:35:52 +0100 Subject: [PATCH 14/54] Fixes the way the RUM number is generated. Start phpunit test. --- .../class/bonprelevement.class.php | 33 ++-- test/phpunit/AllTests.php | 5 +- test/phpunit/BankAccountTest.php | 2 +- test/phpunit/BonPrelevementTest.php | 182 ++++++++++++++++++ 4 files changed, 202 insertions(+), 20 deletions(-) create mode 100644 test/phpunit/BonPrelevementTest.php diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 3738abac4c7..a43423c0d78 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -894,13 +894,13 @@ class BonPrelevement extends CommonObject if (!$error) { $ref = substr($year,-2).$month; - + $sql = "SELECT substring(ref from char_length(ref) - 1)"; $sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons"; $sql.= " WHERE ref LIKE '%".$ref."%'"; $sql.= " AND entity = ".$conf->entity; $sql.= " ORDER BY ref DESC LIMIT 1"; - + dol_syslog(get_class($this)."::Create sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); @@ -917,7 +917,7 @@ class BonPrelevement extends CommonObject $ref = "T".$ref.str_pad(dol_substr("00".intval($row[0])+1),2,"0",STR_PAD_LEFT); $filebonprev = $ref; - + // Create withdraw receipt in database $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_bons ("; $sql.= " ref, entity, datec"; @@ -978,10 +978,7 @@ class BonPrelevement extends CommonObject $error++; } - /* - * Update orders - * - */ + // Update invoice requests as done $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande"; $sql.= " SET traite = 1"; $sql.= ", date_traite = '".$this->db->idate($now)."'"; @@ -1029,7 +1026,7 @@ class BonPrelevement extends CommonObject $bonprev->factures = $factures_prev_id; - //Build file + // Generation of SEPA file $bonprev->generate(); } dol_syslog($filebonprev); @@ -1039,7 +1036,6 @@ class BonPrelevement extends CommonObject /* * Update total */ - $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_bons"; $sql.= " SET amount = ".price2num($bonprev->total); $sql.= " WHERE rowid = ".$prev_id; @@ -1053,9 +1049,6 @@ class BonPrelevement extends CommonObject dol_syslog("Erreur mise a jour du total - $sql"); } - /* - * Rollback or Commit - */ if (!$error) { $this->db->commit(); @@ -1267,9 +1260,9 @@ class BonPrelevement extends CommonObject /* * section Debiteur (sepa Debiteurs bloc lines) */ - $sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, soc.datec, c.code as country_code,"; + $sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, c.code as country_code,"; $sql.= " pl.client_nom as name, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,"; - $sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum"; + $sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.datec, rib.rowid as drum"; $sql.= " FROM"; $sql.= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,"; $sql.= " ".MAIN_DB_PREFIX."facture as f,"; @@ -1510,17 +1503,21 @@ class BonPrelevement extends CommonObject * @param string $row_idfac pf.fk_facture AS idfac, * @param string $row_iban rib.iban_prefix AS iban, * @param string $row_bic rib.bic AS bic, - * @param string $row_datec soc.datec, - * @param string $row_drum soc.rowid AS drum + * @param string $row_datec rib.datec, + * @param string $row_drum rib.rowid AS drum * @return string Return string with SEPA part DrctDbtTxInf */ function EnregDestinataireSEPA($row_code_client, $row_nom, $row_address, $row_zip, $row_town, $row_country_code, $row_cb, $row_cg, $row_cc, $row_somme, $row_facnumber, $row_idfac, $row_iban, $row_bic, $row_datec, $row_drum) { $CrLf = "\n"; $Rowing = sprintf("%06d", $row_idfac); + + // Define value for RUM + // Example: RUMCustomerCode-CustomerBankAccountId-01424448606 (note: Date is date of creation of CustomerBankAccountId) $Date_Rum = strtotime($row_datec); - $pre = ($date_Rum > 1359673200) ? 'Rum' : '++R'; - $Rum = $pre.$row_code_client.$row_drum.'-0'.date('U', $Date_Rum); + $pre = ($date_Rum > 1359673200) ? 'RUM' : '++R'; + $Rum = dol_trunc($pre.$row_code_client.'-'.$row_drum.'-0'.date('U', $Date_Rum), 35, 'right', 'UTF-8', 1); + $XML_DEBITOR =''; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; diff --git a/test/phpunit/AllTests.php b/test/phpunit/AllTests.php index a8a554ca25d..739104f72fd 100644 --- a/test/phpunit/AllTests.php +++ b/test/phpunit/AllTests.php @@ -153,8 +153,11 @@ class AllTests $suite->addTestSuite('UserGroupTest'); require_once dirname(__FILE__).'/BankAccountTest.php'; $suite->addTestSuite('BankAccountTest'); - require_once dirname(__FILE__).'/CompanyBankAccountTest.php'; + require_once dirname(__FILE__).'/CompanyBankAccountTest.php'; $suite->addTestSuite('CompanyBankAccountTest'); + require_once dirname(__FILE__).'/BonPrelevementTest.php'; + $suite->addTestSuite('BonPrelevementTest'); + require_once dirname(__FILE__).'/ChargeSocialesTest.php'; $suite->addTestSuite('ChargeSocialesTest'); require_once dirname(__FILE__).'/HolidayTest.php'; diff --git a/test/phpunit/BankAccountTest.php b/test/phpunit/BankAccountTest.php index 4983f1e2173..0556b21fb85 100644 --- a/test/phpunit/BankAccountTest.php +++ b/test/phpunit/BankAccountTest.php @@ -17,7 +17,7 @@ */ /** - * \file test/phpunit/ContratTest.php + * \file test/phpunit/BankAccounrTest.php * \ingroup test * \brief PHPUnit test * \remarks To run this script as CLI: phpunit filename.php diff --git a/test/phpunit/BonPrelevementTest.php b/test/phpunit/BonPrelevementTest.php new file mode 100644 index 00000000000..0124b25e6c6 --- /dev/null +++ b/test/phpunit/BonPrelevementTest.php @@ -0,0 +1,182 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ + +/** + * \file test/phpunit/BonPrelevementTest.php + * \ingroup test + * \brief PHPUnit test + * \remarks To run this script as CLI: phpunit filename.php + */ + +global $conf,$user,$langs,$db; +//define('TEST_DB_FORCE_TYPE','mysql'); // This is to force using mysql driver +//require_once 'PHPUnit/Autoload.php'; +require_once dirname(__FILE__).'/../../htdocs/master.inc.php'; +require_once dirname(__FILE__).'/../../htdocs/compta/prelevement/class/bonprelevement.class.php'; + +if (empty($user->id)) +{ + print "Load permissions for admin user nb 1\n"; + $user->fetch(1); + $user->getrights(); +} +$conf->global->MAIN_DISABLE_ALL_MAILS=1; + +$langs->load("main"); + + +/** + * Class for PHPUnit tests + * + * @backupGlobals disabled + * @backupStaticAttributes enabled + * @remarks backupGlobals must be disabled to have db,conf,user and lang not erased. + */ +class BonPrelevementTest extends PHPUnit_Framework_TestCase +{ + protected $savconf; + protected $savuser; + protected $savlangs; + protected $savdb; + + /** + * Constructor + * We save global variables into local variables + * + * @return BankAccountTest + */ + function __construct() + { + //$this->sharedFixture + global $conf,$user,$langs,$db; + $this->savconf=$conf; + $this->savuser=$user; + $this->savlangs=$langs; + $this->savdb=$db; + + print __METHOD__." db->type=".$db->type." user->id=".$user->id; + //print " - db ".$db->db; + print "\n"; + } + + // Static methods + public static function setUpBeforeClass() + { + global $conf,$user,$langs,$db; + $db->begin(); // This is to have all actions inside a transaction even if test launched without suite. + + print __METHOD__."\n"; + } + public static function tearDownAfterClass() + { + global $conf,$user,$langs,$db; + $db->rollback(); + + print __METHOD__."\n"; + } + + /** + * Init phpunit tests + * + * @return void + */ + protected function setUp() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + print __METHOD__."\n"; + } + /** + * End phpunit tests + * + * @return void + */ + protected function tearDown() + { + print __METHOD__."\n"; + } + + /** + * testBonPrevelementCreate + * + * @return int + */ + public function testBonPrelevementCreate() + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + // TODO + // Create invoice + + + // Create payment with mode withdraw + + + // Ask withdraw request + + + // Create withdraw record and generate SEPA file + $localobject=new BonPrelevement($this->savdb); + //$localobject->date_solde=dol_now(); + $result=$localobject->Create(0,0,'simu'); + + print __METHOD__." result=".$result."\n"; + $this->assertEquals($result, 0); + + // Test SEPA file + + + return $result; + } + + /** + * testBonPrelevementDelete + * + * @param int $id Id of contract + * @return int + * + * @depends testBonPrelevementOther + * The depends says test is run only if previous is ok + */ +/* public function testBonPrelevementDelete($id) + { + global $conf,$user,$langs,$db; + $conf=$this->savconf; + $user=$this->savuser; + $langs=$this->savlangs; + $db=$this->savdb; + + $localobject=new BonPrelevement($this->savdb); + $result=$localobject->fetch($id); + $result=$localobject->delete($id); + + print __METHOD__." id=".$id." result=".$result."\n"; + $this->assertLessThan($result, 0); + return $result; + } +*/ + +} From bd6b465ee10aa20bc45072f67ddfdc07aff06ea4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Feb 2015 20:16:15 +0100 Subject: [PATCH 15/54] Add phpunit for ie11 and ie10 --- test/phpunit/FunctionsLibTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php index 78c2278ba69..73af66e3cbc 100755 --- a/test/phpunit/FunctionsLibTest.php +++ b/test/phpunit/FunctionsLibTest.php @@ -128,22 +128,37 @@ class FunctionsLibTest extends PHPUnit_Framework_TestCase $tmp=getBrowserInfo(); $this->assertEquals('ie',$tmp['browsername']); $this->assertEquals('5.0',$tmp['browserversion']); + $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firefox/0.9.1'; // Firefox 0.9.1 $tmp=getBrowserInfo(); $this->assertEquals('firefox',$tmp['browsername']); $this->assertEquals('0.9.1',$tmp['browserversion']); + + $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'; // IE 10 + $tmp=getBrowserInfo(); + $this->assertEquals('ie',$tmp['browsername']); + $this->assertEquals('10.0',$tmp['browserversion']); + + $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko'; // IE 11 + $tmp=getBrowserInfo(); + $this->assertEquals('ie',$tmp['browsername']); + $this->assertEquals('11.0',$tmp['browserversion']); + $_SERVER['HTTP_USER_AGENT']='Mozilla/3.0 (Windows 98; U) Opera 6.03 [en]'; $tmp=getBrowserInfo(); $this->assertEquals('opera',$tmp['browsername']); $this->assertEquals('6.03',$tmp['browserversion']); + $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21'; $tmp=getBrowserInfo(); $this->assertEquals('chrome',$tmp['browsername']); $this->assertEquals('19.0.1042.0',$tmp['browserversion']); + $_SERVER['HTTP_USER_AGENT']='chrome (Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11)'; $tmp=getBrowserInfo(); $this->assertEquals('chrome',$tmp['browsername']); $this->assertEquals('17.0.963.56',$tmp['browserversion']); + $_SERVER['HTTP_USER_AGENT']='Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1'; $tmp=getBrowserInfo(); $this->assertEquals('safari',$tmp['browsername']); From f423386518cf0f1eb085a78f92adc6a20bea7a14 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Feb 2015 20:20:12 +0100 Subject: [PATCH 16/54] Sync lang --- htdocs/langs/de_DE/accountancy.lang | 106 +++++++++++++------------- htdocs/langs/de_DE/agenda.lang | 4 +- htdocs/langs/de_DE/bills.lang | 10 +-- htdocs/langs/de_DE/projects.lang | 4 +- htdocs/langs/de_DE/sendings.lang | 24 +++--- htdocs/langs/fr_FR/admin.lang | 4 +- htdocs/langs/fr_FR/exports.lang | 2 +- htdocs/langs/sl_SI/accountancy.lang | 24 +++--- htdocs/langs/sl_SI/admin.lang | 78 +++++++++---------- htdocs/langs/sl_SI/agenda.lang | 4 +- htdocs/langs/sl_SI/bills.lang | 48 ++++++------ htdocs/langs/sl_SI/donations.lang | 6 +- htdocs/langs/sl_SI/ecm.lang | 4 +- htdocs/langs/sl_SI/install.lang | 4 +- htdocs/langs/sl_SI/interventions.lang | 8 +- htdocs/langs/sl_SI/main.lang | 2 +- htdocs/langs/sl_SI/orders.lang | 18 ++--- htdocs/langs/sl_SI/other.lang | 42 +++++----- htdocs/langs/sl_SI/paybox.lang | 6 +- htdocs/langs/sl_SI/products.lang | 30 ++++---- htdocs/langs/sl_SI/stocks.lang | 22 +++--- htdocs/langs/sl_SI/suppliers.lang | 4 +- htdocs/langs/sl_SI/withdrawals.lang | 2 +- htdocs/langs/tr_TR/admin.lang | 22 +++--- htdocs/langs/tr_TR/agenda.lang | 2 +- htdocs/langs/tr_TR/companies.lang | 2 +- htdocs/langs/tr_TR/errors.lang | 8 +- htdocs/langs/tr_TR/ftp.lang | 2 +- htdocs/langs/tr_TR/install.lang | 4 +- htdocs/langs/tr_TR/main.lang | 2 +- htdocs/langs/tr_TR/orders.lang | 4 +- htdocs/langs/tr_TR/other.lang | 6 +- htdocs/langs/tr_TR/printipp.lang | 2 +- htdocs/langs/tr_TR/productbatch.lang | 2 +- htdocs/langs/tr_TR/projects.lang | 4 +- htdocs/langs/tr_TR/sendings.lang | 10 +-- htdocs/langs/tr_TR/stocks.lang | 16 ++-- htdocs/langs/tr_TR/suppliers.lang | 4 +- htdocs/langs/tr_TR/users.lang | 8 +- 39 files changed, 277 insertions(+), 277 deletions(-) diff --git a/htdocs/langs/de_DE/accountancy.lang b/htdocs/langs/de_DE/accountancy.lang index ae192806fb8..27a4b5b3bc1 100644 --- a/htdocs/langs/de_DE/accountancy.lang +++ b/htdocs/langs/de_DE/accountancy.lang @@ -9,13 +9,13 @@ Menuaccount=Buchhaltung Konten Menuthirdpartyaccount=Partnerkonten MenuTools=Werkzeuge -ConfigAccountingExpert=Configuration of the module accounting expert +ConfigAccountingExpert=Konfiguration des Experten Buchhaltungsmodul Journaux=Journale JournalFinancial=Finanz-Journale Exports=Exports -Export=Export +Export=Exportieren Modelcsv=Exportmodell -OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +OptionsDeactivatedForThisExportModel=Für dieses Exportierungsmodell, sind die Einstellungen deaktiviert Selectmodelcsv=Wählen Sie ein Exportmodell Modelcsv_normal=Klassischer Export Modelcsv_CEGID=Export zu CEGID Expert @@ -27,12 +27,12 @@ Selectchartofaccounts=Kontenplan wählen Validate=Freigeben Addanaccount=Fügen Sie ein Buchhaltungskonto hinzu AccountAccounting=Buchhaltungs Konto -Ventilation=Breakdown +Ventilation=Abbauen ToDispatch=Zu versenden Dispatched=Versandt -CustomersVentilation=Breakdown customers -SuppliersVentilation=Breakdown suppliers +CustomersVentilation=Kundenabbau +SuppliersVentilation=Lieferantenabbau TradeMargin=Handelsspanne Reports=Berichte ByCustomerInvoice=Nach Kundenrechnungen @@ -41,81 +41,81 @@ NewAccount=Neues Buchhaltungskonto Update=Aktualisieren List=Liste Create=Erstelle -UpdateAccount=Modification of an accounting account -UpdateMvts=Modification of a movement -WriteBookKeeping=Record accounts in general ledger +UpdateAccount=Änderung eines Bilanz-Kontos +UpdateMvts=Änderung einer Bewegung +WriteBookKeeping=Konten ins Hauptbuch übernehmen Bookkeeping=Hauptbuch AccountBalanceByMonth=Kontostand pro Monat -AccountingVentilation=Breakdown accounting -AccountingVentilationSupplier=Breakdown accounting supplier -AccountingVentilationCustomer=Breakdown accounting customer +AccountingVentilation=Rechnungswesenabbau +AccountingVentilationSupplier=Abbau von Buchhaltungs-Lieferanten +AccountingVentilationCustomer=Abbau von Buchhaltungs-Kunden Line=Zeile CAHTF=Total purchase supplier HT -InvoiceLines=Lines of invoice to be ventilated -InvoiceLinesDone=Ventilated lines of invoice -IntoAccount=In the accounting account +InvoiceLines=Rechnungszeile bereinigen +InvoiceLinesDone=Bereinigte Rechnungszeilen +IntoAccount=Im Buchhaltungs-Konto Ventilate=erörtern -VentilationAuto=Automatic breakdown +VentilationAuto=Automatischer Abbau Processing=Bearbeitung EndProcessing=Das Ende der Verarbeitung -AnyLineVentilate=Any lines to ventilate +AnyLineVentilate=Beliebige Zeile zu bereinigen SelectedLines=Gewählte Zeilen Lineofinvoice=Rechnungszeile -VentilatedinAccount=Ventilated successfully in the accounting account -NotVentilatedinAccount=Not ventilated in the accounting account +VentilatedinAccount=Erfolgreich im Rechnungskonto bereinigt +NotVentilatedinAccount=Nicht im Rechnungskonto bereinigt -ACCOUNTING_SEPARATORCSV=Column separator in export file +ACCOUNTING_SEPARATORCSV=Spaltentrennzeichen in Exportdatei -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements +ACCOUNTING_LIMIT_LIST_VENTILATION=Anzahl der Elemente, die Aufgliederung nach Seite angezeigt werden (empfohlenes Maximum: 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Beginnen Sie die Sortierung der Abbau Seiten "Muss sortiert werden" durch die aktuellen Elemente +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Beginnen Sie die Sortierung der Abbau Seiten "Abbau" durch die aktuellen Elemente -AccountLength=Length of the accounting accounts shown in Dolibarr +AccountLength=Länge der in Dolibarr gezeigten Rechnungskonten AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. -ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts -ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts +ACCOUNTING_LENGTH_GACCOUNT=Länge der Finanzbuchführung +ACCOUNTING_LENGTH_AACCOUNT=Länge der Partner ACCOUNTING_SELL_JOURNAL=Verkaufsjournal ACCOUNTING_PURCHASE_JOURNAL=Einkaufsjournal ACCOUNTING_BANK_JOURNAL=Bankauszug ACCOUNTING_CASH_JOURNAL=Kassenbeleg ACCOUNTING_MISCELLANEOUS_JOURNAL=Verschiedenes Journal -ACCOUNTING_SOCIAL_JOURNAL=Social journal +ACCOUNTING_SOCIAL_JOURNAL=Sozial-Journal -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer -ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Konto der Transaktion +ACCOUNTING_ACCOUNT_SUSPENSE=Konto der Warte -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Buchhaltungskonto standardmäßig für die gekauften Produkte (wenn nicht im Produktblatt definiert) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Buchhaltungskonto standardmäßig für die verkauften Produkte (wenn nicht im Produktblatt definiert) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Buchhaltungskonto standardmäßig für die gekauften Dienstleistungen (wenn nicht im Produktblatt definiert) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Buchhaltungskonto standardmäßig für die verkauften Dienstleistungen (wenn nicht im Produktblatt definiert) Doctype=Dokumententyp Docdate=Datum Docref=Referenz Numerocompte=Konto -Code_tiers=Thirdparty -Labelcompte=Label account +Code_tiers=Partner +Labelcompte=Label-Account Debit=Soll Credit=Haben Amount=Betrag Sens=Sens Codejournal=Journal -DelBookKeeping=Delete the records of the general ledger +DelBookKeeping=Löschen Sie die Einträge des Hauptbuchs SellsJournal=Verkaufsjournal PurchasesJournal=Einkaufsjournal DescSellsJournal=Verkaufsjournal DescPurchasesJournal=Einkaufsjournal BankJournal=Bankauszug -DescBankJournal=Bank journal including all the types of payments other than cash +DescBankJournal=Bankjournal enthält alle Arten von anderen Zahlungsmitteln als Barzahlungen CashJournal=Kassenbeleg -DescCashJournal=Cash journal including the type of payment cash +DescCashJournal=Barjournal enthält die Zahlungsart: bar CashPayment=Barzahlung @@ -125,36 +125,36 @@ CustomerInvoicePayment=Rechnungszahlung (Kunde) ThirdPartyAccount=Partner Konto NewAccountingMvt=Neue Änderung -NumMvts=Number of movement -ListeMvts=List of the movement +NumMvts=Anzahl der Änderungen +ListeMvts=Liste der Bewegungen ErrorDebitCredit=Soll und Haben können nicht gleichzeitig eingegeben werden -ReportThirdParty=List thirdparty account -DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts +ReportThirdParty=Liste der Partner Konten +DescThirdPartyReport=Konsultieren Sie hier die Liste der Drittkunden und die Anbieter und ihre Buchhaltungskonten -ListAccounts=List of the accounting accounts +ListAccounts=Liste der Abrechnungskonten Pcgversion=Version des Plans Pcgtype=Kontenklasse Pcgsubtype=Unterkontenklasse -Accountparent=Root of the account +Accountparent=Wurzeln des Kontos Active=Auszug NewFiscalYear=Neues fiskalisches Jahr -DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers -TotalVente=Total turnover HT +DescVentilCustomer=Konsultieren Sie hier die jährliche Aufteilung der Buchhaltung Ihrer Rechnungs-Kunden +TotalVente=Totaler Umsatz TotalMarge=Gesamt-Spanne -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account -DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account -ChangeAccount=Change the accounting account for lines selected by the account: +DescVentilDoneCustomer=Konsultieren Sie hier die Liste der Zeilen der Rechnungs-Kunden und deren Abbrechnungskonto +DescVentilTodoCustomer=Bereinigen Sie die Zeilen der Kundenrechnung mit einem Rechnungskonto +ChangeAccount=Ändern sie das Abrechnungskonto für markierte Zeilen durch das Konto: Vide=- -DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers -DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account +DescVentilSupplier=Konsultieren Sie hier die jährliche Aufteilung der Buchhaltung, Ihrer Rechnungen der Lieferanten +DescVentilTodoSupplier=Bereinigen Sie die Zeilen der Rechnung für Lieferanten, mit einem Abrechnungskonto +DescVentilDoneSupplier=Konsultieren Sie hier die Liste der Zeilen der Rechnungs-Kunden und deren Abbrechnungskonto ValidateHistory=Automatisch geltend machen ErrorAccountancyCodeIsAlreadyUse=Fehler, Sie können dieses Buchaltungskonto nicht löschen, da es benutzt wird. -FicheVentilation=Breakdown card +FicheVentilation=Abbau-Karte diff --git a/htdocs/langs/de_DE/agenda.lang b/htdocs/langs/de_DE/agenda.lang index 5d7002b8db8..02209a06808 100644 --- a/htdocs/langs/de_DE/agenda.lang +++ b/htdocs/langs/de_DE/agenda.lang @@ -60,7 +60,7 @@ SupplierOrderSentByEMail=Lieferantenbestellung %s per E-Mail versendet SupplierInvoiceSentByEMail=Lieferantenrechnung %s per E-Mail versendet ShippingSentByEMail=Lieferung %s per Email versendet ShippingValidated= Sendung %s freigegeben -InterventionSentByEMail=Intervention %s sent by EMail +InterventionSentByEMail=Intervention %s gesendet via E-Mail NewCompanyToDolibarr= Partner erstellt DateActionPlannedStart= Geplantes Startdatum DateActionPlannedEnd= Geplantes Enddatum @@ -69,7 +69,7 @@ DateActionDoneEnd= Effektives Ende DateActionStart= Startdatum DateActionEnd= Enddatum AgendaUrlOptions1=Sie können die Ausgabe über folgende Parameter filtern: -AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions2=Login =%s für die Ausgabe an Aktionen erstellt, die von oder an den Benutzer %s zugeordnet beschränken. AgendaUrlOptions3=logina=%s begrenzt die Ausgabe auf von Benutzer %s erstellte Maßnahmen. AgendaUrlOptions4=logint=%s begrenzt die Ausgabe auf von Benutzer %s betroffene Maßnahmen. AgendaUrlOptionsProject=project=PROJECT_ID begrenzt die die Ausgabe auf Maßnahmen im Zusammenhang mit Projekt PROJECT_ID. diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index 9749805f23a..9caea1587c2 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -348,7 +348,7 @@ ChequeNumber=Schecknummer ChequeOrTransferNumber=Scheck-/Überweisungsnummer ChequeMaker=Scheckaussteller ChequeBank=Scheckbank -CheckBank=Check +CheckBank=Prüfen NetToBePaid=Netto Zahlbetrag PhoneNumber=Tel FullPhoneNumber=Telefon @@ -389,7 +389,7 @@ DisabledBecausePayments=Nicht möglich, da es Zahlungen gibt CantRemovePaymentWithOneInvoicePaid=Die Zahlung kann nicht entfernt werden, da es mindestens eine Rechnung gibt, die als bezahlt markiert ist ExpectedToPay=Erwartete Zahlung PayedByThisPayment=mit dieser Zahlung beglichen -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidInvoicesAutomatically=Markiert alle Standard- oder Ersatzrechnungen als "bezahlt", wenn diese vollständig beglichen sind. ClosePaidCreditNotesAutomatically=Markiert alle Gutschriften als "bezahlt", wenn diese vollständig beglichen sind. AllCompletelyPayedInvoiceWillBeClosed=Alle Rechnungen ohne ausstehende Zahlungen werden automatisch geschlossen und als "bezahlt" markiert. ToMakePayment=Bezahlen @@ -400,7 +400,7 @@ RevenueStamp=Steuermarke YouMustCreateInvoiceFromThird=Diese Option steht nur zur Verfügung, wenn eine Rechnung vom Reiter "Kunde" eines Partners aus erstellt wird PDFCrabeDescription=Rechnungs-Modell Crabe. Eine vollständige Rechnung (Empfohlene Vorlage) TerreNumRefModelDesc1=Liefert eine Nummer mit dem Format %syymm-nnnn für Standard-Rechnungen und %syymm-nnnn für Gutschriften, wobei yy=Jahr, mm=Monat und nnnn eine lückenlose Folge ohne Überlauf auf 0 ist -MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +MarsNumRefModelDesc1=Liefert eine Nummer mit dem Format %syymm-nnnn für Standard-Rechnungen, %syymm-nnnn für den Austausch von Rechnungen, %syymm-nnnn für Gutschriften und %syymm-nnnn für Gutschrifen wobei yy=Jahr, mm=Monat und nnnn eine lückenlose Folge ohne Überlauf auf 0 ist TerreNumRefModelError=Eine Rechnung, beginnend mit $ syymm existiert bereits und ist nicht kompatibel mit diesem Modell der Reihe. Entfernen oder umbenennen, um dieses Modul. ##### Types de contacts ##### TypeContact_facture_internal_SALESREPFOLL=Repräsentative Follow-up Kundenrechnung @@ -420,11 +420,11 @@ InvoiceSituationDesc=Create a new situation following an already existing one SituationAmount=Situation invoice amount(net) SituationDeduction=Situation subtraction Progress=Progress -ModifyAllLines=Modify all lines +ModifyAllLines=Bearbeite alle Zeilen CreateNextSituationInvoice=Create next situation NotLastInCycle=This invoice in not the last in cycle and must not be modified. DisabledBecauseNotLastInCycle=The next situation already exists. DisabledBecauseFinal=This situation is final. CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. NoSituations=No opened situations -InvoiceSituationLast=Final and general invoice +InvoiceSituationLast=Allgemeine Endrechnung diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index 8d9f98ac44c..b11cd6db0c4 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -3,7 +3,7 @@ RefProject=Projekt-Nr. ProjectId=Projekt-ID Project=Projekt Projects=Projekte -ProjectStatus=Project status +ProjectStatus=Projekt Status SharedProject=Jeder PrivateProject=Kontakte zum Projekt MyProjectsDesc=Hier können Sie nur die Projekte einsehen, bei welchen Sie als Kontakt hinzugefügt sind. @@ -103,7 +103,7 @@ CloneContacts=Dupliziere Kontakte CloneNotes=Dupliziere Hinweise CloneProjectFiles=Dupliziere verbundene Projektdateien CloneTaskFiles=Clone task(s) joined files (if task(s) cloned) -CloneMoveDate=Update project/tasks dates from now ? +CloneMoveDate=Projekt / Aufgaben Daten vom aktuellen Zeitpunkt updaten? ConfirmCloneProject=Möchten Sie dieses Projekt wirklich duplizieren? ProjectReportDate=Passe Aufgaben-Datum dem Projekt-Startdatum an ErrorShiftTaskDate=Es ist nicht möglich, das Aufgabendatum dem neuen Projektdatum anzupassen diff --git a/htdocs/langs/de_DE/sendings.lang b/htdocs/langs/de_DE/sendings.lang index cf0fdd1fd4f..cfb2af7ca1a 100644 --- a/htdocs/langs/de_DE/sendings.lang +++ b/htdocs/langs/de_DE/sendings.lang @@ -4,8 +4,8 @@ Sending=Sendung Sendings=Sendungen Shipment=Sendung Shipments=Lieferungen -ShowSending=Show Sending -Receivings=Receipts +ShowSending=Zeige Sendung +Receivings=Beleg SendingsArea=Versandübersicht ListOfSendings=Versandliste SendingMethod=Versandart @@ -15,7 +15,7 @@ SearchASending=Suche Sendung StatisticsOfSendings=Versandstatistik NbOfSendings=Anzahl der Sendungen NumberOfShipmentsByMonth=Anzahl der Sendungen nach Monaten -SendingCard=Shipment card +SendingCard=Sendungs-Karte NewSending=Neue Sendung CreateASending=Erzeuge eine Sendung CreateSending=Sendung erzeugen @@ -38,7 +38,7 @@ StatusSendingCanceledShort=Storno StatusSendingDraftShort=Entwurf StatusSendingValidatedShort=Freigegeben StatusSendingProcessedShort=Fertig -SendingSheet=Shipment sheet +SendingSheet=Sendungs Blatt Carriers=Spediteure Carrier=Spediteur CarriersArea=Spediteursübersicht @@ -55,19 +55,19 @@ StatsOnShipmentsOnlyValidated=Versandstatistik (nur Freigegebene). Das Datum ist DateDeliveryPlanned=Geplantes Zustellungsdatum DateReceived=Datum der Zustellung SendShippingByEMail=Verand per E-Mail -SendShippingRef=Submission of shipment %s +SendShippingRef=Abgabe der Sendung %s ActionsOnShipping=Anmerkungen zur Sendung LinkToTrackYourPackage=Link zur Sendungsnachverfolgung ShipmentCreationIsDoneFromOrder=Aktuell ist die Erstellung der neuen Sendung über die Bestellkarte erfolgt. -RelatedShippings=Related shipments +RelatedShippings=Ähnliche Sendungen ShipmentLine=Sendungszeilen CarrierList=Liste der Transporter -SendingRunning=Product from ordered customer orders -SuppliersReceiptRunning=Product from ordered supplier orders -ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders -ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders -ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received +SendingRunning=Die Produktion von dem bestellten Kundenaufträge +SuppliersReceiptRunning=Produkt aus Lieferantenbestellung +ProductQtyInCustomersOrdersRunning=Produktmenge in geöffneter Kunden Bestellungen +ProductQtyInSuppliersOrdersRunning=Produktmenge in geöffneter Lieferantenbestellungen +ProductQtyInShipmentAlreadySent=Produktmenge aus geöffneter Kundenbestellung bereits versandt +ProductQtyInSuppliersShipmentAlreadyRecevied=Produktmenge aus Lieferantenbestellung bereits erhalten # Sending methods SendingMethodCATCH=Abholung durch Kunden diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 4475fe60771..9b6dec0e2d1 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -631,7 +631,7 @@ Permission181=Consulter les commandes fournisseurs Permission182=Créer/modifier les commandes fournisseurs Permission183=Valider les commandes fournisseurs Permission184=Approuver les commandes fournisseurs -Permission185=Passer les commandes fournisseurs et les annuler +Permission185=Passer les commandes fournisseurs Permission186=Accuser réception des commandes fournisseurs Permission187=Clôturer les commandes fournisseurs Permission188=Annuler les commandes fournisseurs @@ -1501,7 +1501,7 @@ CashDeskThirdPartyForSell=Tiers générique à utiliser par défaut pour les ven CashDeskBankAccountForSell=Compte par défaut à utiliser pour l'encaissement en liquide CashDeskBankAccountForCheque= Compte par défaut à utiliser pour l'encaissement en chèque CashDeskBankAccountForCB= Compte par défaut à utiliser pour l'encaissement en carte de crédit -CashDeskDoNotDecreaseStock=Ne pas réduire le stock quand une vente est faite depuis le Point de Vente. Sinon, la réduction est faite par défaut. +CashDeskDoNotDecreaseStock=Désactiver la réduction de stock quand une vente est faite depuis le Point de Vente. Si "non", la réduction du stock est faite d'office par le module Point de Vente, quelque soit le mode choisi dans la configuration du module stock. CashDeskIdWareHouse=Forcer et restreindre l'emplacement/entrepôt à utiliser pour la réduction de stock StockDecreaseForPointOfSaleDisabled=Réduction de stock lors de l'utilisation du Point de Vente désactivée CashDeskYouDidNotDisableStockDecease=Vous n'avez pas désactivé la réduction de stocks lors de la réalisation d'une vente depuis le Point de Vente. Aussi, un entrepôt/emplacement est nécessaire. diff --git a/htdocs/langs/fr_FR/exports.lang b/htdocs/langs/fr_FR/exports.lang index bf70976481c..2c0f2c5d2bb 100644 --- a/htdocs/langs/fr_FR/exports.lang +++ b/htdocs/langs/fr_FR/exports.lang @@ -125,7 +125,7 @@ BankAccountNumber=Numéro de compte BankAccountNumberKey=Clé RIB SpecialCode=Code spécial ExportStringFilter=%% permet de remplacer 1 ou plusieurs caractères dans le texte -ExportDateFilter=YYYY, YYYYMM, YYYYMMDD: filtre pour une année/mois/jour
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD: filtre pour une plage année/mois/jour
> YYYY, > YYYYMM, > YYYYMMDD': filtre pour une date supérieure à une année/mois/jour donné
< YYYY, < YYYYMM, < YYYYMMDD: filtre pour une date inférieure à une année/mois/jour donné +ExportDateFilter=AAAA, AAAAMM, AAAAMMJJ: filtre pour une année/mois/jour
AAAA+AAAA, AAAAMM+AAAAMM, AAAAMMJJ+AAAAMMJJ: filtre pour une plage année/mois/jour
> AAAA, > AAAAMM, > AAAAMMJJ': filtre pour une date supérieure à une année/mois/jour donné
< AAAA, < AAAAMM, < AAAAMMJJ: filtre pour une date inférieure à une année/mois/jour donné ExportNumericFilter='NNNNN' filtres sur une valeur
'NNNNN+NNNNN' filtres sur une place de valeurs
'>NNNNN' filtres sur les valeurs plus petites
'>NNNNN' filtres sur les valeurs plus grandes ## filters SelectFilterFields=Si vous voulez filtrer sur certaines valeurs, saisissez ces valeurs. diff --git a/htdocs/langs/sl_SI/accountancy.lang b/htdocs/langs/sl_SI/accountancy.lang index 04e9e45eae3..c4d4970288b 100644 --- a/htdocs/langs/sl_SI/accountancy.lang +++ b/htdocs/langs/sl_SI/accountancy.lang @@ -13,9 +13,9 @@ ConfigAccountingExpert=Konfiguracija modula računovodskega strokovnjaka Journaux=Revije JournalFinancial=Finančne revije Exports=Izvoz -Export=Export +Export=Izvoz Modelcsv=Model izvoza -OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +OptionsDeactivatedForThisExportModel=Za ta izvozni model so opcije deaktivirane Selectmodelcsv=Izberite model izvoza Modelcsv_normal=Classic izvoz Modelcsv_CEGID=Izvoz v CEGID Expert @@ -68,11 +68,11 @@ Lineofinvoice=Line računa VentilatedinAccount=Uspešno prezračen v obračunskem računu NotVentilatedinAccount=Ni prezračen v obračunskem računu -ACCOUNTING_SEPARATORCSV=Column separator in export file +ACCOUNTING_SEPARATORCSV=Ločilo za stolpce v izvozni datoteki -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements +ACCOUNTING_LIMIT_LIST_VENTILATION=Število elementov za pregled po straneh (največ priporočeno: 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Začni sortiranje strani za pregled "potrebno pregledati" z najnovejšimi elementi +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Začni sortiranje strani za pregled "Pregledano" z najnovejšimi elementi AccountLength=Dolžina računovodstva računov prikazan v Dolibarrju AccountLengthDesc=Funkcija omogoča, da Predstavljati dolžino obračunskega računa z zamenjavo prostorov z ničelno sliki. Ta funkcija se dotakne le zaslon, ne spreminja računovodskih račune registrirane v Dolibarrju. Za izvoz, to funkcijo je potrebno, da so združljivi z določeno programsko opremo. @@ -130,7 +130,7 @@ ListeMvts=Seznam gibanja ErrorDebitCredit=Debetne in Credit ne more imeti vrednosti hkrati ReportThirdParty=Seznam thirdparty račun -DescThirdPartyReport=Posvetujejo tukaj seznam thirdparty kupcev in dobaviteljev in njihovih računovodskih računov +DescThirdPartyReport=Tukaj poglejte seznam kupcev in dobaviteljev in njihovih računovodskih računov ListAccounts=Seznam računovodskih računov @@ -142,19 +142,19 @@ Active=Izjava NewFiscalYear=Novo poslovno leto -DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers +DescVentilCustomer=Tukaj poglejte letni pregled vaših računov kupcem TotalVente=Skupni prihodek HT TotalMarge=Skupaj prodajna marža -DescVentilDoneCustomer=Posvetujejo tukaj seznam vrstic računov strank in njihovo računovodsko račun +DescVentilDoneCustomer=Tukaj poglejte seznam vrstic na računih za kupce in njihovih računovodskih računov DescVentilTodoCustomer=Prezračite svoje linije računa stranke z računovodsko račun ChangeAccount=Spremenite računovodsko račun linij, ki jih na račun izbranih: Vide=- -DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers +DescVentilSupplier=Tukaj poglejte letni pregled računov vaših dobaviteljev DescVentilTodoSupplier=Prezračite svoje linije dobavitelja na računu z računovodsko račun -DescVentilDoneSupplier=Posvetujejo tukaj seznam vrstic računov dobaviteljem in njihovo računovodsko račun +DescVentilDoneSupplier=Tukaj poglejte seznam vrstic na računih dobaviteljev in njihovih računovodskih računov ValidateHistory=Potrditi Samodejno ErrorAccountancyCodeIsAlreadyUse=Napaka, ne morete izbrisati to računovodsko račun, ker se uporablja -FicheVentilation=Breakdown card +FicheVentilation=Kartica pregleda diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index 3a5327fee25..74e7506e000 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -56,8 +56,8 @@ UseSearchToSelectCompany=Za izbiranje partnerjev uporabite polja z avtomatsko iz ActivityStateToSelectCompany= Dodaj opcijo filtra za prikaz/skritje partnerjev, ki so trenutno neaktivni ali so prekinili aktivnosti UseSearchToSelectContactTooltip=Če je partnerjev zelo veliko (> 100 000), lahko hitrost povišate z nastavitvijo konstante SOCIETE_DONOTSEARCH_ANYWHERE na 1 v Nastavitve->Ostale nastavitve. Iskanje bo s tem omejeno na začetek niza. UseSearchToSelectContact=Zaizbiro kontakta uporabite polja z avtomatsko izpolnitvijo (namesto uporabe seznama). -DelaiedFullListToSelectCompany=Wait you press a key before loading content of thirdparties combo list (This may increase performance if you have a large number of thirdparties) -DelaiedFullListToSelectContact=Wait you press a key before loading content of contact combo list (This may increase performance if you have a large number of contact) +DelaiedFullListToSelectCompany=Čakanje na pritisk tipke pred nalaganjem vsebine kombiniranega seznama partnerjev (to lahko izboljša zmogljivosti, če imate veliko število partnerjev) +DelaiedFullListToSelectContact=Čakanje na pritisk tipke pred nalaganjem vsebine kombiniranega seznama kontaktov (to lahko izboljša zmogljivosti, če imate veliko število kontaktov) SearchFilter=Opcije iskalnega filtra NumberOfKeyToSearch=Število znakov za sproženje iskanja: %s ViewFullDateActions=Prikaži celotne datume aktivnosti na tretjem listu ViewFullDateActions=Prikaz polnih datumov aktivnosti v tretjem zavihku @@ -70,7 +70,7 @@ PreviewNotAvailable=Predogled ni na voljo ThemeCurrentlyActive=Trenutno aktivna tema CurrentTimeZone=Časovni pas PHP strežnika MySQLTimeZone=Časovni pas MySql (baze podatkov) -TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +TZHasNoEffect=Podatkovni strežnik shranjuje in prikazuje podatke, kot da bi bili shranjeni v predloženih nizih. Časovna cona učinkuje samo, če uporabljate funkcijo UNIX_TIMESTAMP (te Dolibarr ne sme uporabljati, zato TZ baza ne bi smela imeti nmobenega učinka, tudi če se spremeni po vnosu podatkov). Space=Presledek Table=Tabela Fields=Polja @@ -210,7 +210,7 @@ ModulesJobDesc=Poslovni moduli zagotavljajo enostavne prednastavitve aplikacije ModulesMarketPlaceDesc=Več modulov si lahko naložite preko zunanjih web strani na internetu... ModulesMarketPlaces=Več modulov... DoliStoreDesc=DoliStore, uradna tržnica za Dolibarr ERP/CRM zunanje module -DoliPartnersDesc=List with some companies that can provide/develop on-demand modules or features (Note: any Open Source company knowning PHP language can provide you specific development) +DoliPartnersDesc=Seznam podjetij, ki lahko zagotovijo/razvijejo module po želji (opomba: vsako odprtokodno podjetje z znanjem PHP jezika vam lahko zagotovi specifičen razvoj) WebSiteDesc=Ponudniki spletnih strani, na katerih lahko poiščete več modulov... URL=Link BoxesAvailable=Polja, ki so na voljo @@ -222,7 +222,7 @@ AutomaticIfJavascriptDisabled=Avtomatsko, če je Javascript onemogočen AvailableOnlyIfJavascriptNotDisabled=Na voljo samo, če JavaScript ni onemogočen AvailableOnlyIfJavascriptAndAjaxNotDisabled=Na voljo samo, če JavaScript in Ajax nista onemogočena Required=Zahtevano -UsedOnlyWithTypeOption=Used by some agenda option only +UsedOnlyWithTypeOption=Uporablja se samo pri nekaterih ocijah agende Security=Varnost Passwords=Gesla DoNotStoreClearPassword=Ne shranjujte v bazi podatkov celih gesel, temveč samo šifrirane vrednosti (priporočena aktivacija) @@ -294,7 +294,7 @@ DoNotUseInProduction=Ne uporabljajte v proizvodnji ThisIsProcessToFollow=To je nastavitev za proces: StepNb=Korak %s FindPackageFromWebSite=Poiščite paket, ki omogoča funkcijo, ki jo želite (na primer na spletni strani %s). -DownloadPackageFromWebSite=Download package %s. +DownloadPackageFromWebSite=Prenesi paket %s. UnpackPackageInDolibarrRoot=Razpakiraj paketno datoteko v Dolibarr korensko mapo %s SetupIsReadyForUse=Instalacija je zaključena in Dolibarr je pripravljen na uporabo s to novo komponento. NotExistsDirect=Ni definirana alternativna korenska mapa.
@@ -304,7 +304,7 @@ YouCanSubmitFile=Izberi modul: CurrentVersion=Trenutna različica Dolibarr CallUpdatePage=Pojdite na stran za nadgradnjo strukture in podatkov v podatkovni bazi: %s. LastStableVersion=Zadnja stabilna različica -UpdateServerOffline=Update server offline +UpdateServerOffline=Posodobitev strežnika brez povezave GenericMaskCodes=Vnesete lahko kakršnokoli številčno masko. V tej maski lahko uporabite naslednje oznake:
{000000} ustreza številki, ki se poveča pri vsakem %s. Vnesite toliko ničel, kot je želena dolžina števca. Števec se bo zapolnil z ničlami na levi strani, da bi velikost ustrezala maski.
{000000+000} enako kot prej, vendar je desno od znaka + odmik, ki je uporabljen na prvi %s.
{000000@x} enako kot prej, vendar se števec resetira na 0, ko se doseže mesec x (x je med 1 in 12). Če je uporabljena ta opcija, ,in je x enak ali večji od 2, je zahtevana tudi sekvenca {yy}{mm} ali {yyyy}{mm}.
{dd} dan (01 do 31).
{mm} mesec (01 do 12).
{yy}, {yyyy} ali {y} leto, izraženo z 2, 4 ali 1 številko.
GenericMaskCodes2={cccc} koda klienta z n znaki
{cccc000} koda klienta z n znaki se nadaljuje s števcem stranke. Ta namenski števec stranke se resetira obenem z globalnim števcem.
{tttt} Koda partnerja z n znaki (glejte slovar-tipi partnerjev).
GenericMaskCodes3=Vsi ostali znaki v maski bodo ostali nedotaknjeni.
Presledki niso dovoljeni.
@@ -383,12 +383,12 @@ ExtrafieldSelectList = Izberi iz tabele ExtrafieldSeparator=Ločilo ExtrafieldCheckBox=Potrditveno polje ExtrafieldRadio=Radijski gumb -ExtrafieldCheckBoxFromList= Checkbox from table +ExtrafieldCheckBoxFromList= Potrditveno polje iz tabele ExtrafieldParamHelpselect=Seznam parametrov mora biti kot ključ,vrednost

na primer :
1,vrednost1
2,vrednost2
3,vrednost3
...

Če želite imeti seznam odvisen od drugega :
1,vrednost1|parent_list_code:parent_key
2,vrednost2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=Seznam parametrov mora biti kot ključ,vrednost

na primer :
1,vrednost1
2,vrednost2
3,vrednost3
... ExtrafieldParamHelpradio=Seznam parametrov mora biti kot ključ,vrednost

na primer :
1,vrednost1
2,vrednost2
3,vrednost3
... ExtrafieldParamHelpsellist=Seznam parametrov iz tabele
Syntax : table_name:label_field:id_field::filter
Primer : c_typent:libelle:id::filter

filter je lahko enostaven test (npr active=1) za prikaz samo aktivnih vrednsost
če želite filtrirati fpo dodatnih poljih, uporabite sintakso extra.fieldcode=... (kjer je field code koda dodatnega polja)

če želite, da je seznam odvisen od drugega :
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=Seznam parametrov iz tabele
Syntax : table_name:label_field:id_field::filter
Primer : c_typent:libelle:id::filter

filter je lahko enostaven test (npr active=1) za prikaz samo aktivne vrednosti
če želite filtrirati po dodatnih poljih, uporabite sintakso extra.fieldcode=... (kjer je field code koda dodatnega polja)

če želite, da je seznam odvisen od drugega :
c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=Uporabljena knjižnica za ustvarjanje PDF WarningUsingFPDF=Pozor: vaš conf.php vsebuje direktivo dolibarr_pdf_force_fpdf=1. To pomeni, da uporabljate knjižnico FPDF za generiranje PDF datotek. Ta knjižnica je stara in ne podpira številnih značilnosti (Unicode, transparentnost slike, cirilico, arabske in azijske jezike, ...), zado lahko med generiranjem PDF pride do napak.
Za rešitev tega problema in polno podporo PDF generiranja, prosimo da naložite TCPDF knjižnico, nato označite kot komentar ali odstranite vrstico $dolibarr_pdf_force_fpdf=1, in namesto nje dodajte $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' LocalTaxDesc=V nekaterih državah so na vsako vrstico računa vezani 2 ali 3 davki. V takem primeru izberite tip in stopnjo drugega in tretjega davka. Možni tipi so:
1 : lokalni davek na proizvode in storitve brez DDV (DDV se ne obračuna na lokalni davek)
2 : lokalni davek na proizvode in storitve pred DDV (DDV se obračuna na znesek + lokalni davek)
3 : lokalni davek na proizvode brez DDV (DDV se ne obračuna na lokalni davek)
4 : lokalni davek na proizvode pred DDV (DDV se obračuna na znesek + lokalni davek)
5 : lokalni davek na storitve brez DDV (DDV se ne obračuna na lokalni davek)
6 : lokalni davek na storitve pred DDV (DDV se obračuna na znesek + lokalni davek) @@ -407,7 +407,7 @@ InitEmptyBarCode=Začetna vrednost za naslednjih %s praznih zapisov EraseAllCurrentBarCode=Zbrišite vse trenutne vrednosti črtnih kod ConfirmEraseAllCurrentBarCode=Ali zares želite izbrisati vse trenutne vrednosti črtnih kod ? AllBarcodeReset=Vse vrednosti črtnih kod so bile odstranjene -NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. +NoBarcodeNumberingTemplateDefined=Nobena številčna predloga črtne kode ni omogočena v mudulu za nastavitev črtnih kod. NoRecordWithoutBarcodeDefined=Noben zapis ni definiran brez črtne kode. # Modules @@ -450,7 +450,7 @@ Module55Desc=Upravljanje črtnih kod Module56Name=Telefonija Module56Desc=Integracija telefonije Module57Name=Trajniki -Module57Desc=Standing orders and withdrawal management. Also includes generation of SEPA file for european countries. +Module57Desc=Upravljanje trajnikov in nakazil. Vključuje tudi generiranje SEPA za evropske države. Module58Name=Klic s klikom Module58Desc=Integracija klica s klikom Module59Name=Vaš zaznamek @@ -482,7 +482,7 @@ Module320Desc=Dodajanje vira RSS na prikazane Dolibarr strani Module330Name=Zaznamki Module330Desc=Upravljanje zaznamkov Module400Name=Projekti/priložnosti/možnosti -Module400Desc=Management of projects, opportunities or leads. You can then assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module400Desc=Upravljanje projektov, priložnosti ali potencialov. Nato lahko dodate vse druge elemente (račun, naročilo, ponudbo, intervencijo, ...) k tem projektom, da dobite transverzalni pogled iz projektnega pogleda. Module410Name=Internetni koledar Module410Desc=Integracija internetnega koledarja Module500Name=Posebni stroški (davki, socialni prispevki, dividende) @@ -512,7 +512,7 @@ Module2500Desc=Shranjevanje dokumentov in dajanje v skupno rabo Module2600Name=Spletne storitve Module2600Desc=Omogočanje Dolibarr strežnika za spletne storitve Module2650Name=Spletne storitve (klient) -Module2650Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Supplier orders supported only for the moment) +Module2650Desc=Vključitev Dolibarr klienta za mrežni servis (lahko se uporablja za potisk podatkov/zahtev na zunanji strežnik. Zaenkrat so podprta samo naročila pri dobaviteljih) Module2700Name=Gravatar Module2700Desc=Uporaba online Gravatar storitev (www.gravatar.com) za prikaz fotografij uporabnikov/članov (na osnovi njihovih emailov). Potreben je internetni dostop Module2800Desc=FTP Client @@ -526,8 +526,8 @@ Module6000Name=Potek dela Module6000Desc=Upravljanje poteka dela Module20000Name=Upravljanje zahtevkov za dopust Module20000Desc=Določitev in sledenje zahtevkov za dopustov zaposlenih -Module39000Name=Product batch -Module39000Desc=Batch or serial number, eat-by and sell-by date management on products +Module39000Name=Paket proizvodov +Module39000Desc=Paket serijskih številk, upravljanje proizvodov po datumu prevzema in datumu prodaje Module50000Name=PayBox Module50000Desc=Modul za omogočanje strani za spletno plačevanje s kreditno kartico - PayBox Module50100Name=Prodajalne @@ -544,8 +544,8 @@ Module59000Name=Marže Module59000Desc=Modul za upravljanje z maržami Module60000Name=Provizije Module60000Desc=Modul za upravljanje s provizijami -Module150010Name=Batch number, eat-by date and sell-by date -Module150010Desc=batch number, eat-by date and sell-by date management for product +Module150010Name=Paketna številka, datum prevzema in datum prodaje +Module150010Desc=paketna številka, upravljanje proizvodov po datumu prevzema in datumu prodaje Permission11=Branje računov Permission12=Kreiranje/Spreminjanje računov Permission13=Preklic potrditve računov @@ -575,7 +575,7 @@ Permission67=Izvoz intervencij Permission71=Branje članov Permission72=Kreiranje/spreminjanje članov Permission74=Brisanje članov -Permission75=Setup types of membership +Permission75=Nastavitev tipov članov Permission76=Izvoz podatkov Permission78=Branje naročnin Permission79=Kreiranje/spreminjanje naročnin @@ -598,8 +598,8 @@ Permission106=Izvoz pošiljk Permission109=Brisanje pošiljk Permission111=Branje finančnih postavk Permission112=Kreiranje/spreminjanje/brisanje in primerjava transakcij -Permission113=Setup financial accounts (create, manage categories) -Permission114=Reconciliate transactions +Permission113=Nastavitve finančnih kontov (kreiranje, upravljanje kategorij) +Permission114=Pobotanje transkacij Permission115=Izvoz transakcij in računovodskih izkazov Permission116=Transfer med računi Permission117=Upravljanje pošiljanja čekov @@ -764,7 +764,7 @@ Permission55001=Branje anket Permission55002=Kreiranje/spreminjanje anket Permission59001=Branje komercialnih marž Permission59002=Določitev komercialnih marž -Permission59003=Read every user margin +Permission59003=Branje vsake uporabniške marže DictionaryCompanyType=Tip partnerjev DictionaryCompanyJuridicalType=Pravna oblika partnerjev DictionaryProspectLevel=Nivo potenciala možne stranke @@ -828,11 +828,11 @@ LocalTax2IsUsedExampleES= V Španiji, samostojnimi in neodvisni strokovnjaki, ki LocalTax2IsNotUsedExampleES= V Španiji so poslovne niso predmet davčnega sistema modulov. CalcLocaltax=Poročila CalcLocaltax1ES=Prodaja - Nabava -CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases +CalcLocaltax1Desc=Poročila o lokalnih davkih so izračunana kot razlika med nabavnimi in prodajnimi davki CalcLocaltax2ES=Nabava -CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases +CalcLocaltax2Desc=Poročila o lokalnih davkih so seštevek nabavnih davkov CalcLocaltax3ES=Prodaja -CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +CalcLocaltax3Desc=Poročila o lokalnih davkih so seštevek prodajnih davkov LabelUsedByDefault=Privzet naziv, če za kodo ne obstaja prevod LabelOnDocuments=Naslov na dokumentu NbOfDays=Število dni @@ -1042,7 +1042,7 @@ SendingMailSetup=Nastavitev pošiljanja z elektronsko pošto SendmailOptionNotComplete=Pozor, na nekaterih Linux sistemih mora za pošiljanje pošte z vašega naslova nastavitev vsebovati opcijo -ba (parameter mail.force_extra_parameters v vaši datoteki php.ini). Če nekateri prejemniki nikoli ne dobijo pošte, poskusite popraviti PHP parameter z mail.force_extra_parameters = -ba). PathToDocuments=Pot do dokumentov PathDirectory=Mapa -SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might be not correctly parsed by some receiving mail servers. Result is that some mails can't be read by people hosted by those bugged platforms. It's case for some Internet providers (Ex: Orange in France). This is not a problem into Dolibarr nor into PHP but onto receiving mail server. You can however add option MAIN_FIX_FOR_BUGGED_MTA to 1 into setup - other to modify Dolibarr to avoid this. However, you may experience problem with other servers that respect strictly the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" that has no disadvantages. +SendmailOptionMayHurtBuggedMTA=Funkcija za pošiljanje pošte z uporabo metode "PHP mail DIRECT" bo ustvarila poštno sporočilo, ki ga morda nekateri poštni strežniki ne bodo pravilno razčlenili. Posledica tega je, da nekatere pošte ne bodo mogli brati uporabniki, ki gostujejo na takih platformah. To veljalo za nekaj internetnih ponudnikov (npr.: Orange v Franciji). Problem ni v Dolibarr niti v PHP, ampak v sprejemanju poštnega strežnika. Lahko pa v nastavitvah dodate opcijo MAIN_FIX_FOR_BUGGED_MTA kot 1. v setup, da bi se temu izognili brez modifikacije Dolibarr. Vendar pa lahko pride do težav z drugimi strežniki, ki strogo spoštujejo SMTP standard. Druga rešitev (priporočena) je uporaba metode "SMTP socket knjižnice", ki nima teh slabosti. TranslationSetup=Konfiguracija prevoda TranslationDesc=Izbira na zaslonu vidnega jezika se lahko spremeni:
* Globalno preko menija Domov - Nastavitve - Prikaz
* Samo za uporabnike preko zavihka Nastavitev zaslona uporabnika (klik na login na vrhu ekrana). TotalNumberOfActivatedModules=Skupno število aktiviranih modulov za lastnosti: %s @@ -1061,7 +1061,7 @@ BrowserIsOK=Uporabljate spletni brskalnik %s. Ta brskalnik je ustrezen tako gled BrowserIsKO=Uporabljate spletni brskalnik %s. Ta brskalnik je slaba izbira glede varnosti, zmogljivosti in zanesljivosti. Priporočamo uporabo Firefox, Chrome, Opera ali Safari. XDebugInstalled=Naložen je XDebug XCacheInstalled=Naložen je XCache. -AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink. Third parties will appears with name "CC12345 - SC45678 - The big company coorp", instead of "The big company coorp". +AddRefInList=Prikaz referenčnega seznama kupcev/dobaviteljev (izberite seznam ali combobox) in večine hiper povezav. Partnerji bodo prikazani z imenom "CC12345 - SC45678 - The big company coorp", namesto kot "The big company coorp". FieldEdition=%s premenjenih polj FixTZ=Fiksiranje časovne cone FillThisOnlyIfRequired=Primer: +2 (uporabite samo, če se pojavijo težave s časovno cono) @@ -1087,7 +1087,7 @@ ModuleCompanyCodeAquarium=Predlaga računovodsko kodo, sestavljeno iz "401" in k ModuleCompanyCodePanicum=Predlaga prazno računovodsko kodo. ModuleCompanyCodeDigitaria=Računovodska koda je odvisna od kode partnerja. Koda je sestavljena iz črke "C" prvih 5 znakov kode partnerja. UseNotifications=Uporaba sporočil -NotificationsDesc=EMails notifications feature allows you to silently send automatic mail, for some Dolibarr events. Targets of notifications can be defined:
* per third parties contacts (customers or suppliers), one third party at time.
* or by setting a global target email address on module setup page. +NotificationsDesc=Funkcija sporočil po E-pošti omogoča tiho pošiljanje avtomatskih e-mailov o nekaterih Dolibarr dogodkih. Ciljo obvestil so lahko definirani kot:
* kontakti pri partnerjih (kupcih ali dobaviteljih), en partner naenkrat.
* ali z nastavitvijo globalnega ciljnega email naslova na strani za nastavitev modula. ModelModules=Predloge dokumentov DocumentModelOdt=Ustvari dokumente iz predlog OpenDocuments (.ODT ali .ODS datoteke v programih OpenOffice, KOffice, TextEdit ,...) WatermarkOnDraft=Vodni žig na osnutku dokumenta @@ -1151,7 +1151,7 @@ AddDeliveryAddressAbility=Dodaj možen datum dobave UseOptionLineIfNoQuantity=Vrstica proizvoda/storitve z vrednostjo 0 se smatra kot opcija FreeLegalTextOnProposal=Poljubno besedilo na komercialni ponudbi WatermarkOnDraftProposal=Vodni tisk na osnutkih komercialnih ponudb (brez, če je prazno) -BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Vprašajte za ciljni bančni račun ponudbe ##### Orders ##### OrdersSetup=Nastavitve upravljanja z naročili OrdersNumberingModules=Moduli za številčenje naročil @@ -1161,7 +1161,7 @@ ValidOrderAfterPropalClosed=Za potrditev naročila po zaključku ponudbe, naj ne FreeLegalTextOnOrders=Poljubno besedilo na naročilih WatermarkOnDraftOrders=Vodni tisk na osnutkih naročil (brez, če je prazno) ShippableOrderIconInList=Dodaj ikono na seznamnaročil, ki označuje, če je naročilo pripravljeno za odpremo -BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Vprašaj za končni bančni račun naročila ##### Clicktodial ##### ClickToDialSetup=Nastavitve modula za klicanje s klikom ClickToDialUrlDesc=Po kliku na piktogram se izvede klic na Url. Na url lahko uporabite ikono
__PHONETO__ ki predstavlja telefon klicanega
__PHONEFROM__ ki predstavlja telefon klicatelja (vaša številka)
__LOGIN__ ki predstavlja vašo prijavo na klicanje s klikom (določena z vašo uporabniško kodo)
__PASS__ ki predstavlja vaše geslo za klicanje s klikom (določena z vašo uporabniško kodo). @@ -1326,8 +1326,8 @@ YouMayFindPerfAdviceHere=Na tej strani najdete nekaj kontrol ali nasvetov, povez NotInstalled=Ni nameščeno, zato to ni vzrok počasnosti strežnika ApplicativeCache=Aplikativni predpomnilnik MemcachedNotAvailable=Ni najden aplikativni predpomnilnik. Zmogljivost lahko izboljšate z namestitvijo predpomnilniškega strežnika Memcached in modula, ki zna uporabljati ta predpomnilniški strežnik.
Več informacij najdete tukaj http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
Vedite, da veliko gostiteljev spletnih strani ne zagotavlja takega predpomnilniškega strežnika.. -MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. -MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +MemcachedModuleAvailableButNotSetup=Najden je predpomnilniški modul za aplikativni predpomnilnik, vendar nastavitev modula ni zaključena. +MemcachedAvailableAndSetup=Vklopljen je predpomnilniški modul za predpomnilniški strežnik. OPCodeCache=OPCode predpomnilnik NoOPCodeCacheFound=Ni najden OPCode predpomnilnik. Morda uporabljate drugačen OPCode predpomnilnik, kot sta XCache ali eAccelerator (v redu), morda pa nimate OPCode predpomnilnika (zelo slabo). HTTPCacheStaticResources=HTTP predpomnilnik za statične vire (css, img, javascript) @@ -1397,19 +1397,19 @@ RSSUrlExample=Zanimiv vir RSS MailingSetup=Nastavitev E-mail modula MailingEMailFrom=Naslov pošiljatelja (Od) za emaile, ki jih pošlje e-mailing modul MailingEMailError=Naslov za vračilo (Napake-za) emailov z napakami -MailingDelay=Seconds to wait after sending next message +MailingDelay=Čakanje v sekundah po pošiljanju naslednjega sporočila ##### Notification ##### NotificationSetup=Nastavitev modula za obvestila po elektronski pošti NotificationEMailFrom=Naslov pošiljatelja (od) za emaile, ki se pošljejo kot obvestila -ListOfAvailableNotifications=List of events you can set notification on, for each thirdparty (go into thirdparty card to setup) or by setting a fixed email (List depends on activated modules) +ListOfAvailableNotifications=Nastavitev dogodkov, za katere lahko pošljete obvestilo, za vsakega partnerja (nastavite na kartici partnerja) ali z nastavitvijo fiksnega emaila (seznam je odvisen od aktiviranega modula) FixedEmailTarget=Popravi ciljni email ##### Sendings ##### SendingsSetup=Nastavitev modula za pošiljanje SendingsReceiptModel=Obrazci odpremnic SendingsNumberingModules=Moduli za številčenje pošiljk -SendingsAbility=Support shipment sheets for customer deliveries +SendingsAbility=Podpora za odpremnice za dobavo kupcem NoNeedForDeliveryReceipts=V večini primerov se dobavnice uporabljajo tako kot dokument za dostavo kupcem (seznam proizvodov, ki jih je potrebno poslati), kakor tudi kot dokument, ki ga dobi in podpiše kupec. Zato je odpremnica podvojena funkcija, ki je redko aktivirana. -FreeLegalTextOnShippings=Free text on shipments +FreeLegalTextOnShippings=Prosti tekst na pošiljkah ##### Deliveries ##### DeliveryOrderNumberingModules=Modul za številčenje dobavnic DeliveryOrderModel=Obrazci dobavnic @@ -1420,7 +1420,7 @@ AdvancedEditor=Napredni urejevalnik ActivateFCKeditor=Aktiviranje FCKeditor za: FCKeditorForCompany=WYSIWIG kreiranje/urejanje opisa podjetij in opomb FCKeditorForProduct=WYSIWIG kreiranje/urejanje opisa proizvodov/storitev in opomb -FCKeditorForProductDetails=WYSIWIG creation/edition of products details lines for all entities (proposals, orders, invoices, etc...). Warning: Using this option for this case is seriously not recommended as it can create problems with special characters and page formating when building PDF files. +FCKeditorForProductDetails=WYSIWIG kreiranje/urejanje vrstic za podrobnosti za vse entitete (ponudbe, naročila, računi, itd...). Opozorilo: Uporaba te opcije resnično ni priporočljiva, ker lahko povzroči težave s posebnimi znaki in formatiranjem strani PDF datotek. FCKeditorForMailing= WYSIWIG kreiranje/urejanje pošte FCKeditorForUserSignature=WYSIWIG kreiranje/urejanje podpisa uporabnika FCKeditorForMail=WYSIWIG kreiranje/urejanje za vse pošte (razen Outils->eMailing) @@ -1432,7 +1432,7 @@ OSCommerceTestKo2=Povezava s strežnikom '%s' uporabnika '%s' ni uspela. ##### Stock ##### StockSetup=Nastavitve modula za skladišče UserWarehouse=Uporabi uporabnikova prilagojena skladišča -IfYouUsePointOfSaleCheckModule=If you use a Point of Sale module (POS module provided by default or another external module), this setup may be ignored by your Point Of Sale module. Most point of sales modules are designed to create immediatly an invoice and decrease stock by default whatever are options here. So, if you need or not to have a stock decrease when registering a sell from your Point Of Sale, check also your POS module set up. +IfYouUsePointOfSaleCheckModule=Če uporabljate prodajni modul (privzeti POS modul ali drug zunanji modul), bo vaš Point Of Sale modul morda ignoriral to nastavitev. Večina prodajnih modulov privzeto takoj ustvari račun in zmanjša zalogo ne glede na opcijo, ki je tukaj izbrana. Če torej želite ali ne želite zmanjšati zalogo ob prodaji preko prodajnega modula, preverite tudi nastavitve vašega prodajnega modula. ##### Menu ##### MenuDeleted=Izbrisan meni TreeMenu=Drevesni meniji @@ -1558,7 +1558,7 @@ ConfirmDeleteFiscalYear=Ali zares želite izbrisati to fiskalni leto? Opened=Odprt Closed=Zaključeno AlwaysEditable=Lahko je vedno urejeno -MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) +MAIN_APPLICATION_TITLE=Prisilni prikaz imena aplikacije (opozorilo: če tukaj nastavite vaše lastno ime, lahko prekinete funkcijo avtomatskega vnosa uporabniškega imena pri uporabi mobilne aplikacije DoliDroid) NbMajMin=Minimalno število velikih črk NbNumMin=Minimalno število cifer NbSpeMin=Minimalno število posebnih znakov @@ -1568,4 +1568,4 @@ SalariesSetup=Nastavitev modula za plače SortOrder=Sortiraj naročilo Format=Format TypePaymentDesc=0:Tip plačila stranke, 1:Tip plačila dobavitelju, 2:Tip plačila stranke in dobavitelju -IncludePath=Include path (defined into variable %s) +IncludePath=Vključi pot (definirana v spremenljivki %s) diff --git a/htdocs/langs/sl_SI/agenda.lang b/htdocs/langs/sl_SI/agenda.lang index c39ca092982..56f78042248 100644 --- a/htdocs/langs/sl_SI/agenda.lang +++ b/htdocs/langs/sl_SI/agenda.lang @@ -58,7 +58,7 @@ OrderSentByEMail=Naročilo kupca %s poslano po elektronski pošti InvoiceSentByEMail=Račun kupcu %s poslan po elektronski pošti SupplierOrderSentByEMail=Naročilo dobavitelju %s poslano po elektronski pošti SupplierInvoiceSentByEMail=Račun odbavitelja %s poslan po elektronski pošti -ShippingSentByEMail=Shipment %s sent by EMail +ShippingSentByEMail=Odpremnica %s poslana po EMailu ShippingValidated= Pošiljka %s potrjena InterventionSentByEMail=Intervencija %s poslana po E-pošti NewCompanyToDolibarr= Kreiran partner @@ -69,7 +69,7 @@ DateActionDoneEnd= Realen končni datum DateActionStart= Začetni datum DateActionEnd= Končni datum AgendaUrlOptions1=V filtriran izhod lahko dodate tudi naslednje parametre: -AgendaUrlOptions2=login=%s to restrict output to actions created by or assigned to user %s. +AgendaUrlOptions2=login=%s za omejitev izhoda na aktivnosti, ki se nanašajo, ali jih je naredil uporabnik %s. AgendaUrlOptions3=logina=%s za omejitev izhoda na aktivnosti v lasti uporabnika %s. AgendaUrlOptions4=logint=%s za omejitev izhoda na aktivnosti, ki se nanašajo na uporabnika %s. AgendaUrlOptionsProject=projekt=PROJECT_ID za omejitev izhoda na aktivnosti povezane s projektomPROJECT_ID. diff --git a/htdocs/langs/sl_SI/bills.lang b/htdocs/langs/sl_SI/bills.lang index d36a19a4f55..7f5af4fc0d5 100644 --- a/htdocs/langs/sl_SI/bills.lang +++ b/htdocs/langs/sl_SI/bills.lang @@ -1,16 +1,16 @@ # Dolibarr language file - Source file is en_US - bills Bill=Račun Bills=Računi -BillsCustomers=Customers invoices -BillsCustomer=Customers invoice -BillsSuppliers=Suppliers invoices -BillsCustomersUnpaid=Unpaid customers invoices +BillsCustomers=Računi za kupce +BillsCustomer=Račun za kupce +BillsSuppliers=Računi dobaviteljev +BillsCustomersUnpaid=Neplačani računi kupcev BillsCustomersUnpaidForCompany=Neplačani računi kupcev za %s BillsSuppliersUnpaid=Neplačani računi dobaviteljev BillsSuppliersUnpaidForCompany=Neplačani računi dobaviteljev za %s BillsLate=Zamujena plačila -BillsStatistics=Customers invoices statistics -BillsStatisticsSuppliers=Suppliers invoices statistics +BillsStatistics=Statistika računov za kupce +BillsStatisticsSuppliers=Statistika računov dobaviteljev DisabledBecauseNotErasable=Onemogočen, ker ni možno brisanje InvoiceStandard=Standardni račun InvoiceStandardAsk=Standardni račun @@ -348,7 +348,7 @@ ChequeNumber=Ček N° ChequeOrTransferNumber=Ček/Prenos N° ChequeMaker=Oddaja čeka ChequeBank=Banka izdajalka čeka -CheckBank=Check +CheckBank=Ček NetToBePaid=Neto za plačilo PhoneNumber=Tel FullPhoneNumber=Telefon @@ -389,7 +389,7 @@ DisabledBecausePayments=Ni možno zaradi nekaterih odprtih plačil CantRemovePaymentWithOneInvoicePaid=Brisanje plačila ni možno, ker je vsaj en račun označen kot plačan ExpectedToPay=Pričakovano plačilo PayedByThisPayment=Plačano s tem plačilom -ClosePaidInvoicesAutomatically=Classify "Paid" all standard, situation or replacement invoices entirely paid. +ClosePaidInvoicesAutomatically=Označi s "Plačano" vse standardne, situacijske ali nadomestne račune, ki so bili v celoti plačani. ClosePaidCreditNotesAutomatically=Označi s "Plačano" vse dobropise, ki so bili v celoti vrnjeni. AllCompletelyPayedInvoiceWillBeClosed=Vsi računi, ki nimajo neplačanih preostankov, bodo avtomatsko zaključeni v status "Plačano". ToMakePayment=Plačati @@ -412,19 +412,19 @@ TypeContact_invoice_supplier_external_BILLING=Kontakt za račun dobavitelja TypeContact_invoice_supplier_external_SHIPPING=Kontakt za pošiljanje pri dobavitelju TypeContact_invoice_supplier_external_SERVICE=Kontakt za servis pri dobavitelju # Situation invoices -InvoiceFirstSituationAsk=First situation invoice -InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. -InvoiceSituation=Situation invoice -InvoiceSituationAsk=Invoice following the situation -InvoiceSituationDesc=Create a new situation following an already existing one -SituationAmount=Situation invoice amount(net) -SituationDeduction=Situation subtraction -Progress=Progress -ModifyAllLines=Modify all lines -CreateNextSituationInvoice=Create next situation -NotLastInCycle=This invoice in not the last in cycle and must not be modified. -DisabledBecauseNotLastInCycle=The next situation already exists. -DisabledBecauseFinal=This situation is final. -CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. -NoSituations=No opened situations -InvoiceSituationLast=Final and general invoice +InvoiceFirstSituationAsk=Račun za prvo situacijo +InvoiceFirstSituationDesc=Situacijski računi so vezani na situacijo glede na napredek, na primer na napredek gradnje. Vska situacija je povezana z računom. +InvoiceSituation=Situacijski račun +InvoiceSituationAsk=Račun, ki sledi situaciji +InvoiceSituationDesc=Ustvari novo situacijo, ki sledi obstoječi +SituationAmount=Vrednost računa za situacijo (neto) +SituationDeduction=Odštevanje situacije +Progress=Napredek +ModifyAllLines=Uredi vse vrstice +CreateNextSituationInvoice=Ustvari naslednjo situacijo +NotLastInCycle=Ta račun ni zadnji v ciklu in ga ne morete spremeniti. +DisabledBecauseNotLastInCycle=Naslednja situacija že obstaja. +DisabledBecauseFinal=Ta situacija je končna. +CantBeLessThanMinPercent=Napredek ne more biti manjši, kot je vrednost prejšnje situacije +NoSituations=Ni odprtih situacij +InvoiceSituationLast=Končni in skupni račun diff --git a/htdocs/langs/sl_SI/donations.lang b/htdocs/langs/sl_SI/donations.lang index 2a962d2375c..b906a96ec9f 100644 --- a/htdocs/langs/sl_SI/donations.lang +++ b/htdocs/langs/sl_SI/donations.lang @@ -33,6 +33,6 @@ IConfirmDonationReception=Prejemnik potrjuje prejem donacije v naslednjem znesku MinimumAmount=Najmanjši znesek je %s FreeTextOnDonations=Poljubno besedilo v nogi FrenchOptions=Opcije za Francijo -DONATION_ART200=Show article 200 from CGI if you are concerned -DONATION_ART238=Show article 238 from CGI if you are concerned -DONATION_ART885=Show article 885 from CGI if you are concerned +DONATION_ART200=Prikaži člen 200 iz CGI, če se vas tiče +DONATION_ART238=Prikaži člen 238 iz CGI, če se vas tiče +DONATION_ART885=Prikaži člen 885 iz CGI, če se vas tiče diff --git a/htdocs/langs/sl_SI/ecm.lang b/htdocs/langs/sl_SI/ecm.lang index 66c349ba002..69d0f8a62bd 100644 --- a/htdocs/langs/sl_SI/ecm.lang +++ b/htdocs/langs/sl_SI/ecm.lang @@ -43,8 +43,8 @@ ECMDocsByContracts=Dokumenti, povezani s pogodbami ECMDocsByInvoices=Dokumenti, povezani z računi za kupce ECMDocsByProducts=Dokumenti, povezani s proizvodi ECMDocsByProjects=Dokumenti, povezani s projekti -ECMDocsByUsers=Documents linked to users -ECMDocsByInterventions=Documents linked to interventions +ECMDocsByUsers=Dokumenti, povezani z uporabniki +ECMDocsByInterventions=Dokumenti, povezani z intervencijami ECMNoDirectoryYet=Ni kreiranih map ShowECMSection=Prikaži mapo DeleteSection=Odstrani mapo diff --git a/htdocs/langs/sl_SI/install.lang b/htdocs/langs/sl_SI/install.lang index 5c0f7032dbb..ca1de1fe210 100644 --- a/htdocs/langs/sl_SI/install.lang +++ b/htdocs/langs/sl_SI/install.lang @@ -155,7 +155,7 @@ MigrationFinished=Prenos končan LastStepDesc=Zadnji korak: Tukaj določite uporabniško ime in geslo, ki ju nameravate uporabiti za priklop v software. Ne izgubite ju, ker je to račun za administriranje vseh ostalih računov. ActivateModule=Vključite modul %s ShowEditTechnicalParameters=Kliknite tukaj za prikaz/popravek naprednih parametrov (expertni način) -WarningUpgrade=Warning:\nDid your run a database backup first ?\nThis is highly recommanded: for example, due to some bugs into databases systems (for example mysql version 5.5.40), some data or tables may be lost during this process, so it is highly recommanded to have a complete dump of your database before starting migration.\n\nClick OK to start migration process... +WarningUpgrade=Pozor:\nAli ste najprej naredili varnostno kopijo baze podatkov ?\nTo je zelo priporočeno: na primer zaradi nekaterih hroščev v sistemu baze podatkov (na primer mysql verzija 5.5.40), lahko med tem postopkom izgubite nekatere podatke ali tabele, zato je priporočeno imeti celotno kopijo vaše baze podatkov pred začetkom migracije.\n\nKliknite OK za začetek procesa migracije... ######### # upgrade @@ -207,7 +207,7 @@ MigrationProjectTaskTime=Posodobitev porabljenega časa v sekundah MigrationActioncommElement=Posodobitev podatkov o aktivnostih MigrationPaymentMode=Podatki, migracije za način plačila MigrationCategorieAssociation=Migracija kategorij -MigrationEvents=Migration of events to add event owner into assignement table +MigrationEvents=Migracija dogodkov za dodajanje lastnika dogodka v dodelitveno tabelo ShowNotAvailableOptions=Prikaži opcije, ki niso na voljo HideNotAvailableOptions=Skrij opcije, ki niso na voljo diff --git a/htdocs/langs/sl_SI/interventions.lang b/htdocs/langs/sl_SI/interventions.lang index 011f1e1874a..deb46330661 100644 --- a/htdocs/langs/sl_SI/interventions.lang +++ b/htdocs/langs/sl_SI/interventions.lang @@ -24,8 +24,8 @@ NameAndSignatureOfInternalContact=Ime in podpis serviserja : NameAndSignatureOfExternalContact=Ime in podpis kupca : DocumentModelStandard=Standardni vzorec dokumenta za intervencijo InterventionCardsAndInterventionLines=Intervencije in vrstice na intervenciji -InterventionClassifyBilled=Classify "Billed" -InterventionClassifyUnBilled=Classify "Unbilled" +InterventionClassifyBilled=Označi kot "Zaračunano" +InterventionClassifyUnBilled=Označi kot "Nezaračunano" StatusInterInvoiced=Zaračunano RelatedInterventions=Odvisne intervencije ShowIntervention=Prikaži intervencijo @@ -34,8 +34,8 @@ SendInterventionByMail=Pošlji intervencijo po E-pošti InterventionCreatedInDolibarr=Intervencija %s je ustvarjena InterventionValidatedInDolibarr=Intervencija %s je potrjena InterventionModifiedInDolibarr=Intervencija %s je spremenjena -InterventionClassifiedBilledInDolibarr=Intervention %s set as billed -InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled +InterventionClassifiedBilledInDolibarr=Intervencijo %s označi kot "zaračunana" +InterventionClassifiedUnbilledInDolibarr=Intervencijo %s označi kot "nezaračunana" InterventionSentByEMail=Intervencija %s je poslana po E-pošti InterventionDeletedInDolibarr=Intervencija %s je izbrisana SearchAnIntervention=Poišči intervencijo diff --git a/htdocs/langs/sl_SI/main.lang b/htdocs/langs/sl_SI/main.lang index ca5df136e0f..fce08c4ae5f 100644 --- a/htdocs/langs/sl_SI/main.lang +++ b/htdocs/langs/sl_SI/main.lang @@ -261,7 +261,7 @@ days=dni Hours=Ur Minutes=Minut Seconds=Sekund -Weeks=Weeks +Weeks=Tednov Today=Danes Yesterday=Včeraj Tomorrow=Jutri diff --git a/htdocs/langs/sl_SI/orders.lang b/htdocs/langs/sl_SI/orders.lang index 5a35df6b8bb..876d57cf02b 100644 --- a/htdocs/langs/sl_SI/orders.lang +++ b/htdocs/langs/sl_SI/orders.lang @@ -16,20 +16,20 @@ SupplierOrder=Naročilo pri dobavitelju SuppliersOrders=Naročila pri dobaviteljih SuppliersOrdersRunning=Trenutna naročila pri dobaviteljih CustomerOrder=Naročilo kupca -CustomersOrders=Customers orders +CustomersOrders=Naročila kupcev CustomersOrdersRunning=Trenutna naročila kupcev CustomersOrdersAndOrdersLines=Naročila kupcev in vrstice naročil -OrdersToValid=Customers orders to validate -OrdersToBill=Customers orders delivered -OrdersInProcess=Customers orders in process -OrdersToProcess=Customers orders to process +OrdersToValid=Naročila kupcev za potrditev +OrdersToBill=Naročila kupcev za fakturiranje +OrdersInProcess=Naročila kupcev v obdelavi +OrdersToProcess=Naročila kupcev za obdelavo SuppliersOrdersToProcess=Naročila pri dobaviteljih za obdelavo StatusOrderCanceledShort=Preklicano StatusOrderDraftShort=Osnutek StatusOrderValidatedShort=Potrjeno StatusOrderSentShort=V postopku StatusOrderSent=Pošiljanje v teku -StatusOrderOnProcessShort=Ordered +StatusOrderOnProcessShort=Naročeno StatusOrderProcessedShort=Obdelano StatusOrderToBillShort=Za fakturiranje StatusOrderToBill2Short=Za fakturiranje @@ -41,7 +41,7 @@ StatusOrderReceivedAllShort=Prejeto v celoti StatusOrderCanceled=Preklicano StatusOrderDraft=Osnutek (potrebno potrditi) StatusOrderValidated=Potrjeno -StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcess=Naročeno - čaka na prevzem StatusOrderProcessed=Obdelano StatusOrderToBill=Za fakturiranje StatusOrderToBill2=Za fakturiranje @@ -50,8 +50,8 @@ StatusOrderRefused=Zavrnjeno StatusOrderReceivedPartially=Delno prejeto StatusOrderReceivedAll=Prejeto v celoti ShippingExist=Pošiljka ne obstaja -ProductQtyInDraft=Product quantity into draft orders -ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +ProductQtyInDraft=Količina proizvoda v osnutkih naročil +ProductQtyInDraftOrWaitingApproved=Količina proizvoda v osnutku ali odobrenem naročilu, ki še ni naročen DraftOrWaitingApproved=Osnutek ali odobritev, še ne naročen DraftOrWaitingShipped=Osnutek ali potrditev, še ne odposlan MenuOrdersToBill=Naročila za fakturiranje diff --git a/htdocs/langs/sl_SI/other.lang b/htdocs/langs/sl_SI/other.lang index bfc24608cb5..20246977b5e 100644 --- a/htdocs/langs/sl_SI/other.lang +++ b/htdocs/langs/sl_SI/other.lang @@ -47,7 +47,7 @@ Notify_PROJECT_CREATE=Ustvarjanje projekta Notify_TASK_CREATE=Ustvarjena naloga Notify_TASK_MODIFY=Spremenjena naloga Notify_TASK_DELETE=Izbrisana naloga -SeeModuleSetup=See module setup +SeeModuleSetup=Glejte nastavitev modula NbOfAttachedFiles=Število pripetih datotek/dokumentov TotalSizeOfAttachedFiles=Skupna velikost pripetih datotek/dokumentov MaxSize=Največja velikost @@ -203,26 +203,26 @@ ForgetIfNothing=Če niste zahtevali te spremembe, enostavno pozabite na ta email ##### Calendar common ##### AddCalendarEntry=Dodaj vnos v koledar %s -NewCompanyToDolibarr=Company %s added -ContractValidatedInDolibarr=Contract %s validated -ContractCanceledInDolibarr=Contract %s canceled -ContractClosedInDolibarr=Contract %s closed -PropalClosedSignedInDolibarr=Proposal %s signed -PropalClosedRefusedInDolibarr=Proposal %s refused -PropalValidatedInDolibarr=Proposal %s validated -PropalClassifiedBilledInDolibarr=Proposal %s classified billed -InvoiceValidatedInDolibarr=Invoice %s validated -InvoicePaidInDolibarr=Invoice %s changed to paid -InvoiceCanceledInDolibarr=Invoice %s canceled -PaymentDoneInDolibarr=Payment %s done -CustomerPaymentDoneInDolibarr=Customer payment %s done -SupplierPaymentDoneInDolibarr=Supplier payment %s done -MemberValidatedInDolibarr=Member %s validated -MemberResiliatedInDolibarr=Member %s resiliated -MemberDeletedInDolibarr=Member %s deleted -MemberSubscriptionAddedInDolibarr=Subscription for member %s added -ShipmentValidatedInDolibarr=Shipment %s validated -ShipmentDeletedInDolibarr=Shipment %s deleted +NewCompanyToDolibarr=Podjetje %s dodano +ContractValidatedInDolibarr=Pogodba %s potrjena +ContractCanceledInDolibarr=Pogodba %s preklicana +ContractClosedInDolibarr=Pogodba %s zaključena +PropalClosedSignedInDolibarr=Ponudba %s podpisana +PropalClosedRefusedInDolibarr=Ponudba %s zavrnjena +PropalValidatedInDolibarr=Ponudba %s potrjena +PropalClassifiedBilledInDolibarr=Ponudba %s je označena kot "zaračunana" +InvoiceValidatedInDolibarr=Račun %s potrjen +InvoicePaidInDolibarr=Račun %s spremenjen v 'plačano' +InvoiceCanceledInDolibarr=Račun %s preklican +PaymentDoneInDolibarr=Plačilo %s izvršeno +CustomerPaymentDoneInDolibarr=Plačilo kupca %s izvršeno +SupplierPaymentDoneInDolibarr=Plačilo dobavitelju %s izvršeno +MemberValidatedInDolibarr=Član %s potrjen +MemberResiliatedInDolibarr=Član %s obnovljen +MemberDeletedInDolibarr=Član %s izbrisan +MemberSubscriptionAddedInDolibarr=Naročnina za člana %s dodana +ShipmentValidatedInDolibarr=Pošiljka %s potrjena +ShipmentDeletedInDolibarr=Pošiljka %s izbrisana ##### Export ##### Export=Izvoz ExportsArea=Področje izvoza diff --git a/htdocs/langs/sl_SI/paybox.lang b/htdocs/langs/sl_SI/paybox.lang index 00476aa7811..bff0e3496fd 100644 --- a/htdocs/langs/sl_SI/paybox.lang +++ b/htdocs/langs/sl_SI/paybox.lang @@ -35,6 +35,6 @@ MessageKO=Sporočilo na strani za preklic plačila NewPayboxPaymentReceived=Novo Paybox plačilo prejeto NewPayboxPaymentFailed=Zavrnjen poskus novega Paybox plačila PAYBOX_PAYONLINE_SENDEMAIL=E-poštno opozorilo po plačilu (uspešno ali zavrnjeno) -PAYBOX_PBX_SITE=Value for PBX SITE -PAYBOX_PBX_RANG=Value for PBX Rang -PAYBOX_PBX_IDENTIFIANT=Value for PBX ID +PAYBOX_PBX_SITE=Vrednost za PBX SITE +PAYBOX_PBX_RANG=Vrednost za PBX Rang +PAYBOX_PBX_IDENTIFIANT=Vrednost za PBX ID diff --git a/htdocs/langs/sl_SI/products.lang b/htdocs/langs/sl_SI/products.lang index f138b225db2..1af1122f798 100644 --- a/htdocs/langs/sl_SI/products.lang +++ b/htdocs/langs/sl_SI/products.lang @@ -22,16 +22,16 @@ ProductAccountancySellCode=Računovodski konto (prodaja) ProductOrService=Proizvod ali storitev ProductsAndServices=Proizvodi in storitve ProductsOrServices=Proizvodi ali storitve -ProductsAndServicesOnSell=Products and Services for sale or for purchase -ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesOnSell=Proizvodi in storitve za prodajo ali nabavo +ProductsAndServicesNotOnSell=Proizvodi in storitve, ki se ne prodajajo več ProductsAndServicesStatistics=Statistika proizvodov in storitev ProductsStatistics=Statistika proizvodov -ProductsOnSell=Product for sale or for pruchase -ProductsNotOnSell=Product out of sale and out of purchase -ProductsOnSellAndOnBuy=Products for sale and for purchase -ServicesOnSell=Services for sale or for purchase -ServicesNotOnSell=Services out of sale -ServicesOnSellAndOnBuy=Services for sale and for purchase +ProductsOnSell=Proizvodi za prodajo ali nabavo +ProductsNotOnSell=Proizvodi, ki se ne prodajajo ali nabavljajo več +ProductsOnSellAndOnBuy=Proizvodi za prodajo ali nabavo +ServicesOnSell=Storitve za prodajo ali za nakup +ServicesNotOnSell=Storitve, ki se ne prodajajo več +ServicesOnSellAndOnBuy=Storitve za prodajo ali za nabavo InternalRef=Interna referenca LastRecorded=Zadnji vneseni proizvodi/storitve za prodajo LastRecordedProductsAndServices=Zadnjih %s vnesenih proizvodov/storitev @@ -198,7 +198,7 @@ HelpAddThisServiceCard=Ta opcija omogoča ustvarjanje ali kloniranje storitve, CurrentProductPrice=Trenutna cena AlwaysUseNewPrice=Vedno uporabi trenutno ceno proizvoda/storitve AlwaysUseFixedPrice=Uporabi fiksno ceno -PriceByQuantity=Different prices by quantity +PriceByQuantity=Različne cene glede na količino PriceByQuantityRange=Območje količin ProductsDashboard=Povzetek proizvodov/storitev UpdateOriginalProductLabel=Spremeni originalni naziv @@ -234,9 +234,9 @@ DefinitionOfBarCodeForThirdpartyNotComplete=Definicija tipa ali vrednosti črtne BarCodeDataForProduct=Informacija o črtni kodi proizvoda %s : BarCodeDataForThirdparty=Informacija o črtni kodi partnerja %s : ResetBarcodeForAllRecords=Določite vrednost črtnih kod za vse zapise (s tem boste tudi resetirali že določene vrednosti črtnih kod na novo vrednost) -PriceByCustomer=Different price for each customer +PriceByCustomer=Različne cene za vsakega kupca PriceCatalogue=Enolična cena po proizvodu/storitvi -PricingRule=Rules for customer prices +PricingRule=Pravila za cene za kupce AddCustomerPrice=Dodaj ceno po strankah ForceUpdateChildPriceSoc=Določi enako ceno za podružnice stranke PriceByCustomerLog=Cena po imenu stranke @@ -244,9 +244,9 @@ MinimumPriceLimit=Minimalna cena ne more biti nižja od %s MinimumRecommendedPrice=Minimalna priporočena cena je : %s PriceExpressionEditor=Urejevalnik prikaza cene PriceExpressionSelected=Izbran prikaz cene -PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions -PriceExpressionEditorHelp2=You can access ExtraFields with variables like #options_myextrafieldkey# -PriceExpressionEditorHelp3=In both product/service and supplier prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# -PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In supplier prices only: #supplier_quantity# and #supplier_tva_tx# +PriceExpressionEditorHelp1="cena = 2 + 2" ali "2 + 2" za nastavitev cene. Uporabite ; za ločitev izrazov +PriceExpressionEditorHelp2=Lahko dostopate do EkstraPolj s spremenljivkami kot #options_myextrafieldkey# +PriceExpressionEditorHelp3=Tako za proizvode/storitve, kot za nabavne cene, so na voljo naslednje spremenljivke:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=Samo za cene proizvodov/storitev: #supplier_min_price#
Samo za nabavne cene: #supplier_quantity# in #supplier_tva_tx# PriceMode=Način cene PriceNumeric=Številka diff --git a/htdocs/langs/sl_SI/stocks.lang b/htdocs/langs/sl_SI/stocks.lang index ba998c6558a..3f37e27fd3b 100644 --- a/htdocs/langs/sl_SI/stocks.lang +++ b/htdocs/langs/sl_SI/stocks.lang @@ -47,9 +47,9 @@ PMPValue=Uravnotežena povprečna cena PMPValueShort=UPC EnhancedValueOfWarehouses=Vrednost skladišč UserWarehouseAutoCreate=Avtomatsko ustvari zalogo, ko kreirate uporabnika -QtyDispatched=Prejeta količina -QtyDispatchedShort=Qty dispatched -QtyToDispatchShort=Qty to dispatch +QtyDispatched=Odposlana količina +QtyDispatchedShort=Odposlana količina +QtyToDispatchShort=Količina za odpošiljanje OrderDispatch=Dobavljena naročila RuleForStockManagementDecrease=Pravilo za upravljanje zmanjšanja zalog RuleForStockManagementIncrease=Pravilo za upravljanje povečanja zalog @@ -61,7 +61,7 @@ ReStockOnValidateOrder=Povečanje dejanske zaloge po potrditvi naročila (pozor, ReStockOnDispatchOrder=Povečanje dejanske zaloge po ročnem vnosu v skladišče, po prejemu naročila od dobavitelja ReStockOnDeleteInvoice=Povečaj dejansko zalogo ob brisanju računa OrderStatusNotReadyToDispatch=Naročilo še nima ali nima več statusa, ki omogoča odpremo proizvoda iz skladišča. -StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock +StockDiffPhysicTeoric=Razlaga razlike med knjižno in dejansko zalogo NoPredefinedProductToDispatch=Za ta objekt ni preddefiniranih proizvodov. Zato ni potrebna odprema iz skladišča. DispatchVerb=Odprema StockLimitShort=Omejitev za opozorilo @@ -118,15 +118,15 @@ MassMovement=Masovni premik MassStockMovement=Masovni premik zaloge SelectProductInAndOutWareHouse=Izberi proizvod, količino, izvorno skladišče in ciljno skladišče, nato klikni "%s". Ko je to narejeno za vse zahtevane premike, klikni na "%s". RecordMovement=Zapis prenešen -ReceivingForSameOrder=Receipts for this order +ReceivingForSameOrder=Prevzem tega naročila StockMovementRecorded=Zapisan premik zaloge RuleForStockAvailability=Pravila za zahtevane zaloge StockMustBeEnoughForInvoice=Nivo zaloge mora biti dovolj visok za dodajanje proizvoda/storitve na račun StockMustBeEnoughForOrder=Nivo zaloge mora biti dovolj visok za dodajanje proizvoda/storitve na naročilo StockMustBeEnoughForShipment= Nivo zaloge mora biti dovolj visok za dodajanje proizvoda/storitve na odpremnico -MovementLabel=Label of movement -InventoryCode=Movement or inventory code -IsInPackage=Contained into package -ShowWarehouse=Show warehouse -MovementCorrectStock=Stock content correction for product %s -MovementTransferStock=Stock transfer of product %s into another warehouse +MovementLabel=Nalepka gibanja +InventoryCode=Koda gibanja ali zaloge +IsInPackage=Vsebina paketa +ShowWarehouse=Prikaži skladišče +MovementCorrectStock=Popravek količine zaloge za proizvod %s +MovementTransferStock=Skladiščni prenos proizvoda %s v drugo skladišče diff --git a/htdocs/langs/sl_SI/suppliers.lang b/htdocs/langs/sl_SI/suppliers.lang index 0d020592c7f..a19e3dab7e5 100644 --- a/htdocs/langs/sl_SI/suppliers.lang +++ b/htdocs/langs/sl_SI/suppliers.lang @@ -42,5 +42,5 @@ NoneOrBatchFileNeverRan=Nobena datoteka ali paket %s nedavno ni bila zagn SentToSuppliers=Pošlji dobaviteljem ListOfSupplierOrders=Seznam naročil dobaviitelja MenuOrdersSupplierToBill=Zaračunavanje naročil dobavitelja -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest delay is display among order product list +NbDaysToDelivery=Zakasnitev dobave v dnevih +DescNbDaysToDelivery=Največja zakasnitev je prikazana med seznami naročenih proizvodov diff --git a/htdocs/langs/sl_SI/withdrawals.lang b/htdocs/langs/sl_SI/withdrawals.lang index 0ab9910e92f..989d8223eeb 100644 --- a/htdocs/langs/sl_SI/withdrawals.lang +++ b/htdocs/langs/sl_SI/withdrawals.lang @@ -79,7 +79,7 @@ CreditDate=Datum kredita WithdrawalFileNotCapable=Ni možno generirati datoteke za prejem nakazil za vašo državo %s (vaša država ni podprta) ShowWithdraw=Prikaži nakazilo IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Vendar, če ima račun najmanj eno neizvršeno nakazilo, ne bo označeno kot plačano, da bi bilo pred tem možno izvršiti nakazilo. -DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +DoStandingOrdersBeforePayments=Preko tega zavihka lahko zahtevate trajnik. Po zaključku lahko preko menija Banka->Nakazila upravljate trajnike. Ko je trajnik zaprt, se avtomatsko zapišejo plačila računa in račun se zapre, če ni preostanka za plačilo. WithdrawalFile=Datoteka nakazila SetToStatusSent=Nastavi status na "Datoteka poslana" ThisWillAlsoAddPaymentOnInvoice=S tem bodo plačila povezana z računi, ki bodo spremenili status v "Plačano" diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index fb42b9b001a..221e8331c9f 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -84,7 +84,7 @@ NextValueForReplacements=Sonraki değer (yenileme) MustBeLowerThanPHPLimit=Not: PHP niz yüklenen her dosyanın boyutunu, parametrelerin değeri ne olursa olsun %s %s ile sınırlandırır NoMaxSizeByPHPLimit=Not: PHP yapılandırmanızda hiç sınır ayarlanmamış MaxSizeForUploadedFiles=Yüklenen dosyalar için ençok boyut (herhangi bir yüklemeye izin vermemek için 0 a ayarlayın) -UseCaptchaCode=Kullanıcı girişi sayfasında grafiksel kod (CAPTCHA) kullan +UseCaptchaCode=Oturum açma sayfasında grafiksel kod (CAPTCHA) kullan UseAvToScanUploadedFiles=Yüklenen dosyaların taranması için anti-virüs kullan AntiVirusCommand= Antivirüs komutu tam yolu AntiVirusCommandExample= ClamWin için örnek: c:\\Progra~1\\ClamWin\\bin\\clamscan.exe
ClamAv için örnek: /usr/bin/clamscan @@ -324,7 +324,7 @@ UMask=Unix/Linux/BSD dosya sisteminde yeni dosyalar için Umask parametresi. UMaskExplanation=Bu parametre Dolibarr tarafından sunucuda oluşturulan dosyaların izinlerini varsayılan olarak tanımlamanıza (örneğin yükleme sırasında) izin verir.
Bu sekizli değer olmalıdır (örneğin, 0666 herkes için okuma ve yazma anlamına gelir).
Bu parametre Windows sunucusunda kullanılmaz. SeeWikiForAllTeam=Tüm oyuncular ve kuruluşlarının tam listesi için wiki sayfalarına bir göz atın UseACacheDelay= Saniye olarak önbellek aktarması tepki gecikmesi (hiç önbellek yoksa 0 ya da boş) -DisableLinkToHelpCenter=Kullanıcı girişi sayfasında "Yardım ya da destek gerekli" bağlantısını gizle +DisableLinkToHelpCenter=oturum açma sayfasında "Yardım ya da destek gerekli" bağlantısını gizle DisableLinkToHelp=Sol menüde "%s Çevrimiçi yardım" bağlantısını gizle AddCRIfTooLong=Otomatik kaydırma yoktur, yani belge üzerinde çok uzun olmasından dolayı satır sayfa sınırı dışına çıkmışsa metin alanında kendiniz satırbaşı yapmalısınız. ModuleDisabled=Modül devre dışı @@ -895,7 +895,7 @@ DefaultSkin=Varsayılan dış görünüm teması MaxSizeList=Listenin ençok uzunluğu DefaultMaxSizeList=Liste için varsayılan ençok uzunluk MessageOfDay=Günün mesajı -MessageLogin=Kullanıcı girişi sayfası mesajı +MessageLogin=Oturum açma sayfası mesajı PermanentLeftSearchForm=Sol menüdeki sabit arama formu DefaultLanguage=Kullanılan varsayılan dil (dil kodu) EnableMultilangInterface=Çoklu dil arayüzünü etkinleştir @@ -998,7 +998,7 @@ BackupDescY=Üretilen bilgi döküm dosyası güvenli bir yerde korunmalıdır. BackupPHPWarning=Bu yöntemle yedekleme garanti edilmez. Öncekini yeğleyin RestoreDesc=Bir Dolibarr yedeklemesini geri yüklemek için şunları yapmalısınız: RestoreDesc2=Yeni Dolibarr kurulum dizini belgeleri dosyaların ağaç ayıklamak için veya bu belgeleri geçerli dizinle içine (% s) listesi arşiv dosyası belgeleri (örneğin zip dosyası) Restore. * Belge dizini arşiv dosyalarını yeni Dolibarr kurulumundaki ya da bu geçerli belge dizinindeki dizine ayıklamak için geri yükleyin(%s). -RestoreDesc3=* Bir yedek dökümü dosyasından, yeni Dolibarr yükleme veritabanına verileri geri yükleyin veya bu geçerli yükleme veritabanına geri yükleyin. Uyarı, geri yükleme bir kez tamamlandığında, yeniden bağlanmak için yedekleme yapılırken varolan bir Kullanıcı girişi / parola kullanmanız gerekir. Bu geçerli yükleme içine yedekleme veritabanını geri yüklemek için, bu yardımcıyı takip edebilirsiniz. +RestoreDesc3=* Bir yedek dökümü dosyasından, yeni Dolibarr yükleme veritabanına verileri geri yükleyin veya bu geçerli yükleme veritabanına geri yükleyin. Uyarı, geri yükleme bir kez tamamlandığında, yeniden bağlanmak için yedekleme yapılırken varolan bir kullanıcı adı/parola kullanmanız gerekir. Bu geçerli yükleme içine yedekleme veritabanını geri yüklemek için, bu yardımcıyı takip edebilirsiniz. RestoreMySQL=MySQL içeaktar ForcedToByAModule= Bu kural bir aktif modül tarafından s ye zorlanır PreviousDumpFiles=Mevcut veritabanı yedekleme dosyaları dökümü @@ -1014,13 +1014,13 @@ TranslationUncomplete=Kısmi çeviri SomeTranslationAreUncomplete=Bazı diller kısmi olarak çevrilmiş ya da hatalar içeriyor olabilir. Bazılarını belirlerseniz, dil dosyalarını buraya kayıt ederek düzeltebilirsiniz http://transifex.com/projects/p/dolibarr/. MenuUseLayout=Dikey menüyü gizlenebilir yap (javascript seçeneği devre dışı olmamalıdır) MAIN_DISABLE_METEO=Meteo görünümünü engelle -TestLoginToAPI=API kullanıcı girişi denemesi +TestLoginToAPI=API oturum açma denemesi ProxyDesc=Dolibarr’ın bazı özelliklerinin çalışması için internet erişimi olması gerekir. Bunun için burada parametreleri tanımlayın. Dolibarr sunucusu bir proxy sunucu arkasında ise, bu parametreler üzerinden Internet erişiminin nasıl olacağını Dolibarr’a söyler. ExternalAccess=Dış erişim MAIN_PROXY_USE=Bir proxy sunucusu kullan (aksi takdirde internete doğrudan erişin) MAIN_PROXY_HOST=Proxy sunucusu Adı/Adresi MAIN_PROXY_PORT=Proxy sunucusu portu -MAIN_PROXY_USER=Proxy sunucusu kullanacak giriş +MAIN_PROXY_USER=Proxy sunucusunu kulanmak için oturum açma MAIN_PROXY_PASS=Proxy sunucusunu kullanacak parola DefineHereComplementaryAttributes=Burada bütün öznitelikleri tanımlayın, yalnızca mevcut varsayılanları değil desteklenmenizi istediğiniz %s leri de. ExtraFields=Tamamlayıcı öznitelikler @@ -1044,7 +1044,7 @@ PathToDocuments=Belgelerin yolu PathDirectory=Dizin SendmailOptionMayHurtBuggedMTA="PHP doğrudan posta" yöntemini kullanarak postalar gönderme özelliği bazı posta alıcısı sunucuları tarafından doğru olarak çözümlenemeyen bir posta iletisi oluşturur. Sonuç ise bazı postaların hatalı platformlar tarafından barındırılan kişiler tarafından okunamaz olmasıdır. Bu durum bazı İnternet sağlayıcılarına özgüdür (Örn: Fransa’daki Orange gibi). Bu Dolibarr ya da PHP için bir sorun değildir ama alıcı posta sunucusu için sorundur. Ancak Dolibarr’ı bundan korumak için Kurulum->Diğer de MAIN_FIX_FOR_BUGGED_MTA yı 1 yapma seçeneğini ekleyebilirsiniz. Ancak SMTP standartlarına sıkıca uyan diğer servislerde sorunla karşılaşabilirsiniz. Diğer bir çözüm (önerilen) ise hiçbir sakıncası olmayan "SMTP soket kütüphanesi" ni kullanmaktır. TranslationSetup=Çeviri yapılandırması -TranslationDesc=Ekran görüntüsündeki dil değiştirilebilir:
* Genel olarak bu menüden Giriş - Kurulum - Görünüm
* Yalnızca User display sekmesindeki kullanıcı formundan (ekranın tepesindeki girişe tıklayın). +TranslationDesc=Ekran görüntüsündeki dil değiştirilebilir:
* Genel olarak bu menüden Giriş - Kurulum - Görünüm
* Yalnızca User display sekmesindeki kullanıcı formundan (ekranın tepesindeki oturum aça tıklayın). TotalNumberOfActivatedModules=Toplam etkin özel modül sayısı: %s YouMustEnableOneModule=Enaz 1 modül etkinleştirmelisiniz ClassNotFoundIntoPathWarning=Sınıf %s PHP youlnda bulunamadı @@ -1076,7 +1076,7 @@ GeneratePassword=Oluşturulmuş bir şifre önerin RuleForGeneratedPasswords=Önerilen parola oluşturmak ya da parola doğrulamak için kural DoNotSuggest=Herhangi bir parola önermeyin EncryptedPasswordInDatabase=Veritabanındaki parolanın şifrelendirilmesine izin vermek için -DisableForgetPasswordLinkOnLogonPage=Kullanıcı girişi sayfasında “Parola unutuldu” bağlantısını gösterme +DisableForgetPasswordLinkOnLogonPage=Oturum açma sayfasında “Parola unutuldu” bağlantısını gösterme UsersSetup=Kullanıcılar modülü kurulumu UserMailRequired=Yeni bir kullanıcı oluşturmak için gerekli EPosta ##### Company setup ##### @@ -1183,7 +1183,7 @@ WatermarkOnDraftContractCards=Taslak sözleşmeler üzerinde filigran (boşsa yo MembersSetup=Üye modülü kurulumu MemberMainOptions=Ana seçenekler AddSubscriptionIntoAccount=Yeni bir ödentili abonelik eklerken, banka modülünde varsayılan olarak bir banka işlemi öner -AdherentLoginRequired= Her üye için bir Kullanıcı girişi yönetin +AdherentLoginRequired= Her üye için bir Kullanıcı adı yürütün AdherentMailRequired=Yeni üye oluşturmak için E-posta gereklidir MemberSendInformationByMailByDefault=Üyelere onay epostası (doğrulama ya da yeni abonelik) göndermek için onay kutusu varsayılan olarak açıktır ##### LDAP setup ##### @@ -1263,11 +1263,11 @@ LDAPSetupForVersion3=LDAP sunucusu sürüm 3 için yapılandırılmış LDAPSetupForVersion2=LDAP sunucusu sürüm 2 için yapılandırılmış LDAPDolibarrMapping=Dolibarr Eşleme LDAPLdapMapping=LDAP Eşleme -LDAPFieldLoginUnix=Kullanıcı girişi (Unix) +LDAPFieldLoginUnix=Oturum açma (Unix) LDAPFieldLoginExample=Örnek: uid LDAPFilterConnection=Arama süzgeçi LDAPFilterConnectionExample=Örnek: &(objectClass = InetOrgPerson) -LDAPFieldLoginSamba=Kullanıcı girişi (samba, activedirectory) +LDAPFieldLoginSamba=Oturum açma (samba, activedirectory) LDAPFieldLoginSambaExample=Örnek: sAMAccountName LDAPFieldFullname=İlk Adı LDAPFieldFullnameExample=Örnek: cn diff --git a/htdocs/langs/tr_TR/agenda.lang b/htdocs/langs/tr_TR/agenda.lang index 1c44bec7a8d..0520ecb6de7 100644 --- a/htdocs/langs/tr_TR/agenda.lang +++ b/htdocs/langs/tr_TR/agenda.lang @@ -69,7 +69,7 @@ DateActionDoneEnd= Gerçek bitiş tarihi DateActionStart= Başlama tarihi DateActionEnd= Bitiş tarihi AgendaUrlOptions1=Süzgeç çıktısına ayrıca aşağıdaki parametreleri ekleyebilirsiniz: -AgendaUrlOptions2=Eylem çıktılarını eylem, oluşturan, eylemden etkilenen ya da eylemi yapan kullanıcı kullanıcı girişi=%s sınırlayacak kullanıcı %s. +AgendaUrlOptions2=Eylem çıktılarını eylem, oluşturan, eylemden etkilenen ya da eylemi yapan kullanıcı oturum açma=%s sınırlayacak kullanıcı %s. AgendaUrlOptions3=kullanıcı girişi=%s, bir %s kullanıcısına ait eylemlerin çıkışlarını sınırlamak içindir. AgendaUrlOptions4=Çıktıyı kullanıcı %s tarafından etkilenen etkinliklerle sınırlamak içinlogint=%s. AgendaUrlOptionsProject=proje=PROJECT_ID, bu PROJECT_ID projesi ile ilişkilendirilmiş eylemlerin çıkışını çıkışını sınırlamak içindir. diff --git a/htdocs/langs/tr_TR/companies.lang b/htdocs/langs/tr_TR/companies.lang index f4239869a2a..6b452607545 100644 --- a/htdocs/langs/tr_TR/companies.lang +++ b/htdocs/langs/tr_TR/companies.lang @@ -365,7 +365,7 @@ NoParentCompany=Hiçbiri ExportImport=İçeaktar-Dışaaktar ExportCardToFormat=Biçimlenip dışaaktarılacak kart ContactNotLinkedToCompany=Kişi herhangi bir üçüncü partiye bağlı değil -DolibarrLogin=Dolibarr kullanıcı girişi +DolibarrLogin=Dolibarr oturumu açma NoDolibarrAccess=Dolibarr erişimi yok ExportDataset_company_1=Üçüncü partiler (Firmalar/dernekler/kişiler) ve özellikleri ExportDataset_company_2=Kişiler ve özellikleri diff --git a/htdocs/langs/tr_TR/errors.lang b/htdocs/langs/tr_TR/errors.lang index 774c2a8d9df..e4e9eb9eb3c 100644 --- a/htdocs/langs/tr_TR/errors.lang +++ b/htdocs/langs/tr_TR/errors.lang @@ -101,18 +101,18 @@ ErrorFailedToSendPassword=Parola gönderilemedi ErrorFailedToLoadRSSFile=RSS beslemesi alınamıyor. Eğer hata mesajları yeterli bilgi sağlamıyorsa MAIN_SIMPLEXMLLOAD_DEBUG değişmezini eklemeyi deneyin. ErrorPasswordDiffers=Parolalar farklıdır, bunları tekrar yazın lütfen. ErrorForbidden=Erişim engellendi.
Kimlik doğrulama sı gerektiren ya da kullanıcınızın izni olmayan bir sayfa, alan veya özelliğe erişmeye çalışın. -ErrorForbidden2=Bu giriş için izin Dolibarr yöneticiniz tarafından %s->%s menüsünden tanımlanabilir. +ErrorForbidden2=Bu oturum açma için izin Dolibarr yöneticiniz tarafından %s->%s menüsünden tanımlanabilir. ErrorForbidden3=Dolibarr bir kimlik doğrulama oturumu üzerinden kullanılmamış gibi görünüyor. Kimlik doğrulama nasıl yönetileceğini öğrenmek Dolibarr kurulum belgelerine bir göz atın (htaccess, mod_auth veya diğer ...). ErrorNoImagickReadimage=Bu PHP Class Imagick yok. Önizleme kullanılır olmayabilir. Yöneticiler Kurulum - Görünüm menüsünde bu sekmeyi devre dışı bırakabilir. ErrorRecordAlreadyExists=Kayıt zaten var ErrorCantReadFile=Dosya '%s' okunamadı ErrorCantReadDir=Dizin '%s' okunamadı ErrorFailedToFindEntity=Ortam '%s' okunamadı -ErrorBadLoginPassword=Kullanıcı veya parola için hatalı değer +ErrorBadLoginPassword=Kullanıcı adı veya parola için hatalı değer ErrorLoginDisabled=Hesabınız engellendi ErrorFailedToRunExternalCommand=Dış komut çalıştırılamıyor. PHP sunucunuz tarafından kullanılabilir ve çalıştırılabilir olup olmadığını kontrol edin. PHP Güvenli Mod etkinse, komutun safe_mode_exec_dir parametresiyle tanımlanmış bir dizin içinde olup olmadığını kontrol edin. ErrorFailedToChangePassword=Parola değiştirilemedi -ErrorLoginDoesNotExists=%s girişli kullanıcı bulunamadı. +ErrorLoginDoesNotExists=%s kullanıcı adlı kullanıcı bulunamadı. ErrorLoginHasNoEmail=Bu kullanıcının e-posta adresi yoktur. İşlem iptal edildi. ErrorBadValueForCode=Güvenlik kodu için hatalı değer. Yeni değer ile tekrar deneyin... ErrorBothFieldCantBeNegative=%s ve %s alanlarının ikisi birden eksi olamaz @@ -159,7 +159,7 @@ ErrorPriceExpression22=Eksi sonuç '%s' ErrorPriceExpressionInternal=İç hata '%s' ErrorPriceExpressionUnknown=Bilinmeyen hata '%s' ErrorSrcAndTargetWarehouseMustDiffers=Kaynak ve hedef depolar farklı olmalı -ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorTryToMakeMoveOnProductRequiringBatchData=Hata, parti/seri bilgisi gerektiren ürün için parti/seri bilgisi olmadan stok hareketi yapılmaya çalışılıyor. # Warnings WarningMandatorySetupNotComplete=Zorunlu kurulum parametreleri henüz tanımlanmamış diff --git a/htdocs/langs/tr_TR/ftp.lang b/htdocs/langs/tr_TR/ftp.lang index 347ca43c32f..71b7e4ad26e 100644 --- a/htdocs/langs/tr_TR/ftp.lang +++ b/htdocs/langs/tr_TR/ftp.lang @@ -6,7 +6,7 @@ FTPAreaDesc=Bu ekranda bir FTP sunucusu görünümünün içeriği gösterilir SetupOfFTPClientModuleNotComplete=FTP istemcisi modülünün kurulumu tamamlanmaış gibi görünüyor FTPFeatureNotSupportedByYourPHP=PHP niz FTP fonksiyonlarını desteklemiyor FailedToConnectToFTPServer=FTP sunucusuna bağlanamadı (sunucu %s, port %s) -FailedToConnectToFTPServerWithCredentials=Tanımlı kullanıcı/parola ile FTP sunucusuna bağlanılamadı +FailedToConnectToFTPServerWithCredentials=Tanımlı kullanıcı/parola ile FTP sunucusunda oturum açılamadı FTPFailedToRemoveFile=%s Dosyası kaldırılamadı. FTPFailedToRemoveDir=%s Dizini kaldırılamadı (İzinleri o dizinin boş olduğunu denetleyin). FTPPassiveMode=Pasif mod diff --git a/htdocs/langs/tr_TR/install.lang b/htdocs/langs/tr_TR/install.lang index cb256a68aaf..cd980985987 100644 --- a/htdocs/langs/tr_TR/install.lang +++ b/htdocs/langs/tr_TR/install.lang @@ -53,8 +53,8 @@ ServerPortDescription=Veritabanı sunucusu bağlantı noktası. Eğer bilinmiyor DatabaseServer=Veritabanı sunucusu DatabaseName=Veritabanı adı DatabasePrefix=Veritabanı tablo öneki -Login=Giriş -AdminLogin=Dolibarr veritabanı sahibi girişi. +Login=Oturum açma +AdminLogin=Dolibarr veritabanı oturum açma. Password=Parola PasswordAgain=Parolayı ikinci kez yeniden yaz AdminPassword=Dolibarr veritabanı sahibi parolası. diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index 9440b69ec09..204406547b2 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -436,7 +436,7 @@ Late=Son Photo=Resim Photos=Resimler AddPhoto=Resim ekle -Login=Kullanıcı +Login=Oturum açma CurrentLogin=Geçerli kullanıcı January=Ocak February=Şubat diff --git a/htdocs/langs/tr_TR/orders.lang b/htdocs/langs/tr_TR/orders.lang index 00b0a72dc1d..17254bf7a3d 100644 --- a/htdocs/langs/tr_TR/orders.lang +++ b/htdocs/langs/tr_TR/orders.lang @@ -50,8 +50,8 @@ StatusOrderRefused=Reddedildi StatusOrderReceivedPartially=Kısmen alındı StatusOrderReceivedAll=Her şey kabul edildi ShippingExist=Bir sevkiyat var -ProductQtyInDraft=Product quantity into draft orders -ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +ProductQtyInDraft=Taslak siparişlerdeki ürün miktarı +ProductQtyInDraftOrWaitingApproved=Henüz sipariş edilmemiş, taslak veya onaylı siparişlerdeki ürün miktarı DraftOrWaitingApproved=Taslak veya onaylanmış henüz sipariş verilmemiş DraftOrWaitingShipped=Taslak veya onaylanmış henüz sevkedilmemiş MenuOrdersToBill=Teslim edilen siparişler diff --git a/htdocs/langs/tr_TR/other.lang b/htdocs/langs/tr_TR/other.lang index bb3087d5a36..666bfc89754 100644 --- a/htdocs/langs/tr_TR/other.lang +++ b/htdocs/langs/tr_TR/other.lang @@ -146,7 +146,7 @@ SizeUnitfoot=foot SizeUnitpoint=nokta BugTracker=Hata izleyici SendNewPasswordDesc=Bu form yeni bir parola istemenizi sağlar. Sizin eposta adresinize gönderilecektir.
Bu eposta adresindeki onaylama bağlantısına tıkladıktan sonra değişiklik etkili olacaktır.
Eposta okuyucu yazılımını kontrol edin. -BackToLoginPage=Giriş sayfasına geri dön +BackToLoginPage=Oturum açma sayfasına geri dön AuthenticationDoesNotAllowSendNewPassword=Kimlik doğrulama modu %s.
bu modda, Dolibarr parolanızı bilemez ve değiştiremez.
Parola değiştirmek istiyorsanız sistem yöneticinize danışın. EnableGDLibraryDesc=Bu seçeneği kullanmak için PHP nizle GD kütüphanesini kurun ya da etkinleştirin. EnablePhpAVModuleDesc=Ant-virüs yazılımınızla uyumlu bir modül kurmalısınız. (Clamav : php4-clamavlib ya da php5-clamavlib) @@ -195,8 +195,8 @@ CancelUpload=Yüklemeyi iptal et FileIsTooBig=Dosyalar çok büyük PleaseBePatient=Lütfen sabırlı olun... RequestToResetPasswordReceived=Dolibarr parolanızı değiştirmek için bir istek alınmıştır -NewKeyIs=Bu giriş için yeni anahtarınızdır -NewKeyWillBe=Yazılıma giriş için yeni anahtarınız bu olacaktır +NewKeyIs=Oturum açmak için yeni anahtarınız +NewKeyWillBe=Yazılımda oturum açmak için yeni anahtarınız bu olacaktır ClickHereToGoTo=%s e gitmek için buraya tıkla YouMustClickToChange=Ancak önce bu şifre değiştirmeyi doğrulamak için aşağıdaki linke tıklamanız gerekir ForgetIfNothing=Bu değiştirmeyi istemediyseniz, bu epostayı unutun. Kimlik bilgilerinizi güvenli tutulur. diff --git a/htdocs/langs/tr_TR/printipp.lang b/htdocs/langs/tr_TR/printipp.lang index 82d85eaae0c..98cbc00f503 100644 --- a/htdocs/langs/tr_TR/printipp.lang +++ b/htdocs/langs/tr_TR/printipp.lang @@ -4,7 +4,7 @@ PrintIPPDesc=Bu modül belgeleri doğrudan yazıcıya gönderecek bir Yazdır d PRINTIPP_ENABLED=Belge listelerinde "Doğrudan yazdır" simgesini göster PRINTIPP_HOST=Yazıcı sunucusu PRINTIPP_PORT=Port -PRINTIPP_USER=Kullanıcı girişi +PRINTIPP_USER=Oturum açma PRINTIPP_PASSWORD=Parola NoPrinterFound=Hiç yazıcı bulunamadı (CUPS ayarlarınızı denetleyin) FileWasSentToPrinter=%s Dosyası yazıcıya gönderildi diff --git a/htdocs/langs/tr_TR/productbatch.lang b/htdocs/langs/tr_TR/productbatch.lang index 443ddc9dbe9..e6fc79ade2c 100644 --- a/htdocs/langs/tr_TR/productbatch.lang +++ b/htdocs/langs/tr_TR/productbatch.lang @@ -18,4 +18,4 @@ printQty=Mik: %d AddDispatchBatchLine=Dağıtımda bir Raf Ömrü satırı ekle BatchDefaultNumber=Tanımlanmamış WhenProductBatchModuleOnOptionAreForced=Parti/Seri devredeyken, stok arttırma/eksiltme modu son seçime zorlanır ve düzenlenemez. Diğer seçenekler istediğiniz gibi yapılandırılabilir. -ProductDoesNotUseBatchSerial=This product does not use batch/serial number +ProductDoesNotUseBatchSerial=Bu ürün parti/seri numarası kullanmaz diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index f5351a3add1..208dad079bb 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -3,7 +3,7 @@ RefProject=Referans Proje ProjectId=Proje Kimliği Project=Proje Projects=Projeler -ProjectStatus=Project status +ProjectStatus=Proje durumu SharedProject=Herkes PrivateProject=Proje ilgilileri MyProjectsDesc=Bu görünüm ilgilisi olduğunuz projelerle sınırlıdır (türü ne olursa olsun). @@ -103,7 +103,7 @@ CloneContacts=Kişi klonla CloneNotes=Not klonla CloneProjectFiles=Birleşik proje dosyalarını kopyala CloneTaskFiles=Birleşik görev(ler) dosyalarını kopyala (görev(ler) kopyalanmışsa) -CloneMoveDate=Update project/tasks dates from now ? +CloneMoveDate=Proje/görev tarihleri şu andan itibaren güncellensin mi? ConfirmCloneProject=Bu projeyi klonlamak istediğinizden emin misiniz? ProjectReportDate=Görevi proje başlama tarihine göre değiştir ErrorShiftTaskDate=Görev tarihini yeni proje başlama tarihine göre kaydırmak olası değil diff --git a/htdocs/langs/tr_TR/sendings.lang b/htdocs/langs/tr_TR/sendings.lang index 3c4c3483b2c..c7b30cba846 100644 --- a/htdocs/langs/tr_TR/sendings.lang +++ b/htdocs/langs/tr_TR/sendings.lang @@ -4,7 +4,7 @@ Sending=Sevkiyat Sendings=Sevkiyatlar Shipment=Sevkiyat Shipments=Sevkiyatlar -ShowSending=Show Sending +ShowSending=Gönderimi göster Receivings=Kabuller SendingsArea=Sevkiyat alanı ListOfSendings=Sevkiyat listesi @@ -64,10 +64,10 @@ ShipmentLine=Sevkiyat kalemi CarrierList=Taşımacı listesi SendingRunning=Sipariş edilmiş müşteri sparişindeki ürün SuppliersReceiptRunning=Sipariş edilmiş tedarikçi sparişindeki ürün -ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders -ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders -ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received +ProductQtyInCustomersOrdersRunning=Açık müşteri siparişlerindeki ürün miktarı +ProductQtyInSuppliersOrdersRunning=Açık tedarikçi siparişlerindeki ürün miktarı +ProductQtyInShipmentAlreadySent=Açık müşteri siparişlerindeki halihazırda gönderilmiş ürün miktarı +ProductQtyInSuppliersShipmentAlreadyRecevied=Açık tedarikçi siparişlerindeki halihazırda teslim alınmış ürün miktarı # Sending methods SendingMethodCATCH=Müşteri tarafından diff --git a/htdocs/langs/tr_TR/stocks.lang b/htdocs/langs/tr_TR/stocks.lang index d34b2d88319..4e458e00129 100644 --- a/htdocs/langs/tr_TR/stocks.lang +++ b/htdocs/langs/tr_TR/stocks.lang @@ -48,8 +48,8 @@ PMPValueShort=AOF EnhancedValueOfWarehouses=Depolar değeri UserWarehouseAutoCreate=Bir kullanıcı oluştururken otomatik olarak bir stok oluştur QtyDispatched=Sevkedilen miktar -QtyDispatchedShort=Qty dispatched -QtyToDispatchShort=Qty to dispatch +QtyDispatchedShort=Dağıtılan mik +QtyToDispatchShort=Dağıtılacak mik OrderDispatch=Stok sevkiyatı RuleForStockManagementDecrease=Stok azaltma yönetimi kuralı RuleForStockManagementIncrease=Stok arttırma yönetimi kuralı @@ -124,9 +124,9 @@ RuleForStockAvailability=Stok gereksinimi kuralları StockMustBeEnoughForInvoice=Faturaya ürün/hizmet eklemek için stok düzeyi yeterli olmalıdır StockMustBeEnoughForOrder=Siparişe ürün/hizmet eklemek için stok düzeyi yeterli olmalıdır StockMustBeEnoughForShipment= Sevkiyata ürün/hizmet eklemek için stok düzeyi yeterli olmalıdır -MovementLabel=Label of movement -InventoryCode=Movement or inventory code -IsInPackage=Contained into package -ShowWarehouse=Show warehouse -MovementCorrectStock=Stock content correction for product %s -MovementTransferStock=Stock transfer of product %s into another warehouse +MovementLabel=Hareket etiketi +InventoryCode=Hareket veya stok kodu +IsInPackage=Pakette içerilir +ShowWarehouse=Depo göster +MovementCorrectStock=%s ürünü için stok içeriği düzeltmesi +MovementTransferStock=%s ürününün başka bir depoya stok aktarılması diff --git a/htdocs/langs/tr_TR/suppliers.lang b/htdocs/langs/tr_TR/suppliers.lang index b07f6aba1ff..585a82d5f80 100644 --- a/htdocs/langs/tr_TR/suppliers.lang +++ b/htdocs/langs/tr_TR/suppliers.lang @@ -42,5 +42,5 @@ NoneOrBatchFileNeverRan=Hiçbiri veya toplu %s yürütülmedi SentToSuppliers=Tedarikçilere gönderilen ListOfSupplierOrders=Tedarikçi siparişleri listesi MenuOrdersSupplierToBill=Faturalanacak tedarikçi siparişleri -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest delay is display among order product list +NbDaysToDelivery=Gün olarak teslim süresi +DescNbDaysToDelivery=Sipariş ürün listesindeki en uzun teslim süresi diff --git a/htdocs/langs/tr_TR/users.lang b/htdocs/langs/tr_TR/users.lang index b160e4cc1c7..fdecda7541b 100644 --- a/htdocs/langs/tr_TR/users.lang +++ b/htdocs/langs/tr_TR/users.lang @@ -38,7 +38,7 @@ NewUser=Yeni kullanıcı CreateUser=Kullanıcı oluştur SearchAGroup=Bir grup ara SearchAUser=Bir kullanıcı ara -LoginNotDefined=Giriş tanımlı değil. +LoginNotDefined=Kullanıcı adı tanımlı değil. NameNotDefined=Ad tanımlı değil. ListOfUsers=Kullanıcı listesi Administrator=Yönetici @@ -69,7 +69,7 @@ ListOfUsersInGroup=Bu gruptaki kullanıcıların listesi ListOfGroupsForUser=Bu kullanıcının gruplarının listesi UsersToAdd=Bu gruba eklenecek kullanıcılar GroupsToAdd=Bu kullanıcıya eklenecek gruplar -NoLogin=Giriş yok +NoLogin=Oturum açılmaz LinkToCompanyContact=Üçüncü Partiye/kişiye bağlantı LinkedToDolibarrMember=Üye bağlantısı LinkedToDolibarrUser=Dolibarr kullanıcısı bağlantısı @@ -107,7 +107,7 @@ GroupDeleted=Grubu %s kaldırıldı ConfirmCreateContact=Bu kişi için bir Dolibarr hesabı oluşturmak istediğinizden emin misiniz? ConfirmCreateLogin=Bu üye için Dolibarr hesabı oluşturmak istediğinizden emin misiniz? ConfirmCreateThirdParty=Bu üye için bir üçüncü parti oluşturmak istediğinizden emin misiniz? -LoginToCreate=Oluşturulacak giriş +LoginToCreate=Oluşturulacak kullanıcı adı NameToCreate=Oluşturulacak Üçüncü Parti Adı YourRole=Sizin rolünüz YourQuotaOfUsersIsReached=Aktif kullanıcı kotanıza ulaşıldı! @@ -117,6 +117,6 @@ HierarchicalResponsible=Yönetici HierarchicView=Sıradüzeni görünümü UseTypeFieldToChange=Değiştirmek için Alan türünü kullan OpenIDURL=OpenID URL -LoginUsingOpenID=Giriş için OpenID kullan +LoginUsingOpenID=Oturum açmak için OpenID kullan WeeklyHours=Haftalık saatler ColorUser=Kullanıcı rengi From 6952f33309f54add06be5da07a14a674653def5c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 20 Feb 2015 23:29:55 +0100 Subject: [PATCH 17/54] Restore data into bannner of thirdparty to have content matching other tabs. --- htdocs/margin/tabs/thirdpartyMargins.php | 257 ++++++++++++----------- 1 file changed, 133 insertions(+), 124 deletions(-) diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index 5782b72c356..e29422259e7 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -94,146 +94,155 @@ if ($socid > 0) print ''; } - // Total Margin - print '
'; + if ($societe->fournisseur) + { + print ''; + } - // Margin Rate - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { - print ''; - } + // Total Margin + print ''; - // Mark Rate - if (! empty($conf->global->DISPLAY_MARK_RATES)) { - print ''; - } + // Margin Rate + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { + print ''; + } - print "
'; - print $langs->trans('SupplierCode').''; - print $societe->code_fournisseur; - if ($societe->check_codefournisseur() <> 0) print ' ('.$langs->trans("WrongSupplierCode").')'; - print '
'.$langs->trans("TotalMargin").''; print ''; // set by jquery (see below) From ca64763440fe211117bc546eb27cf50ffdd41f13 Mon Sep 17 00:00:00 2001 From: braito4 Date: Tue, 17 Feb 2015 18:09:16 +0100 Subject: [PATCH 07/54] Update note.php Error in the security check --- htdocs/contact/note.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/contact/note.php b/htdocs/contact/note.php index 73b0f513db9..173a1018547 100644 --- a/htdocs/contact/note.php +++ b/htdocs/contact/note.php @@ -36,7 +36,7 @@ $langs->load("companies"); // Security check $id = GETPOST('id','int'); if ($user->societe_id) $id=$user->societe_id; -$result = restrictedArea($user, 'societe', $id, '&societe'); +$result = restrictedArea($user, 'contact', $id, 'socpeople&societe'); $object = new Contact($db); if ($id > 0) $object->fetch($id); From d1a4b6c2c5a7cfab1b21731de2ef790130d55d17 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 19 Feb 2015 00:04:35 +0100 Subject: [PATCH 08/54] phpcs --- htdocs/core/lib/functions.lib.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 121fbc769b7..3bded45bc9f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1054,11 +1054,11 @@ function dol_mktime($hour,$minute,$second,$month,$day,$year,$gm=false,$check=1) $default_timezone=@date_default_timezone_get(); } } - + if (empty($localtz)) { $localtz = new DateTimeZone('UTC'); } - + $dt = new DateTime(null,$localtz); $dt->setDate($year,$month,$day); $dt->setTime((int) $hour, (int) $minute, (int) $second); @@ -2952,7 +2952,7 @@ function get_localtax($tva, $local, $thirdparty_buyer="", $thirdparty_seller="") $sql = "SELECT t.localtax1, t.localtax2, t.localtax1_type, t.localtax2_type"; $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$thirdparty_seller->country_code."'"; - $sql .= " AND t.taux = ".(float)$tva." AND t.active = 1"; + $sql .= " AND t.taux = ".((float) $tva)." AND t.active = 1"; dol_syslog("get_localtax sql=".$sql); $resql=$db->query($sql); @@ -2988,7 +2988,7 @@ function getLocalTaxesFromRate($vatrate, $local, $thirdparty) $sql = "SELECT t.localtax1, t.localtax1_type, t.localtax2, t.localtax2_type, t.accountancy_code_sell, t.accountancy_code_buy"; $sql .= " FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p"; $sql .= " WHERE t.fk_pays = p.rowid AND p.code = '".$thirdparty->country_code."'"; - $sql .= " AND t.taux = ".(float)$vatrate." AND t.active = 1"; + $sql .= " AND t.taux = ".((float) $vatrate)." AND t.active = 1"; $resql=$db->query($sql); if ($resql) From ec56667f5ea8969536ffc83bcfd1ec9fd387c0e8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 19 Feb 2015 09:44:22 +0100 Subject: [PATCH 09/54] Fix: [ bug #1849 ] Broken flag image when a contact does not have a country set --- htdocs/core/lib/functions.lib.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 3bded45bc9f..0c24e5fba72 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4305,6 +4305,8 @@ function picto_from_langcode($codelang) { global $langs; + if (empty($codelang)) return ''; + if ($codelang == 'auto') { return img_picto_common($langs->trans('AutoDetectLang'), 'flags/int.png'); From fd18aa8717920b4e657fe6f2da630c7309586139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Fri, 20 Feb 2015 10:17:02 +0100 Subject: [PATCH 10/54] Better fix for Bug #1825 --- htdocs/core/lib/agenda.lib.php | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/htdocs/core/lib/agenda.lib.php b/htdocs/core/lib/agenda.lib.php index c9773372e93..5bd0bc5ee95 100644 --- a/htdocs/core/lib/agenda.lib.php +++ b/htdocs/core/lib/agenda.lib.php @@ -140,26 +140,28 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh { if (count($showextcals) > 0) { - print '
' . $langs->trans("LocalAgenda") . '
'; + //jQuery Learning "How do I select an element by an ID that has characters used in CSS notation?" + //http://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in-css-notation/ + print ''; + print ' ' . $langs->trans("LocalAgenda") . '
'; - print '' . "\n"; print ' ' . $val ['name']; print '
'.$langs->trans("TotalMargin").''; - print ''; // set by jquery (see below) - print '
'; + print $langs->trans('SupplierCode').''; + print $societe->code_fournisseur; + if ($societe->check_codefournisseur() <> 0) print ' ('.$langs->trans("WrongSupplierCode").')'; + print '
'.$langs->trans("MarginRate").''; - print ''; // set by jquery (see below) - print '
'.$langs->trans("TotalMargin").''; + print ''; // set by jquery (see below) + print '
'.$langs->trans("MarkRate").''; - print ''; // set by jquery (see below) - print '
'.$langs->trans("MarginRate").''; + print ''; // set by jquery (see below) + print '
"; - print ''; + // Mark Rate + if (! empty($conf->global->DISPLAY_MARK_RATES)) { + print ''.$langs->trans("MarkRate").''; + print ''; // set by jquery (see below) + print ''; + } + + print ""; + print ''; - $sql = "SELECT distinct s.nom, s.rowid as socid, s.code_client,"; - $sql.= " f.rowid as facid, f.facnumber, f.total as total_ht,"; - $sql.= " f.datef, f.paye, f.fk_statut as statut, f.type,"; - $sql.= " sum(d.total_ht) as selling_price,"; // may be negative or positive - $sql.= " sum(d.qty * d.buy_price_ht) as buying_price,"; // always positive - $sql.= " sum(abs(d.total_ht) - (d.buy_price_ht * d.qty)) as marge"; // always positive - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - $sql.= ", ".MAIN_DB_PREFIX."facture as f"; - $sql.= ", ".MAIN_DB_PREFIX."facturedet as d"; - $sql.= " WHERE f.fk_soc = s.rowid"; - $sql.= " AND f.fk_statut > 0"; - $sql.= " AND s.entity = ".$conf->entity; - $sql.= " AND d.fk_facture = f.rowid"; - $sql.= " AND f.fk_soc = $socid"; - $sql.= " AND d.buy_price_ht IS NOT NULL"; - if (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1) $sql .= " AND d.buy_price_ht <> 0"; - $sql.= " GROUP BY s.nom, s.rowid, s.code_client, f.rowid, f.facnumber, f.total, f.datef, f.paye, f.fk_statut, f.type"; - $sql.= $db->order($sortfield,$sortorder); - // TODO: calculate total to display then restore pagination - //$sql.= $db->plimit($conf->liste_limit +1, $offset); + $sql = "SELECT distinct s.nom, s.rowid as socid, s.code_client,"; + $sql.= " f.rowid as facid, f.facnumber, f.total as total_ht,"; + $sql.= " f.datef, f.paye, f.fk_statut as statut, f.type,"; + $sql.= " sum(d.total_ht) as selling_price,"; // may be negative or positive + $sql.= " sum(d.qty * d.buy_price_ht) as buying_price,"; // always positive + $sql.= " sum(abs(d.total_ht) - (d.buy_price_ht * d.qty)) as marge"; // always positive + $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; + $sql.= ", ".MAIN_DB_PREFIX."facture as f"; + $sql.= ", ".MAIN_DB_PREFIX."facturedet as d"; + $sql.= " WHERE f.fk_soc = s.rowid"; + $sql.= " AND f.fk_statut > 0"; + $sql.= " AND s.entity = ".$conf->entity; + $sql.= " AND d.fk_facture = f.rowid"; + $sql.= " AND f.fk_soc = $socid"; + $sql.= " AND d.buy_price_ht IS NOT NULL"; + if (isset($conf->global->ForceBuyingPriceIfNull) && $conf->global->ForceBuyingPriceIfNull == 1) $sql .= " AND d.buy_price_ht <> 0"; + $sql.= " GROUP BY s.nom, s.rowid, s.code_client, f.rowid, f.facnumber, f.total, f.datef, f.paye, f.fk_statut, f.type"; + $sql.= $db->order($sortfield,$sortorder); + // TODO: calculate total to display then restore pagination + //$sql.= $db->plimit($conf->liste_limit +1, $offset); - dol_syslog('margin:tabs:thirdpartyMargins.php', LOG_DEBUG); - $result = $db->query($sql); - if ($result) - { - $num = $db->num_rows($result); + dol_syslog('margin:tabs:thirdpartyMargins.php', LOG_DEBUG); + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); - print_barre_liste($langs->trans("MarginDetails"),$page,$_SERVER["PHP_SELF"],"&socid=".$societe->id,$sortfield,$sortorder,'',0,0,''); + print_barre_liste($langs->trans("MarginDetails"),$page,$_SERVER["PHP_SELF"],"&socid=".$societe->id,$sortfield,$sortorder,'',0,0,''); - $i = 0; - print ""; + $i = 0; + print "
"; - print ''; - print_liste_field_titre($langs->trans("Invoice"),$_SERVER["PHP_SELF"],"f.facnumber","","&socid=".$_REQUEST["socid"],'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("DateInvoice"),$_SERVER["PHP_SELF"],"f.datef","","&socid=".$_REQUEST["socid"],'align="center"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("SellingPrice"),$_SERVER["PHP_SELF"],"selling_price","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("BuyingPrice"),$_SERVER["PHP_SELF"],"buying_price","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Margin"),$_SERVER["PHP_SELF"],"marge","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print_liste_field_titre($langs->trans("MarginRate"),$_SERVER["PHP_SELF"],"","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); - if (! empty($conf->global->DISPLAY_MARK_RATES)) - print_liste_field_titre($langs->trans("MarkRate"),$_SERVER["PHP_SELF"],"","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"f.paye,f.fk_statut","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); - print "\n"; + print ''; + print_liste_field_titre($langs->trans("Invoice"),$_SERVER["PHP_SELF"],"f.facnumber","","&socid=".$_REQUEST["socid"],'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("DateInvoice"),$_SERVER["PHP_SELF"],"f.datef","","&socid=".$_REQUEST["socid"],'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("SellingPrice"),$_SERVER["PHP_SELF"],"selling_price","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("BuyingPrice"),$_SERVER["PHP_SELF"],"buying_price","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Margin"),$_SERVER["PHP_SELF"],"marge","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) + print_liste_field_titre($langs->trans("MarginRate"),$_SERVER["PHP_SELF"],"","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); + if (! empty($conf->global->DISPLAY_MARK_RATES)) + print_liste_field_titre($langs->trans("MarkRate"),$_SERVER["PHP_SELF"],"","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"f.paye,f.fk_statut","","&socid=".$_REQUEST["socid"],'align="right"',$sortfield,$sortorder); + print "\n"; - $cumul_achat = 0; - $cumul_vente = 0; + $cumul_achat = 0; + $cumul_vente = 0; - $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); + $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); - if ($num > 0) - { - $var=True; - while ($i < $num /*&& $i < $conf->liste_limit*/) - { - $objp = $db->fetch_object($result); + if ($num > 0) + { + $var=True; + while ($i < $num /*&& $i < $conf->liste_limit*/) + { + $objp = $db->fetch_object($result); - $marginRate = ($objp->buying_price != 0)?(100 * $objp->marge / $objp->buying_price):'' ; - $markRate = ($objp->selling_price != 0)?(100 * $objp->marge / $objp->selling_price):'' ; + $marginRate = ($objp->buying_price != 0)?(100 * $objp->marge / $objp->buying_price):'' ; + $markRate = ($objp->selling_price != 0)?(100 * $objp->marge / $objp->selling_price):'' ; - $var=!$var; + $var=!$var; - print ""; - print '\n"; - print ""; - print "\n"; - print "\n"; - print "\n"; - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "\n"; - if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "\n"; - print ''; - print "\n"; - $i++; - $cumul_achat += $objp->buying_price; - $cumul_vente += $objp->selling_price; - } - } + print ""; + print '\n"; + print ""; + print "\n"; + print "\n"; + print "\n"; + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) + print "\n"; + if (! empty($conf->global->DISPLAY_MARK_RATES)) + print "\n"; + print ''; + print "\n"; + $i++; + $cumul_achat += $objp->buying_price; + $cumul_vente += $objp->selling_price; + } + } - // affichage totaux marges - $var=!$var; - $totalMargin = $cumul_vente - $cumul_achat; - if ($totalMargin < 0) - { - $marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):''; - $markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):''; - } - else - { - $marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):''; - $markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):''; - } - print ''; - print '"; - print "\n"; - print "\n"; - print "\n"; - if (! empty($conf->global->DISPLAY_MARGIN_RATES)) - print "\n"; - if (! empty($conf->global->DISPLAY_MARK_RATES)) - print "\n"; - print ''; - print "\n"; - } - else - { - dol_print_error($db); - } - print "
'; - $invoicestatic->id=$objp->facid; - $invoicestatic->ref=$objp->facnumber; - print $invoicestatic->getNomUrl(1); - print ""; - print dol_print_date($db->jdate($objp->datef),'day')."".price($objp->selling_price, null, null, null, null, $rounding)."".price(($objp->type == 2 ? -1 : 1) * $objp->buying_price, null, null, null, null, $rounding)."".price($objp->marge, null, null, null, null, $rounding)."".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."'.$invoicestatic->LibStatut($objp->paye,$objp->statut,5).'
'; + $invoicestatic->id=$objp->facid; + $invoicestatic->ref=$objp->facnumber; + print $invoicestatic->getNomUrl(1); + print ""; + print dol_print_date($db->jdate($objp->datef),'day')."".price($objp->selling_price, null, null, null, null, $rounding)."".price(($objp->type == 2 ? -1 : 1) * $objp->buying_price, null, null, null, null, $rounding)."".price($objp->marge, null, null, null, null, $rounding)."".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."'.$invoicestatic->LibStatut($objp->paye,$objp->statut,5).'
'.$langs->trans('TotalMargin')."".price($cumul_vente, null, null, null, null, $rounding)."".price($cumul_achat, null, null, null, null, $rounding)."".price($totalMargin, null, null, null, null, $rounding)."".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")." 
"; - print '
'; - $db->free($result); + // affichage totaux marges + $var=!$var; + $totalMargin = $cumul_vente - $cumul_achat; + if ($totalMargin < 0) + { + $marginRate = ($cumul_achat != 0)?-1*(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?-1*(100 * $totalMargin / $cumul_vente):''; + } + else + { + $marginRate = ($cumul_achat != 0)?(100 * $totalMargin / $cumul_achat):''; + $markRate = ($cumul_vente != 0)?(100 * $totalMargin / $cumul_vente):''; + } + print ''; + print ''.$langs->trans('TotalMargin').""; + print "".price($cumul_vente, null, null, null, null, $rounding)."\n"; + print "".price($cumul_achat, null, null, null, null, $rounding)."\n"; + print "".price($totalMargin, null, null, null, null, $rounding)."\n"; + if (! empty($conf->global->DISPLAY_MARGIN_RATES)) + print "".(($marginRate === '')?'n/a':price($marginRate, null, null, null, null, $rounding)."%")."\n"; + if (! empty($conf->global->DISPLAY_MARK_RATES)) + print "".(($markRate === '')?'n/a':price($markRate, null, null, null, null, $rounding)."%")."\n"; + print ' '; + print "\n"; + } + else + { + dol_print_error($db); + } + print ""; + print '
'; + $db->free($result); } else { From cda6e7adf9c36529cc3f50198b0c7f752b07335d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 22 Feb 2015 14:20:42 +0100 Subject: [PATCH 18/54] Delete cash journal --- htdocs/accountancy/journal/cashjournal.php | 533 --------------------- 1 file changed, 533 deletions(-) delete mode 100644 htdocs/accountancy/journal/cashjournal.php diff --git a/htdocs/accountancy/journal/cashjournal.php b/htdocs/accountancy/journal/cashjournal.php deleted file mode 100644 index bbd74a8c29c..00000000000 --- a/htdocs/accountancy/journal/cashjournal.php +++ /dev/null @@ -1,533 +0,0 @@ - - * Copyright (C) 2007-2010 Jean Heimburger - * Copyright (C) 2011 Juanjo Menent - * Copyright (C) 2012 Regis Houssin - * Copyright (C) 2013 Christophe Battarel - * Copyright (C) 2013-2015 Alexandre Spangaro - * Copyright (C) 2013-2014 Florian Henry - * Copyright (C) 2013-2014 Olivier Geffroy - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/accountancy/journal/cashjournal.php - * \ingroup Accounting Expert - * \brief Page with cash journal - */ - -require '../../main.inc.php'; - -// Class -require_once DOL_DOCUMENT_ROOT.'/core/lib/report.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; -require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/paiementfourn.class.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; -require_once DOL_DOCUMENT_ROOT.'/accountancy/class/bookkeeping.class.php'; - -// Langs -$langs->load("companies"); -$langs->load("other"); -$langs->load("compta"); -$langs->load("bank"); -$langs->load("accountancy"); - -$date_startmonth = GETPOST('date_startmonth'); -$date_startday = GETPOST('date_startday'); -$date_startyear = GETPOST('date_startyear'); -$date_endmonth = GETPOST('date_endmonth'); -$date_endday = GETPOST('date_endday'); -$date_endyear = GETPOST('date_endyear'); - -// Security check -if ($user->societe_id > 0) - accessforbidden(); - -$action = GETPOST('action'); - -/* - * View - */ - -$year_current = strftime("%Y", dol_now()); -$pastmonth = strftime("%m", dol_now()) - 1; -$pastmonthyear = $year_current; -if ($pastmonth == 0) { - $pastmonth = 12; - $pastmonthyear --; -} - -$date_start = dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear); -$date_end = dol_mktime(23, 59, 59, $date_endmonth, $date_endday, $date_endyear); - -if (empty($date_start) || empty($date_end)) // We define date_start and date_end -{ - $date_start = dol_get_first_day($pastmonthyear, $pastmonth, false); - $date_end = dol_get_last_day($pastmonthyear, $pastmonth, false); -} - -$p = explode(":", $conf->global->MAIN_INFO_SOCIETE_COUNTRY); -$idpays = $p[0]; - -$sql = "SELECT b.rowid , b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type, soc.code_compta, ba.courant,"; -$sql .= " soc.code_compta_fournisseur, soc.rowid as socid, soc.nom as name, ba.account_number, bu1.type as typeop"; -$sql .= " FROM " . MAIN_DB_PREFIX . "bank as b"; -$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid"; -$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; -$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid"; - -// Code opération type caisse -$sql .= " WHERE ba.courant = 2"; -if (! empty($conf->multicompany->enabled)) { - $sql .= " AND ba.entity = " . $conf->entity; -} - -if ($date_start && $date_end) - $sql .= " AND b.dateo >= '" . $db->idate($date_start) . "' AND b.dateo <= '" . $db->idate($date_end) . "'"; -$sql .= " ORDER BY b.datev"; - -$object = new Account($db); -$paymentstatic = new Paiement($db); -$paymentsupplierstatic = new PaiementFourn($db); -$societestatic = new Societe($db); -$chargestatic = new ChargeSociales($db); -$paymentvatstatic = new TVA($db); - -dol_syslog("accountancy/journal/cashjournal.php:: sql=" . $sql, LOG_DEBUG); -$result = $db->query($sql); -if ($result) { - - $num = $db->num_rows($result); - // les variables - $cptfour = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : $langs->trans("CodeNotDef")); - $cptcli = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : $langs->trans("CodeNotDef")); - $cpttva = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) ? $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE : $langs->trans("CodeNotDef")); - $cptsociale = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) ? $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE : $langs->trans("CodeNotDef")); - - $tabpay = array (); - $tabbq = array (); - $tabtp = array (); - $tabcompany = array (); - $tabtype = array (); - - $i = 0; - while ( $i < $num ) { - $obj = $db->fetch_object($result); - - // controls - $compta_bank = $obj->account_number; - if ($obj->label == '(SupplierInvoicePayment)') - $compta_soc = (! empty($obj->code_compta_fournisseur) ? $obj->code_compta_fournisseur : $cptfour); - if ($obj->label == '(CustomerInvoicePayment)') - $compta_soc = (! empty($obj->code_compta) ? $obj->code_compta : $cptcli); - if ($obj->typeop == '(BankTransfert)') - $compta_soc = $conf->global->ACCOUNTING_ACCOUNT_TRANSFER_CASH; - - // variable bookkeeping - - $tabpay[$obj->rowid]["date"] = $obj->do; - $tabpay[$obj->rowid]["ref"] = $obj->label; - $tabpay[$obj->rowid]["fk_bank"] = $obj->rowid; - if (preg_match('/^\((.*)\)$/i', $obj->label, $reg)) { - $tabpay[$obj->rowid]["lib"] = $langs->trans($reg[1]); - } else { - $tabpay[$obj->rowid]["lib"] = dol_trunc($obj->label, 60); - } - $links = $object->get_url($obj->rowid); - - foreach ( $links as $key => $val ) { - - $tabtype[$obj->rowid] = $links[$key]['type']; - - if ($links[$key]['type'] == 'payment') { - $paymentstatic->id = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentstatic->getNomUrl(2); - } else if ($links[$key]['type'] == 'payment_supplier') { - $paymentsupplierstatic->id = $links[$key]['url_id']; - $paymentsupplierstatic->ref = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsupplierstatic->getNomUrl(2); - } else if ($links[$key]['type'] == 'company') { - - $societestatic->id = $links[$key]['url_id']; - $societestatic->name = $links[$key]['label']; - $tabpay[$obj->rowid]["soclib"] = $societestatic->getNomUrl(1, '', 30); - $tabtp[$obj->rowid][$compta_soc] += $obj->amount; - } else if ($links[$key]['type'] == 'sc') { - - $chargestatic->id = $links[$key]['url_id']; - $chargestatic->ref = $links[$key]['url_id']; - - $tabpay[$obj->rowid]["lib"] .= ' ' . $chargestatic->getNomUrl(2); - if (preg_match('/^\((.*)\)$/i', $links[$key]['label'], $reg)) { - if ($reg[1] == 'socialcontribution') - $reg[1] = 'SocialContribution'; - $chargestatic->lib = $langs->trans($reg[1]); - } else { - $chargestatic->lib = $links[$key]['label']; - } - $chargestatic->ref = $chargestatic->lib; - $tabpay[$obj->rowid]["soclib"] = $chargestatic->getNomUrl(1, 30); - - $sqlmid = 'SELECT cchgsoc.accountancy_code'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "c_chargesociales cchgsoc "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "chargesociales as chgsoc ON chgsoc.fk_type=cchgsoc.id"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementcharge as paycharg ON paycharg.fk_charge=chgsoc.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid"; - $sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid; - dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) { - $objmid = $db->fetch_object($resultmid); - $tabtp[$obj->rowid][$objmid->accountancy_code] += $obj->amount; - } - } else if ($links[$key]['type'] == 'payment_vat') { - - $paymentvatstatic->id = $links[$key]['url_id']; - $paymentvatstatic->ref = $links[$key]['url_id']; - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2); - $tabtp[$obj->rowid][$cpttva] += $obj->amount; - } else if ($links[$key]['type'] == 'banktransfert') { - $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentvatstatic->getNomUrl(2); - $tabtp[$obj->rowid][$cpttva] += $obj->amount; - } - /*else { - $tabtp [$obj->rowid] [$cptsociale] += $obj->amount; - }*/ - } - $tabbq[$obj->rowid][$compta_bank] += $obj->amount; - - // if($obj->socid)$tabtp[$obj->rowid][$compta_soc] += $obj->amount; - - $i ++; - } -} else { - dol_print_error($db); -} - -/* - * Actions -*/ - -// write bookkeeping -if ($action == 'writeBookKeeping') { - $error = 0; - foreach ( $tabpay as $key => $val ) { - // cash - foreach ( $tabbq[$key] as $k => $mt ) { - $bookkeeping = new BookKeeping($db); - $bookkeeping->doc_date = $val["date"]; - $bookkeeping->doc_ref = $val["ref"]; - $bookkeeping->doc_type = 'cash'; - $bookkeeping->fk_doc = $key; - $bookkeeping->fk_docdet = $val["fk_bank"]; - $bookkeeping->code_tiers = $tabcompany[$key]['code_client']; - $bookkeeping->numero_compte = $k; - $bookkeeping->label_compte = $compte->label; - $bookkeeping->montant = ($mt < 0 ? - $mt : $mt); - $bookkeeping->sens = ($mt >= 0) ? 'D' : 'C'; - $bookkeeping->debit = ($mt >= 0 ? $mt : 0); - $bookkeeping->credit = ($mt < 0 ? - $mt : 0); - $bookkeeping->code_journal = $conf->global->ACCOUNTING_CASH_JOURNAL; - - if ($tabtype[$key] == 'payment') { - - $sqlmid = 'SELECT fac.facnumber'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture fac "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid"; - $sqlmid .= " WHERE pay.fk_bank=" . $key; - dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) { - $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; - } - } else if ($tabtype[$key] == 'payment_supplier') { - - $sqlmid = 'SELECT facf.facnumber'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; - $sqlmid .= " WHERE payf.fk_bank=" . $key; - dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) { - $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; - } - } - - $result = $bookkeeping->create(); - if ($result < 0) { - $error ++; - setEventMessage($object->errors, 'errors'); - } - } - // third party - foreach ( $tabtp[$key] as $k => $mt ) { - - $bookkeeping = new BookKeeping($db); - $bookkeeping->doc_date = $val["date"]; - $bookkeeping->doc_ref = $val["ref"]; - $bookkeeping->doc_type = 'cash'; - $bookkeeping->fk_doc = $key; - $bookkeeping->fk_docdet = $val["fk_bank"]; - $bookkeeping->label_compte = $tabcompany[$key]['name']; - $bookkeeping->montant = ($mt < 0 ? - $mt : $mt); - $bookkeeping->sens = ($mt < 0) ? 'D' : 'C'; - $bookkeeping->debit = ($mt < 0 ? - $mt : 0); - $bookkeeping->credit = ($mt >= 0 ? $mt : 0); - $bookkeeping->code_journal = $conf->global->ACCOUNTING_CASH_JOURNAL; - - if ($tabtype[$key] == 'sc') { - $bookkeeping->code_tiers = ''; - $bookkeeping->numero_compte = $k; - } else if ($tabtype[$key] == 'payment') { - - $sqlmid = 'SELECT fac.facnumber'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture fac "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid"; - $sqlmid .= " WHERE pay.fk_bank=" . $key; - dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) { - $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; - } - $bookkeeping->code_tiers = $k; - $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; - } else if ($tabtype[$key] == 'payment_supplier') { - - $sqlmid = 'SELECT facf.facnumber'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture_fourn facf "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfacf ON payfacf.fk_facturefourn=facf.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiementfourn as payf ON payfacf.fk_paiementfourn=payf.rowid"; - $sqlmid .= " WHERE payf.fk_bank=" . $key; - dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) { - $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; - } - $bookkeeping->code_tiers = $k; - $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER; - } else if ($tabtype[$key] == 'company') { - - $sqlmid = 'SELECT fac.facnumber'; - $sqlmid .= " FROM " . MAIN_DB_PREFIX . "facture fac "; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement_facture as payfac ON payfac.fk_facture=fac.rowid"; - $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "paiement as pay ON payfac.fk_paiement=pay.rowid"; - $sqlmid .= " WHERE pay.fk_bank=" . $key; - dol_syslog("accountancy/journal/cashjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); - $resultmid = $db->query($sqlmid); - if ($resultmid) { - $objmid = $db->fetch_object($resultmid); - $bookkeeping->doc_ref = $objmid->facnumber; - } - $bookkeeping->code_tiers = $k; - $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; - } else { - - $bookkeeping->doc_ref = $k; - $bookkeeping->numero_compte = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; - } - - $result = $bookkeeping->create(); - if ($result < 0) { - $error ++; - setEventMessage($object->errors, 'errors'); - } - } - } - - if (empty($error)) { - setEventMessage($langs->trans('Success'), 'mesgs'); - } -} -// Export -if ($action == 'export_csv') { - $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; - $cash_journal = $conf->global->ACCOUNTING_CASH_JOURNAL; - - header('Content-Type: text/csv'); - header('Content-Disposition:attachment;filename=journal_caisse.csv'); - - if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) // Model Cegid Expert Export - { - $sep = ";"; - - foreach ( $tabpay as $key => $val ) { - $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); - - // Cash - foreach ( $tabbq[$key] as $k => $mt ) { - print $date . $sep; - print $cash_journal . $sep; - print length_accountg(html_entity_decode($k)) . $sep; - print $sep; - print ($mt < 0 ? 'C' : 'D') . $sep; - print ($mt <= 0 ? price(- $mt) : $mt) . $sep; - print $val["type_payment"] . $sep; - print $val["ref"] . $sep; - print "\n"; - } - - // Third party - foreach ( $tabtp[$key] as $k => $mt ) { - if ($mt) { - print $date . $sep; - print $cash_journal . $sep; - if ($val["lib"] == '(SupplierInvoicePayment)') { - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; - } else { - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; - } - print length_accounta(html_entity_decode($k)) . $sep; - print ($mt < 0 ? 'D' : 'C') . $sep; - print ($mt <= 0 ? price(- $mt) : $mt) . $sep; - print $val["type_payment"] . $sep; - print $val["ref"] . $sep; - print "\n"; - } - } - } - } else // Model Classic Export - { - foreach ( $tabpay as $key => $val ) { - $date = dol_print_date($db->jdate($val["date"]), 'day'); - - // Cash - foreach ( $tabbq[$key] as $k => $mt ) { - print '"' . $date . '"' . $sep; - print '"' . $val["ref"] . '"' . $sep; - print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; - print '"' . $langs->trans("Cash") . '"' . $sep; - print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; - print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; - print "\n"; - } - - // Third party - foreach ( $tabtp[$key] as $k => $mt ) { - if ($mt) { - print '"' . $date . '"' . $sep; - print '"' . $val["ref"] . '"' . $sep; - print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; - print '"' . $langs->trans("ThirdParty") . '"' . $sep; - print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; - print '"' . ($mt >= 0 ? price($mt) : '') . '"'; - print "\n"; - } - } - } - } -} else { - - $form = new Form($db); - - llxHeader('', $langs->trans("CashJournal"), ''); - - $name = $langs->trans("CashJournal"); - $nomlink = ''; - $periodlink = ''; - $exportlink = ''; - $builddate = time(); - $description = $langs->trans("DescCashJournal") . '
'; - $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); - report_header($name, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => '')); - - print ''; - - print ''; - - print ' - '; - - /* - * Show result array - */ - print '

'; - - $i = 0; - print ""; - print ""; - print ""; - print ""; - print ""; - print ""; - print "\n"; - - $var = true; - $r = ''; - - foreach ( $tabpay as $key => $val ) { - $date = dol_print_date($db->jdate($val["date"]), 'day'); - - // Cash - foreach ( $tabbq[$key] as $k => $mt ) { - if (1) { - print ""; - print ""; - print ""; - print ""; - print '"; - print '"; - print ""; - } - } - - // third party - foreach ( $tabtp[$key] as $k => $mt ) { - if ($k != 'type') { - print ""; - - print ""; - print ""; - - print ""; - print '"; - print '"; - } - } - - $var = ! $var; - } - - print "
" . $langs->trans("Date") . "" . $langs->trans("Piece") . ' (' . $langs->trans("InvoiceRef") . ")" . $langs->trans("Account") . "" . $langs->trans("Debit") . "" . $langs->trans("Credit") . "
" . $date . "" . $val["lib"] . "" . length_accountg($k) . "' . ($mt >= 0 ? price($mt) : '') . "' . ($mt < 0 ? price(- $mt) : '') . "
" . $date . "" . $val["soclib"] . "" . length_accounta($k) . "' . ($mt < 0 ? price(- $mt) : '') . "' . ($mt >= 0 ? price($mt) : '') . "
"; - - // End of page - llxFooter(); -} -$db->close(); \ No newline at end of file From fe62e038cadd656ccfefe2f04dd0632fd935a1f0 Mon Sep 17 00:00:00 2001 From: Stephen L Date: Sun, 22 Feb 2015 14:34:51 +0100 Subject: [PATCH 19/54] Fix lastrowid-*table* option when defining imports (fix extrafields fk_object value) Signed-off-by: Stephen L. --- htdocs/core/modules/import/import_csv.modules.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 14de889d9ce..d487d3f8aef 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -354,6 +354,7 @@ class ImportCsv extends ModeleImports } else { + $last_insert_id_array = array(); // store the last inserted auto_increment id for each table, so that dependent tables can be inserted with the appropriate id (eg: extrafields fk_object will be set with the last inserted object's id) // For each table to insert, me make a separate insert foreach($objimport->array_import_tables[0] as $alias => $tablename) { @@ -581,7 +582,7 @@ class ImportCsv extends ModeleImports elseif (preg_match('/^lastrowid-/',$val)) { $tmp=explode('-',$val); - $lastinsertid=$this->db->last_insert_id($tmp[1]); + $lastinsertid=(isset($last_insert_id_array[$tmp[1]]))?$last_insert_id_array[$tmp[1]]:0; $listfields.=preg_replace('/^'.preg_quote($alias).'\./','',$key); $listvalues.=$lastinsertid; //print $key."-".$val."-".$listfields."-".$listvalues."
";exit; @@ -623,6 +624,7 @@ class ImportCsv extends ModeleImports if ($sql) { $resql=$this->db->query($sql); + $last_insert_id_array[$tablename] = $this->db->last_insert_id($tablename); // store the last inserted auto_increment id for each table, so that dependent tables can be inserted with the appropriate id. This must be done just after the INSERT request, else we risk losing the id (because another sql query will be issued somewhere in Dolibarr). if ($resql) { //print '.'; From 4ba095cb5c3a0929ea3e8523e8815c3e72620cfc Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 22 Feb 2015 15:04:18 +0100 Subject: [PATCH 20/54] FIXED: Bankjournal is generated from id_account now --- htdocs/accountancy/journal/bankjournal.php | 178 ++++++++++++++++----- 1 file changed, 139 insertions(+), 39 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index b9d3b9209f9..8125f6ef14d 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -103,9 +103,7 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "bank as b"; $sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid"; -// To isolate the cash of the other accounts -$sql .= " WHERE ba.courant <> 2"; -$sql .= " AND ba.rowid=".$id_accountancy_journal; +$sql .= " WHERE ba.rowid=".$id_accountancy_journal; if (! empty($conf->multicompany->enabled)) { $sql .= " AND ba.entity = " . $conf->entity; } @@ -218,6 +216,7 @@ if ($result) { $sqlmid .= " INNER JOIN " . MAIN_DB_PREFIX . "bank_url as bkurl ON bkurl.url_id=paycharg.rowid"; $sqlmid .= " WHERE bkurl.fk_bank=" . $obj->rowid; + dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); $resultmid = $db->query($sqlmid); if ($resultmid) @@ -237,6 +236,7 @@ if ($result) { { $paymentsalstatic->id = $links[$key]['url_id']; $paymentsalstatic->ref = $links[$key]['url_id']; + $paymentsalstatic->label = $links[$key]['label']; $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2); $tabtp[$obj->rowid][$accountancy_account_salary] += $obj->amount; } @@ -421,6 +421,7 @@ if ($action == 'export_csv') foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); + $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; @@ -438,21 +439,44 @@ if ($action == 'export_csv') } // Third party - foreach ( $tabtp[$key] as $k => $mt ) { - if ($mt) { - print $date . $sep; - print $bank_journal . $sep; - if ($val["lib"] == '(SupplierInvoicePayment)') { - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; - } else { - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; + if (is_array ( $tabtp[$key])) + { + foreach ( $tabtp[$key] as $k => $mt ) + { + if ($mt) + { + print $date . $sep; + print $bank_journal . $sep; + if ($val["lib"] == '(SupplierInvoicePayment)') { + print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; + } else { + print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; + } + print length_accounta(html_entity_decode($k)) . $sep; + print ($mt < 0 ? 'D' : 'C') . $sep; + print ($mt <= 0 ? price(- $mt) : $mt) . $sep; + print $val["type_payment"] . $sep; + print $val["ref"] . $sep; + print "\n"; + } + } + } + else + { + foreach ( $tabbq[$key] as $k => $mt ) + { + if (1) + { + print $date . $sep; + print $bank_journal . $sep; + print $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . $sep; + print $sep; + print ($mt < 0 ? 'D' : 'C') . $sep; + print ($mt <= 0 ? price(- $mt) : $mt) . $sep; + print $val["type_payment"] . $sep; + print $val["ref"] . $sep; + print "\n"; } - print length_accounta(html_entity_decode($k)) . $sep; - print ($mt < 0 ? 'D' : 'C') . $sep; - print ($mt <= 0 ? price(- $mt) : $mt) . $sep; - print $val["type_payment"] . $sep; - print $val["ref"] . $sep; - print "\n"; } } } @@ -476,15 +500,35 @@ if ($action == 'export_csv') } // Third party - foreach ( $tabtp[$key] as $k => $mt ) { - if ($mt) { - print '"' . $date . '"' . $sep; - print '"' . $val["type_payment"] . '"' . $sep; - print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; - print '"' . $companystatic->name . '"' . $sep; - print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; - print '"' . ($mt >= 0 ? price($mt) : '') . '"'; - print "\n"; + if (is_array ( $tabtp[$key])) + { + foreach ( $tabtp[$key] as $k => $mt ) + { + if ($mt) { + print '"' . $date . '"' . $sep; + print '"' . $val["type_payment"] . '"' . $sep; + print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; + print '"' . $companystatic->name . '"' . $sep; + print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; + print '"' . ($mt >= 0 ? price($mt) : '') . '"'; + print "\n"; + } + } + } + else + { + foreach ( $tabbq[$key] as $k => $mt ) + { + if (1) + { + print '"' . $date . '"' . $sep; + print '"' . $val["ref"] . '"' . $sep; + print '"' . $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . '"' . $sep; + print '"' . $langs->trans("Bank") . '"' . $sep; + print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; + print '"' . ($mt >= 0 ? price($mt) : '') . '"'; + print "\n"; + } } } } @@ -498,14 +542,54 @@ else llxHeader('', $langs->trans("BankJournal")); $namereport = $langs->trans("BankJournal"); - $namelink = ''; - $periodlink = ''; - $exportlink = ''; - $builddate = time(); - $description = $langs->trans("DescBankJournal") . '
'; + $description = $langs->trans("DescBankJournal"); $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); - report_header($namereport, $namelink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => '')); + // Report + $h=0; + $head[$h][0] = $_SERVER["PHP_SELF"].'?id_account='.$id_accountancy_journal; + $head[$h][1] = $langs->trans("Report"); + $head[$h][2] = 'report'; + + dol_fiche_head($head, $hselected); + + print ''; + print ''; + + // Title + print ''; + print ''; + print ''; + print ''; + print ''; + + // Period report + print ''; + print ''; + if (! $periodlink) print ''; + print ''; + + // Description + print ''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + + print '
'.$langs->trans("ReportName").''.$namereport.'
'.$langs->trans("ReportPeriod").''; + else print ''; + if ($period) print $period; + if ($periodlink) print ''.$periodlink; + print '
'.$langs->trans("ReportDescription").''.$description.'
'; + + print ''; + + print ''; + // End report + print ''; print ''; @@ -565,20 +649,36 @@ else } // Third party - foreach ( $tabtp[$key] as $k => $mt ) { - if ($k != 'type') { + if (is_array ( $tabtp[$key])) + { + foreach ( $tabtp[$key] as $k => $mt ) { + if ($k != 'type') { + print ""; + print "" . $date . ""; + print "" . $val["soclib"] . ""; + print "" . length_accounta($k) . ""; + print "" . $langs->trans('ThirdParty') . " (" . $val['soclib'] . ")"; + print "" . $val["type_payment"] . ""; + print "" . ($mt < 0 ? price(- $mt) : '') . ""; + print "" . ($mt >= 0 ? price($mt) : '') . ""; + print ""; + } + } + } + else + { + foreach ( $tabbq[$key] as $k => $mt ) + { print ""; print "" . $date . ""; - print "" . $val["soclib"] . ""; - print "" . length_accounta($k) . ""; - print "" . $langs->trans('ThirdParty') . " (" . $val['soclib'] . ")"; - print "" . $val["type_payment"] . ""; + print "" . $reflabel . ""; + print "" . $conf->global->ACCOUNTING_ACCOUNT_SUSPENSE . ""; + print "" . $langs->trans('ThirdParty') . ""; print "" . ($mt < 0 ? price(- $mt) : '') . ""; print "" . ($mt >= 0 ? price($mt) : '') . ""; print ""; } } - $var = ! $var; } From b04682db4c66aa30a1555d58eeaed3eea1abdf52 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 22 Feb 2015 17:41:02 +0100 Subject: [PATCH 21/54] Fix Edit of extrafield on supplier invoice or order was deleteing other fields. Fix Missing escapment Fix new field delivery date was only into edit page --- htdocs/admin/supplierinvoice_extrafields.php | 1 + htdocs/core/class/extrafields.class.php | 4 ++-- .../class/fournisseur.commande.class.php | 8 +++---- htdocs/fourn/commande/card.php | 21 +++++++++++++------ htdocs/fourn/facture/card.php | 2 +- 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/htdocs/admin/supplierinvoice_extrafields.php b/htdocs/admin/supplierinvoice_extrafields.php index 79dc0637b46..755a68b338e 100644 --- a/htdocs/admin/supplierinvoice_extrafields.php +++ b/htdocs/admin/supplierinvoice_extrafields.php @@ -31,6 +31,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; +$langs->load("orders"); if (!$user->admin) accessforbidden(); diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 544619892b5..008dff0f019 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1061,8 +1061,8 @@ class ExtraFields * Fill array_options property of object by extrafields value (using for data sent by forms) * * @param array $extralabels $array of extrafields - * @param object $object Object - * @param string $onlykey Only following key is filled + * @param object $object Object + * @param string $onlykey Only following key is filled. When we make update of only one extrafield ($action = 'update_extras'), calling page must must set this to avoid to have other extrafields being reset. * @return int 1 if array_options set / 0 if no value */ function setOptionalsFromPost($extralabels,&$object,$onlykey='') diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 9051ab0bb27..5faba969755 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -887,7 +887,7 @@ class CommandeFournisseur extends CommonOrder $sql.= ", entity"; $sql.= ", fk_soc"; $sql.= ", date_creation"; - //$sql.= ", date_livraison"; + $sql.= ", date_livraison"; $sql.= ", fk_user_author"; $sql.= ", fk_statut"; $sql.= ", source"; @@ -899,12 +899,12 @@ class CommandeFournisseur extends CommonOrder $sql.= " VALUES ("; $sql.= "''"; $sql.= ", '".$this->ref_supplier."'"; - $sql.= ", '".$this->note_private."'"; - $sql.= ", '".$this->note_public."'"; + $sql.= ", '".$this->db->escape($this->note_private)."'"; + $sql.= ", '".$this->db->escape($this->note_public)."'"; $sql.= ", ".$conf->entity; $sql.= ", ".$this->socid; $sql.= ", '".$this->db->idate($now)."'"; - //$sql.= ", '".$this->db->idate($now)."'"; + $sql.= ", ".($this->date_livraison?"'".$this->db->idate($this->date_livraison)."'":"null"); $sql.= ", ".$user->id; $sql.= ", 0"; $sql.= ", " . $this->source; diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index ef78a9981c1..28b492651c0 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -69,6 +69,8 @@ $hidedetails = (GETPOST('hidedetails','int') ? GETPOST('hidedetails','int') : (! $hidedesc = (GETPOST('hidedesc','int') ? GETPOST('hidedesc','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0)); $hideref = (GETPOST('hideref','int') ? GETPOST('hideref','int') : (! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0)); +$datelivraison=dol_mktime(GETPOST('liv_hour','int'), GETPOST('liv_min','int'), GETPOST('liv_sec','int'), GETPOST('liv_month','int'), GETPOST('liv_day','int'),GETPOST('liv_year','int')); + // Security check if ($user->societe_id) $socid=$user->societe_id; @@ -144,8 +146,6 @@ if ($action == 'setbankaccount' && $user->rights->fournisseur->commande->creer) // date de livraison if ($action == 'setdate_livraison' && $user->rights->fournisseur->commande->creer) { - $datelivraison=dol_mktime(GETPOST('liv_hour','int'), GETPOST('liv_min','int'), GETPOST('liv_sec','int'), GETPOST('liv_month','int'), GETPOST('liv_day','int'),GETPOST('liv_year','int')); - $result=$object->set_date_livraison($user,$datelivraison); if ($result < 0) { @@ -780,9 +780,8 @@ if ($action == 'update_extras') { // Fill array 'array_options' with data from add form $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); - - if($ret < 0) $error++; + $ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute')); + if ($ret < 0) $error++; if (!$error) { @@ -797,7 +796,6 @@ if ($action == 'update_extras') { if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used { - $result=$object->insertExtraFields(); if ($result < 0) @@ -841,6 +839,7 @@ if ($action == 'add' && $user->rights->fournisseur->commande->creer) $object->fk_account = GETPOST('fk_account', 'int'); $object->note_private = GETPOST('note_private'); $object->note_public = GETPOST('note_public'); + $object->date_livraison = $datelivraison; // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); @@ -1272,6 +1271,16 @@ if ($action=="create") $form->select_types_paiements(isset($_POST['mode_reglement_id'])?$_POST['mode_reglement_id']:$mode_reglement_id,'mode_reglement_id'); print ''; + // Planned delivery date + print ''; + print $langs->trans('DateDeliveryPlanned'); + print ''; + print ''; + $usehourmin=0; + if (! empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin=1; + $form->select_date($datelivraison?$datelivraison:-1,'liv_',$usehourmin,$usehourmin,'',"set"); + print ''; + // Bank Account if (! empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && ! empty($conf->banque->enabled)) { diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 26aeffad655..a10aa89ae65 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1070,7 +1070,7 @@ elseif ($action == 'update_extras') { // Fill array 'array_options' with data from add form $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + $ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute')); if($ret < 0) $error++; From 25bb6a588f49dd7db6f8b5a22d117221c8323730 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Feb 2015 00:57:48 +0100 Subject: [PATCH 22/54] Fix list of project must be restricted on opened status --- htdocs/langs/en_US/projects.lang | 2 ++ htdocs/projet/activity/list.php | 9 +++++---- htdocs/projet/class/project.class.php | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 84624b219f9..52f4376d57b 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -8,8 +8,10 @@ SharedProject=Everybody PrivateProject=Contacts of project MyProjectsDesc=This view is limited to projects you are a contact for (whatever is the type). ProjectsPublicDesc=This view presents all projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). MyTasksDesc=This view is limited to projects or tasks you are a contact for (whatever is the type). +OnlyOpenedProject=Only opened projects are visible (projects with draft or closed status are not visible). TasksPublicDesc=This view presents all projects and tasks you are allowed to read. TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). ProjectsArea=Projects area diff --git a/htdocs/projet/activity/list.php b/htdocs/projet/activity/list.php index 692e4ab08b4..af569d3351f 100644 --- a/htdocs/projet/activity/list.php +++ b/htdocs/projet/activity/list.php @@ -125,7 +125,8 @@ if ($id) $project->fetch_thirdparty(); } -$tasksarray=$taskstatic->getTasksArray(0,0,($project->id?$project->id:$projectsListId),$socid,0); // We want to see all task of project i am allowed to see, not only mine. Later only mine will be editable later. +$onlyopened=1; // or -1 +$tasksarray=$taskstatic->getTasksArray(0,0,($project->id?$project->id:$projectsListId),$socid,0,'',$onlyopened); // We want to see all task of opened project i am allowed to see, not only mine. Later only mine will be editable later. $projectsrole=$taskstatic->getUserRolesForProjectsOrTasks($user,0,($project->id?$project->id:$projectsListId),0); $tasksrole=$taskstatic->getUserRolesForProjectsOrTasks(0,$user,($project->id?$project->id:$projectsListId),0); //var_dump($tasksarray); @@ -138,11 +139,11 @@ llxHeader("",$title,""); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num); // Show description of content -if ($mine) print $langs->trans("MyTasksDesc").'

'; +if ($mine) print $langs->trans("MyTasksDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'

'; else { - if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").'

'; - else print $langs->trans("ProjectsPublicTakDesc").'

'; + if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").($onlyopened?' '.$langs->trans("OnlyOpenedProject"):'').'

'; + else print $langs->trans("ProjectsPublicTaskDesc").($onlyopened?' '.$langs->trans("AlsoOnlyOpenedProject"):'').'

'; } diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 5c54cae4174..fbb35990954 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -56,7 +56,7 @@ class Project extends CommonObject var $note_private; var $note_public; var $statuts_short; - var $statuts; + var $statuts; // 0=draft, 1=opened, 2=closed var $oldcopy; From dbaef5ca6b450b3c6b70bf505b97fc8f3b71bf0d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Feb 2015 01:00:07 +0100 Subject: [PATCH 23/54] Fix link does not return same number that nmber into link --- htdocs/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/index.php b/htdocs/index.php index ebc6760252c..7e922c7059a 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -317,7 +317,7 @@ if (! empty($conf->agenda->enabled) && $user->rights->agenda->myactions->read) $board->load_board($user); $board->warning_delay=$conf->actions->warning_delay/60/60/24; $board->label=$langs->trans("ActionsToDo"); - $board->url=DOL_URL_ROOT.'/comm/action/listactions.php?status=todo&mainmenu=agenda'; + $board->url=DOL_URL_ROOT.'/comm/action/listactions.php?status=todo&usertodo=-1&mainmenu=agenda'; $board->img=img_object($langs->trans("Actions"),"action"); $rowspan++; $dashboardlines[]=$board; From ae8d090ebe4862ff037ccf64acc297d2b399d82f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Feb 2015 11:43:38 +0100 Subject: [PATCH 24/54] Fix No default filter by default, we miss data --- htdocs/projet/element.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index d43af94ee71..6860ff1479f 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2014 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2012 Juanjo Menent * @@ -57,7 +57,7 @@ $dates=dol_mktime(0, 0, 0, GETPOST('datesmonth'), GETPOST('datesday'), GETPOST(' $datee=dol_mktime(23, 59, 59, GETPOST('dateemonth'), GETPOST('dateeday'), GETPOST('dateeyear')); if (empty($dates) && ! empty($datesrfc)) $dates=dol_stringtotime($datesrfc); if (empty($datee) && ! empty($dateerfc)) $datee=dol_stringtotime($dateerfc); -if (! isset($_POST['datesrfc']) && ! isset($_POST['datesday'])) +if (! isset($_POST['datesrfc']) && ! isset($_POST['datesday']) && ! empty($conf->global->PROJECT_LINKED_ELEMENT_DEFAULT_FILTER_YEAR)) { $new=dol_now(); $tmp=dol_getdate($new); From 570194b4b9a615f6870068fb73023e1662a59626 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Feb 2015 13:10:18 +0100 Subject: [PATCH 25/54] Fix validation of email when there is a comma separator. --- htdocs/admin/notification.php | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 14aeba65c29..695174f3303 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -33,6 +33,7 @@ $langs->load("orders"); $langs->load("propal"); $langs->load("bills"); $langs->load("errors"); +$langs->load("mails"); // Security check if (!$user->admin) @@ -76,7 +77,9 @@ if ($action == 'setvalue' && $user->admin) * View */ -llxHeader(); +$form=new Form($db); + +llxHeader('',$langs->trans("NotificationSetup")); $linkback=''.$langs->trans("BackToModuleList").''; print_fiche_titre($langs->trans("NotificationSetup"),$linkback,'setup'); @@ -132,9 +135,19 @@ foreach($listofnotifiedevents as $notifiedevent) print ''.$elementLabel.''; print ''.$notifiedevent['code'].''; print ''.$label.''; + print ''; $param='NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code']; - print ''; - if (! empty($conf->global->$param) && ! isValidEmail($conf->global->$param)) print ' '.img_warning($langs->trans("ErrorBadEMail")); + $value=GETPOST($param)?GETPOST($param,'alpha'):$conf->global->$param; + $s=''; // Do not use type="email" here, we must be able to enter a list of email with , separator. + $arrayemail=explode(',',$value); + $showwarning=0; + foreach($arrayemail as $key=>$valuedet) + { + $valuedet=trim($valuedet); + if (! empty($valuedet) && ! isValidEmail($valuedet)) $showwarning++; + } + if ((! empty($conf->global->$param)) && $showwarning) $s.=' '.img_warning($langs->trans("ErrorBadEMail")); + print $form->textwithpicto($s,$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients")); print ''; print ''; } From d3a79c87245bff5227e3486c7e75bbf203b43489 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Feb 2015 14:44:24 +0100 Subject: [PATCH 26/54] Fix default entity guess --- htdocs/user/card.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 429bcc91130..ec6b65e534c 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1,7 +1,7 @@ * Copyright (C) 2002-2003 Jean-Louis Bergamo - * Copyright (C) 2004-2012 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2005 Lionel Cousteix @@ -213,25 +213,25 @@ if ($action == 'add' && $canadduser) $ret = $extrafields->setOptionalsFromPost($extralabels,$object); // If multicompany is off, admin users must all be on entity 0. + $entity=GETPOST('entity','int'); if (! empty($conf->multicompany->enabled)) { - $entity=GETPOST('entity','int'); if (! empty($_POST["superadmin"])) { $object->entity = 0; } else if ($conf->multicompany->transverse_mode) { - $object->entity = 1; // all users in master entity + $object->entity = 1; // all users are forced into master entity } else { - $object->entity = (empty($entity) ? 0 : $entity); + $object->entity = ($entity == '' ? 1 : $entity); } } else { - $object->entity = (empty($entity) ? 0 : $entity); + $object->entity = ($entity == '' ? 1 : $entity); } $db->begin(); From 4128c8603554dfd2972252edb36a6c8d2dcd1baa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Feb 2015 19:31:42 +0100 Subject: [PATCH 27/54] Fix: Filter on statut was lost --- htdocs/fourn/commande/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 54cc7b1964a..69db321b72e 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -43,7 +43,7 @@ $search_company=GETPOST('search_company'); $search_user=GETPOST('search_user'); $search_ttc=GETPOST('search_ttc'); $sall=GETPOST('search_all'); -$search_status=GETPOST('search_status','int'); +$search_status=(GETPOST('search_status','int')!=''?GETPOST('search_status','int'):GETPOST('statut','int')); $page = GETPOST('page','int'); $socid = GETPOST('socid','int'); From 0a5c3e1fa81b6d1d2b1d35e258b7933bd414b9f6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 23 Feb 2015 23:15:41 +0100 Subject: [PATCH 28/54] Fix price must be hidden if context is not on sell --- htdocs/product/list.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/product/list.php b/htdocs/product/list.php index a5cc97defa7..c060ef424e6 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -456,8 +456,11 @@ else if (empty($conf->global->PRODUIT_MULTIPRICES)) { print ''; - if ($objp->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); - else print price($objp->price).' '.$langs->trans("HT"); + if ($objp->tosell) + { + if ($objp->price_base_type == 'TTC') print price($objp->price_ttc).' '.$langs->trans("TTC"); + else print price($objp->price).' '.$langs->trans("HT"); + } print ''; } @@ -465,7 +468,7 @@ else if ($user->rights->fournisseur->lire) { print ''; - if ($objp->minsellprice != '') + if ($objp->tobuy && $objp->minsellprice != '') { //print price($objp->minsellprice).' '.$langs->trans("HT"); if ($product_fourn->find_min_price_product_fournisseur($objp->rowid) > 0) From 9842e816d08272475f029ab8ce91108d5c0cd6c8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Feb 2015 11:24:15 +0100 Subject: [PATCH 29/54] Fix bad sql type Fix no input outside tr-td --- htdocs/fourn/commande/dispatch.php | 45 ++++++++++++------- .../install/mysql/migration/3.6.0-3.7.0.sql | 2 +- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index d5ace69a09f..c88886de649 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -347,28 +347,41 @@ if ($id > 0 || ! empty($ref)) print ''.$objp->qty.''; print ''.$products_dispatched[$objp->rowid].''; - if ( !(empty($conf->productbatch->enabled)) && $objp->tobatch==1) { - print ''.img_picto_common($langs->trans('AddDispatchBatchLine'),'treemenu/plustop2.gif','onClick="AddLineBatch('.$i.')"').''; + if (! empty($conf->productbatch->enabled) && $objp->tobatch==1) + { + print ''.img_picto($langs->trans('AddDispatchBatchLine'),'split.png','onClick="addLineBatch('.$i.')"').''; // Dispatch column + print ''; // Warehouse column print ''; - print ''; - print ''; - print ''; - print ''; - $form->select_date('','dlc'.$suffix,'','',1,""); - print ''; - $form->select_date('','dluo'.$suffix,'','',1,""); - print ''; - print ''; - print ''; - print ' '; - } else { - print ''; + + print ''; + print ''; print ''; + print ''; print ''; + print ''; + + print ''; + $form->select_date('','dlc'.$suffix,'','',1,""); + print ''; + print ''; + $form->select_date('','dluo'.$suffix,'','',1,""); + print ''; + print ''; + print ''; + print ''; + print ' '; // Qty ordered + qty already dispatached } // Dispatch - print ''; + print ''; + if (empty($conf->productbatch->enabled) || $objp->tobatch!=1) + { + print ''; + print ''; + print ''; + } + print ''; + print ''; // Warehouse print ''; diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index dc912be4286..2efb6996993 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -1161,4 +1161,4 @@ ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_b UPDATE llx_bank_url set url = REPLACE( url, 'fiche.php', 'card.php'); -- Add id commandefourndet in llx_commande_fournisseur_dispatch to correct /fourn/commande/dispatch.php display when several times same product in supplier order -ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_commandefourndet INT(11) NOT NULL DEFAULT '0' AFTER fk_product; +ALTER TABLE llx_commande_fournisseur_dispatch ADD COLUMN fk_commandefourndet INTEGER NOT NULL DEFAULT 0 AFTER fk_product; From 44c392ca237e1da846d16a9ba2408940ac70f19b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Feb 2015 13:35:37 +0100 Subject: [PATCH 30/54] Fix missing profid5 and 6 --- htdocs/core/modules/modSociete.class.php | 4 ++-- htdocs/imports/import.php | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 63cb9c610b4..af538845061 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -382,7 +382,7 @@ class modSociete extends DolibarrModules $this->import_icon[$r]='company'; $this->import_entities_array[$r]=array(); // We define here only fields that use another icon that the one defined into import_icon $this->import_tables_array[$r]=array('s'=>MAIN_DB_PREFIX.'societe','extra'=>MAIN_DB_PREFIX.'societe_extrafields'); // List of tables to insert into (insert done in same order) - $this->import_fields_array[$r]=array('s.nom'=>"Name*",'s.status'=>"Status",'s.client'=>"Customer*",'s.fournisseur'=>"Supplier*",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"CustomerAccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'s.fk_departement'=>"StateId",'s.fk_pays'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'s.fk_typent'=>"ThirdPartyType",'s.fk_effectif'=>"Staff","s.fk_forme_juridique"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','s.fk_stcomm'=>'ProspectStatus','s.default_lang'=>'DefaultLanguage','s.barcode'=>'BarCode','s.datec'=>"DateCreation"); + $this->import_fields_array[$r]=array('s.nom'=>"Name*",'s.status'=>"Status",'s.client'=>"Customer*",'s.fournisseur'=>"Supplier*",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"CustomerAccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'s.fk_departement'=>"StateId",'s.fk_pays'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'s.fk_typent'=>"ThirdPartyType",'s.fk_effectif'=>"Staff","s.fk_forme_juridique"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','s.fk_stcomm'=>'ProspectStatus','s.default_lang'=>'DefaultLanguage','s.barcode'=>'BarCode','s.datec'=>"DateCreation"); // Add extra fields $sql="SELECT name, label, fieldrequired FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'societe' AND entity = ".$conf->entity; $resql=$this->db->query($sql); @@ -408,7 +408,7 @@ class modSociete extends DolibarrModules ); //$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t'); $this->import_regex_array[$r]=array('s.status'=>'^[0|1]','s.client'=>'^[0|1|2|3]','s.fournisseur'=>'^[0|1]','s.fk_typent'=>'id@'.MAIN_DB_PREFIX.'c_typent','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$'); - $this->import_examplevalues_array[$r]=array('s.nom'=>"MyBigCompany",'s.status'=>"0 (closed) or 1 (active)",'s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 or 1','s.datec'=>dol_print_date(dol_now(),'%Y-%m-%d'),'s.code_client'=>"CU01-0001 or empty or 'auto'",'s.code_fournisseur'=>"SU01-0001 or empty or 'auto'",'s.address'=>"61 jump street",'s.zip'=>"123456",'s.town'=>"Big town",'s.fk_pays'=>'US, FR, DE...','s.phone'=>"0101010101",'s.fax'=>"0101010102",'s.url'=>"http://mycompany.com",'s.email'=>"test@mycompany.com",'s.siret'=>"",'s.siren'=>"",'s.ape'=>"",'s.idprof4'=>"",'s.tva_intra'=>"FR0123456789",'s.capital'=>"10000",'s.note_private'=>"This is an example of private note for record",'s.note_public'=>"This is an example of public note for record",'s.fk_typent'=>"2",'s.fk_effectif'=>"3","s.fk_forme_juridique"=>"1",'s.fk_prospectlevel'=>'PL_MEDIUM','s.fk_stcomm'=>'0','s.default_lang'=>'en_US','s.barcode'=>'123456789'); + $this->import_examplevalues_array[$r]=array('s.nom'=>"MyBigCompany",'s.status'=>"0 (closed) or 1 (active)",'s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 or 1','s.datec'=>dol_print_date(dol_now(),'%Y-%m-%d'),'s.code_client'=>"CU01-0001 or empty or 'auto'",'s.code_fournisseur'=>"SU01-0001 or empty or 'auto'",'s.address'=>"61 jump street",'s.zip'=>"123456",'s.town'=>"Big town",'s.fk_pays'=>'US, FR, DE...','s.phone'=>"0101010101",'s.fax'=>"0101010102",'s.url'=>"http://mycompany.com",'s.email'=>"test@mycompany.com",'s.siret'=>"",'s.siren'=>"",'s.ape'=>"",'s.idprof4'=>"",'s.idprof5'=>"",'s.idprof6'=>"",'s.tva_intra'=>"FR0123456789",'s.capital'=>"10000",'s.note_private'=>"This is an example of private note for record",'s.note_public'=>"This is an example of public note for record",'s.fk_typent'=>"2",'s.fk_effectif'=>"3","s.fk_forme_juridique"=>"1",'s.fk_prospectlevel'=>'PL_MEDIUM','s.fk_stcomm'=>'0','s.default_lang'=>'en_US','s.barcode'=>'123456789'); // Import list of contact and attributes $r++; diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 125b8dc0285..c6ab76dff41 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -33,6 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/import.lib.php'; $langs->load("exports"); +$langs->load("compta"); $langs->load("errors"); // Security check From 74f15680e1056548f4c97b19481b1d48fc1424ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Feb 2015 15:40:50 +0100 Subject: [PATCH 31/54] Fix missing fields into import of thirdparties. Fix import failed to find type of companny from source file. Fix import date of creation has wrong check rule. --- htdocs/core/class/ctypent.class.php | 5 ++-- .../modules/import/import_csv.modules.php | 23 +++++++++++++------ htdocs/core/modules/modSociete.class.php | 8 +++---- htdocs/langs/en_US/errors.lang | 2 +- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/htdocs/core/class/ctypent.class.php b/htdocs/core/class/ctypent.class.php index 027dda53dd3..c7894c7c848 100644 --- a/htdocs/core/class/ctypent.class.php +++ b/htdocs/core/class/ctypent.class.php @@ -148,9 +148,10 @@ class Ctypent // extends CommonObject * * @param int $id Id object * @param string $code Code + * @param string $label Label * @return int <0 if KO, >0 if OK */ - function fetch($id,$code='') + function fetch($id,$code='',$label='') { global $langs; $sql = "SELECT"; @@ -163,8 +164,8 @@ class Ctypent // extends CommonObject $sql.= " FROM ".MAIN_DB_PREFIX."c_typent as t"; if ($id) $sql.= " WHERE t.id = ".$id; elseif ($code) $sql.= " WHERE t.code = '".$this->db->escape($code)."'"; + elseif ($label) $sql.= " WHERE t.libelle = '".$this->db->escape($label)."'"; - dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 14de889d9ce..2fd213c3774 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -414,21 +414,34 @@ class ImportCsv extends ModeleImports if (! empty($objimport->array_import_convertvalue[0][$val])) { //print 'Must convert '.$newval.' with rule '.join(',',$objimport->array_import_convertvalue[0][$val]).'. '; - if ($objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeid' || $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromref') + if ($objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeid' + || $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromref' + || $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeorlabel' + ) { if (! is_numeric($newval) && $newval != '') // If value into input import file is not a numeric, we apply the function defined into descriptor { $file=$objimport->array_import_convertvalue[0][$val]['classfile']; $class=$objimport->array_import_convertvalue[0][$val]['class']; $method=$objimport->array_import_convertvalue[0][$val]['method']; - if (empty($this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval])) + if ($this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval] != '') { + $newval=$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]; + } + else + { dol_include_once($file); $classinstance=new $class($this->db); + // Try the fetch from code or ref call_user_func_array(array($classinstance, $method),array('', $newval)); + // If not found, try the fetch from label + if (! ($classinstance->id != '') && $objimport->array_import_convertvalue[0][$val]['rule']=='fetchidfromcodeorlabel') + { + call_user_func_array(array($classinstance, $method),array('', '', $newval)); + } $this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]=$classinstance->id; //print 'We have made a '.$class.'->'.$method.' to get id from code '.$newval.'. '; - if (! empty($classinstance->id)) + if ($classinstance->id != '') // id may be 0, it is a found value { $newval=$classinstance->id; } @@ -442,10 +455,6 @@ class ImportCsv extends ModeleImports $error++; } } - else - { - $newval=$this->cacheconvert[$file.'_'.$class.'_'.$method.'_'][$newval]; - } } } diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index af538845061..3a2bcefe8b2 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -398,7 +398,7 @@ class modSociete extends DolibarrModules // End add extra fields $this->import_fieldshidden_array[$r]=array('s.fk_user_creat'=>'user->id','extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'societe'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent) $this->import_convertvalue_array[$r]=array( - 's.fk_typent'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ctypent.class.php','class'=>'Ctypent','method'=>'fetch','dict'=>'DictionaryCompanyType'), + 's.fk_typent'=>array('rule'=>'fetchidfromcodeorlabel','classfile'=>'/core/class/ctypent.class.php','class'=>'Ctypent','method'=>'fetch','dict'=>'DictionaryCompanyType'), 's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ccountry.class.php','class'=>'Ccountry','method'=>'fetch','dict'=>'DictionaryCountry'), 's.fk_stcomm'=>array('rule'=>'zeroifnull'), 's.code_client'=>array('rule'=>'getcustomercodeifauto'), @@ -407,8 +407,8 @@ class modSociete extends DolibarrModules 's.code_compta_fournisseur'=>array('rule'=>'getsupplieraccountancycodeifauto') ); //$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t'); - $this->import_regex_array[$r]=array('s.status'=>'^[0|1]','s.client'=>'^[0|1|2|3]','s.fournisseur'=>'^[0|1]','s.fk_typent'=>'id@'.MAIN_DB_PREFIX.'c_typent','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$'); - $this->import_examplevalues_array[$r]=array('s.nom'=>"MyBigCompany",'s.status'=>"0 (closed) or 1 (active)",'s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 or 1','s.datec'=>dol_print_date(dol_now(),'%Y-%m-%d'),'s.code_client'=>"CU01-0001 or empty or 'auto'",'s.code_fournisseur'=>"SU01-0001 or empty or 'auto'",'s.address'=>"61 jump street",'s.zip'=>"123456",'s.town'=>"Big town",'s.fk_pays'=>'US, FR, DE...','s.phone'=>"0101010101",'s.fax'=>"0101010102",'s.url'=>"http://mycompany.com",'s.email'=>"test@mycompany.com",'s.siret'=>"",'s.siren'=>"",'s.ape'=>"",'s.idprof4'=>"",'s.idprof5'=>"",'s.idprof6'=>"",'s.tva_intra'=>"FR0123456789",'s.capital'=>"10000",'s.note_private'=>"This is an example of private note for record",'s.note_public'=>"This is an example of public note for record",'s.fk_typent'=>"2",'s.fk_effectif'=>"3","s.fk_forme_juridique"=>"1",'s.fk_prospectlevel'=>'PL_MEDIUM','s.fk_stcomm'=>'0','s.default_lang'=>'en_US','s.barcode'=>'123456789'); + $this->import_regex_array[$r]=array('s.status'=>'^[0|1]','s.client'=>'^[0|1|2|3]','s.fournisseur'=>'^[0|1]','s.fk_typent'=>'id@'.MAIN_DB_PREFIX.'c_typent','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$'); + $this->import_examplevalues_array[$r]=array('s.nom'=>"MyBigCompany",'s.status'=>"0 (closed) or 1 (active)",'s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 or 1','s.datec'=>dol_print_date(dol_now(),'%Y-%m-%d'),'s.code_client'=>"CU01-0001 or empty or 'auto'",'s.code_fournisseur'=>"SU01-0001 or empty or 'auto'",'s.address'=>"61 jump street",'s.zip'=>"123456",'s.town'=>"Big town",'s.fk_pays'=>'US, FR, DE...','s.phone'=>"0101010101",'s.fax'=>"0101010102",'s.url'=>"http://mycompany.com",'s.email'=>"test@mycompany.com",'s.siret'=>"",'s.siren'=>"",'s.ape'=>"",'s.idprof4'=>"",'s.idprof5'=>"",'s.idprof6'=>"",'s.tva_intra'=>"FR0123456789",'s.capital'=>"10000",'s.note_private'=>"This is an example of private note for record",'s.note_public'=>"This is an example of public note for record",'s.fk_typent'=>"2",'s.fk_effectif'=>"3","s.fk_forme_juridique"=>"1",'s.fk_prospectlevel'=>'PL_MEDIUM','s.fk_stcomm'=>'0','s.default_lang'=>'en_US','s.barcode'=>'123456789','s.datec'=>"2015-01-01 or 2015-01-01 12:30:00"); // Import list of contact and attributes $r++; @@ -437,7 +437,7 @@ class modSociete extends DolibarrModules 's.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ccountry.class.php','class'=>'Ccountry','method'=>'fetch','dict'=>'DictionaryCountry'), ); //$this->import_convertvalue_array[$r]=array('s.fk_soc'=>array('rule'=>'lastrowid',table='t'); - $this->import_regex_array[$r]=array('s.birthday'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$'); + $this->import_regex_array[$r]=array('s.birthday'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$','s.datec'=>'^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?$'); $this->import_examplevalues_array[$r]=array('s.fk_soc'=>'MyBigCompany','s.civility'=>"MR",'s.lastname'=>"Smith",'s.firstname'=>'John','s.address'=>'61 jump street','s.zip'=>'75000','s.town'=>'Bigtown','s.fk_pays'=>'US, FR, DE...','s.datec'=>'1972-10-10','s.poste'=>"Director",'s.phone'=>"5551122",'s.phone_perso'=>"5551133",'s.phone_mobile'=>"5551144",'s.fax'=>"5551155",'s.email'=>"johnsmith@email.com",'s.note_private'=>"My private note",'s.note_public'=>"My public note"); // Import Bank Accounts diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index a2d73817bf1..fbfd55b9a9a 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -79,7 +79,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s en provide the error code %s in your message, or even better by adding a screen copy of this page. ErrorWrongValueForField=Wrong value for field number %s (value '%s' does not match regex rule %s) -ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s) +ErrorFieldValueNotIn=Wrong value for field number %s (value '%s' is not a value available into field %s of table %s = %s) ErrorFieldRefNotIn=Wrong value for field number %s (value '%s' is not a %s existing ref) ErrorsOnXLines=Errors on %s source record(s) ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) From 474a4125a4a86a03b8b97088a7441cc700a55e7a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 24 Feb 2015 16:51:20 +0100 Subject: [PATCH 32/54] It is better to point to portal home page instead of sub page. --- README-FR.md | 5 +++-- README.md | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README-FR.md b/README-FR.md index 8d3d7f36aa9..3f1819f6370 100644 --- a/README-FR.md +++ b/README-FR.md @@ -21,8 +21,9 @@ vous devez vous réorienter vers DoliWamp (la version tout-en-un de Dolibarr pour Windows), DoliDeb (la version tout-en-un pour Debian ou Ubuntu) ou DoliRpm (la version tout-en-un de Dolibarr pour Fedora, Redhat, OpenSuse, Mandriva ou Mageia). -Vous pouvez les télécharger à l'adresse: -http://www.dolibarr.org/downloads/ + +Vous pouvez les télécharger depuis la rubrique *download* du portail officiel: +http://www.dolibarr.org/ Si vous avez déjà installé un serveur Web avec PHP et une base de donnée (Mysql), vous pouvez installer Dolibarr avec cette version de la manière suivante: diff --git a/README.md b/README.md index 93b9d275beb..b97c14501ab 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Dolibarr is released under the terms of the GNU General Public License as publis If you have no technical knowledge, and you are looking for an autoinstaller to install Dolibarr ERP/CRM in few clicks, you must download DoliWamp (the all-in-one package of Dolibarr for Windows), DoliDeb (the all-in-one package of Dolibarr for Debian or Ubuntu) or DoliRpm (the all-in-one package of Dolibarr for Fedora, Redhat, Opensuse, Mandriva or Mageia). -You can download this at: [Official website] () +You can download this from the download area of [Official website] () If you already have installed a Web server and a Mysql database, you can install the standard version like this: From 76640b6b7758415e4634f7b5807718e4157a5bb8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 25 Feb 2015 15:01:25 +0100 Subject: [PATCH 33/54] Fix removed warning --- htdocs/comm/action/class/actioncomm.class.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index c879f50b346..9a9417a4dac 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -184,12 +184,12 @@ class ActionComm extends CommonObject $now=dol_now(); // Check parameters - if (empty($this->userownerid)) + if (empty($this->userownerid)) { $this->errors[]='ErrorPropertyUserowneridNotDefined'; return -1; } - + // Clean parameters $this->label=dol_trunc(trim($this->label),128); $this->location=dol_trunc(trim($this->location),128); @@ -214,7 +214,7 @@ class ActionComm extends CommonObject $userdoneid=$this->userdoneid; // Be sure assigned user is defined as an array of array('id'=>,'mandatory'=>,...). - if (empty($this->userassigned) || count($this->userassigned) == 0 || ! is_array($this->userassigned)) + if (empty($this->userassigned) || count($this->userassigned) == 0 || ! is_array($this->userassigned)) $this->userassigned = array($userownerid=>array('id'=>$userownerid)); if (! $this->type_id || ! $this->type_code) @@ -306,9 +306,9 @@ class ActionComm extends CommonObject { $val=array('id'=>$val); } - + $sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)"; - $sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".($val['mandatory']?$val['mandatory']:'0').", ".($val['transparency']?$val['transparency']:'0').", ".($val['answer_status']?$val['answer_status']:'0').")"; + $sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".(empty($val['mandatory'])?'0':$val['mandatory']).", ".(empty($val['transparency'])?'0':$val['transparency']).", ".(empty($val['answer_status'])?'0':$val['answer_status']).")"; $resql = $this->db->query($sql); if (! $resql) @@ -672,7 +672,7 @@ class ActionComm extends CommonObject foreach($this->userassigned as $key => $val) { $sql ="INSERT INTO ".MAIN_DB_PREFIX."actioncomm_resources(fk_actioncomm, element_type, fk_element, mandatory, transparency, answer_status)"; - $sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".($val['manadatory']?$val['manadatory']:'0').", ".($val['transparency']?$val['transparency']:'0').", ".($val['answer_status']?$val['answer_status']:'0').")"; + $sql.=" VALUES(".$this->id.", 'user', ".$val['id'].", ".(empty($val['manadatory'])?'0':$val['manadatory']).", ".(empty($val['transparency'])?'0':$val['transparency']).", ".(empty($val['answer_status'])?'0':$val['answer_status']).")"; $resql = $this->db->query($sql); if (! $resql) From 91fa823075d6f6983706d38817c4c7cea9e08deb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Wed, 25 Feb 2015 18:03:31 +0100 Subject: [PATCH 34/54] Marked getStaticMember as deprecated --- htdocs/core/lib/functions.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index bb4176a00e3..0f06eadadce 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -44,6 +44,7 @@ include_once DOL_DOCUMENT_ROOT .'/core/lib/json.lib.php'; * @param string $class Class name * @param string $member Name of property * @return mixed Return value of static property + * @deprecated Dolibarr now requires 5.3.0+ */ function getStaticMember($class, $member) { From 0a5f17f1795f61cf4bc78607edb1879b1c8665fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Wed, 25 Feb 2015 18:06:54 +0100 Subject: [PATCH 35/54] Undefined variable + Unreachable statement --- htdocs/core/lib/functions.lib.php | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index bb4176a00e3..5aa6bb88e53 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3195,7 +3195,7 @@ function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller) { global $db; - dol_syslog("getLocalTaxesFromRate vatrate=".$vatrate." local=".$local." thirdparty id=".(is_object($thirdparty)?$thirdparty->id:'')); + dol_syslog("getLocalTaxesFromRate vatrate=".$vatrate." local=".$local); // Search local taxes $sql = "SELECT t.localtax1, t.localtax1_type, t.localtax2, t.localtax2_type, t.accountancy_code_sell, t.accountancy_code_buy"; @@ -3253,30 +3253,6 @@ function getLocalTaxesFromRate($vatrate, $local, $buyer, $seller) return array($obj->localtax1_type, $obj->localtax1, $obj->localtax2_type, $obj->localtax2,$obj->accountancy_code_sell,$obj->accountancy_code_buy); } } - - if(! isOnlyOneLocalTax(2)) - { - if(! isOnlyOneLocalTax(1)) - { - return array($obj->localtax2_type, get_localtax($vatrate, 1, $buyer, $seller), $obj->localtax2_type, get_localtax($vatrate, 2, $buyer, $seller),$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - else - { - return array($obj->localtax2_type, get_localtax($vatrate, 1, $buyer, $seller), $obj->localtax2_type, $obj->localtax2,$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - } - else - { - if(! isOnlyOneLocalTax(1)) - { - return array($obj->localtax2_type, $obj->localtax2, $obj->localtax1_type,get_localtax($vatrate, 1, $buyer, $seller) ,$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - else - { - return array($obj->localtax2_type, $obj->localtax2, $obj->localtax1_type, $obj->localtax1,$obj->accountancy_code_sell,$obj->accountancy_code_buy); - } - } - } } From fb959abc63b694b50ba77fd8db3f3184df798809 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Wed, 25 Feb 2015 18:24:36 +0100 Subject: [PATCH 36/54] Misc PHPdoc fixes --- htdocs/core/class/conf.class.php | 4 ++++ htdocs/core/lib/functions.lib.php | 30 ++++++++++++++++-------------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php index 9127ed614b3..d63ba2fb4ef 100644 --- a/htdocs/core/class/conf.class.php +++ b/htdocs/core/class/conf.class.php @@ -54,6 +54,10 @@ class Conf public $modules_parts = array('css'=>array(),'js'=>array(),'tabs'=>array(),'triggers'=>array(),'login'=>array(),'substitutions'=>array(),'menus'=>array(),'theme'=>array(),'sms'=>array(),'tpl'=>array(),'barcode'=>array(),'models'=>array(),'societe'=>array(),'hooks'=>array(),'dir'=>array()); var $logbuffer = array(); + + /** + * @var LogHandlerInterface[] + */ var $loghandlers = array(); //! To store properties of multi-company diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5aa6bb88e53..0fe78707ec6 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -385,7 +385,7 @@ function dol_size($size,$type='') * * @param string $str String to clean * @param string $newstr String to replace bad chars with - * @param string $unaccent 1=Remove also accent (default), 0 do not remove them + * @param int $unaccent 1=Remove also accent (default), 0 do not remove them * @return string String cleaned (a-zA-Z_) * * @see dol_string_nospecial, dol_string_unaccent @@ -487,8 +487,8 @@ function dolEscapeXML($string) * Returns text escaped for inclusion into javascript code * * @param string $stringtoescape String to escape - * @param string $mode 0=Escape also ' and " into ', 1=Escape ' but not " for usage into 'string', 2=Escape " but not ' for usage into "string", 3=Escape ' and " with \ - * @param string $noescapebackslashn 0=Escape also \n. 1=Do not escape \n. + * @param int $mode 0=Escape also ' and " into ', 1=Escape ' but not " for usage into 'string', 2=Escape " but not ' for usage into "string", 3=Escape ' and " with \ + * @param int $noescapebackslashn 0=Escape also \n. 1=Do not escape \n. * @return string Escaped string. Both ' and " are escaped into ' if they are escaped. */ function dol_escape_js($stringtoescape, $mode=0, $noescapebackslashn=0) @@ -572,7 +572,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename=' global $conf, $user; // If syslog module enabled - if (empty($conf->syslog->enabled)) return false; + if (empty($conf->syslog->enabled)) return; if (! empty($level)) { @@ -582,7 +582,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename=' { throw new Exception('Incorrect log level'); } - if ($level > $conf->global->SYSLOG_LEVEL) return false; + if ($level > $conf->global->SYSLOG_LEVEL) return; // If adding log inside HTML page is required if (! empty($_REQUEST['logtohtml']) && ! empty($conf->global->MAIN_LOGTOHTML)) @@ -590,6 +590,7 @@ function dol_syslog($message, $level = LOG_INFO, $ident = 0, $suffixinfilename=' $conf->logbuffer[] = dol_print_date(time(),"%Y-%m-%d %H:%M:%S")." ".$message; } + //TODO: Remove this. MAIN_ENABLE_LOG_HTML should be deprecated and use a HTML handler // If enable html log tag enabled and url parameter log defined, we show output log on HTML comments if (! empty($conf->global->MAIN_ENABLE_LOG_HTML) && ! empty($_GET["log"])) { @@ -768,7 +769,7 @@ function dol_bc($var,$moreclass='') * @param Object $object A company or contact object * @param int $withcountry 1=Add country into address string * @param string $sep Separator to use to build string - * @param Tranlsate $outputlangs Object lang that contains language for text translation. + * @param Translate $outputlangs Object lang that contains language for text translation. * @return string Formated string */ function dol_format_address($object,$withcountry=0,$sep="\n",$outputlangs='') @@ -1348,7 +1349,7 @@ function dol_print_skype($skype,$cid=0,$socid=0,$addlink=0,$max=64) * @param string $country Country code to use for formatting * @param int $cid Id of contact if known * @param int $socid Id of third party if known - * @param int $addlink ''=no link to create action, 'AC_TEL'=add link to clicktodial (if module enabled) and add link to create event (if conf->global->AGENDA_ADDACTIONFORPHONE set) + * @param string $addlink ''=no link to create action, 'AC_TEL'=add link to clicktodial (if module enabled) and add link to create event (if conf->global->AGENDA_ADDACTIONFORPHONE set) * @param string $separ Separation between numbers for a better visibility example : xx.xx.xx.xx.xx * @return string Formated phone number */ @@ -1564,6 +1565,7 @@ function isValidEmail($address) /** * Return true if phone number syntax is ok * + * TODO: Decide what to do with this * @param string $phone phone (Ex: "0601010101") * @return boolean true if phone syntax is OK, false if KO or empty string */ @@ -2649,7 +2651,7 @@ function print_fiche_titre($title, $mesg='', $picto='title.png', $pictoisfullpat * @param int $id To force an id on html objects * @return string */ -function load_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpath=0, $id='') +function load_fiche_titre($titre, $mesg='', $picto='title.png', $pictoisfullpath=0, $id=0) { global $conf; @@ -3987,7 +3989,7 @@ function dol_textishtml($msg,$option=0) * * @param string $text1 Text 1 * @param string $text2 Text 2 - * @param string $forxml false=Use
, true=Use
+ * @param bool $forxml false=Use
, true=Use
* @return string Text 1 + new line + Text2 * @see dol_textishtml */ @@ -4029,7 +4031,7 @@ function make_substitutions($chaine,$substitutionarray) * * @param array $substitutionarray Array substitution old value => new value value * @param Translate $outputlangs If we want substitution from special constants, we provide a language - * @param Object $object If we want substitution from special constants, we provide data in a source object + * @param object $object If we want substitution from special constants, we provide data in a source object * @param Mixed $parameters Add more parameters (useful to pass product lines) * @param string $callfunc What is the name of the custom function that will be called? (default: completesubstitutionarray) * @return void @@ -4072,8 +4074,8 @@ function complete_substitutions_array(&$substitutionarray,$outputlangs,$object=' /** * Format output for start and end date * - * @param timestamp $date_start Start date - * @param timestamp $date_end End date + * @param int $date_start Start date + * @param int $date_end End date * @param string $format Output format * @param Translate $outputlangs Output language * @return void @@ -4086,8 +4088,8 @@ function print_date_range($date_start,$date_end,$format = '',$outputlangs='') /** * Format output for start and end date * - * @param timestamp $date_start Start date - * @param timestamp $date_end End date + * @param int $date_start Start date + * @param int $date_end End date * @param string $format Output format * @param Translate $outputlangs Output language * @return string String From 386eaf0911bee2c740a3defb4717a2754bc848cf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 Feb 2015 12:11:31 +0100 Subject: [PATCH 37/54] Fix: bad sql request --- htdocs/comm/propal/class/propal.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index ca4c51c3f4c..929932b47c2 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -3088,6 +3088,7 @@ class PropaleLigne extends CommonObject if (empty($this->special_code)) $this->special_code=0; if (empty($this->fk_parent_line)) $this->fk_parent_line=0; if (empty($this->fk_fournprice)) $this->fk_fournprice=0; + if (empty($this->subprice)) $this->subprice=0; if (empty($this->pa_ht)) $this->pa_ht=0; From 41a74c62e2d01823e7ae8625ad57998089b28de4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 Feb 2015 13:03:17 +0100 Subject: [PATCH 38/54] Fix trigger to insert lines where called when inserting line but also when cloning parent object, making no way to know when to use them or not. I introduced a context to allow code to know that and do not triggers twice. --- htdocs/comm/mailing/class/mailing.class.php | 50 +++-- htdocs/comm/propal/class/propal.class.php | 6 + htdocs/commande/class/commande.class.php | 4 + htdocs/compta/bank/class/bankcateg.class.php | 6 +- htdocs/compta/facture/class/facture.class.php | 4 + .../facture/class/paymentterm.class.php | 5 + .../class/paymentsocialcontribution.class.php | 4 + htdocs/core/class/commonobject.class.php | 1 + htdocs/cron/class/cronjob.class.php | 4 + .../class/fournisseur.commande.class.php | 8 +- .../fourn/class/fournisseur.facture.class.php | 6 +- htdocs/product/class/productbatch.class.php | 6 +- .../class/productcustomerprice.class.php | 198 +++++++++--------- htdocs/projet/class/project.class.php | 22 +- htdocs/projet/class/task.class.php | 21 +- 15 files changed, 196 insertions(+), 149 deletions(-) diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 2f8f7f18e4e..69a3520d1e8 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -57,7 +57,7 @@ class Mailing extends CommonObject var $date_creat; var $date_valid; - + var $extraparams=array(); public $statut_dest=array(); @@ -78,12 +78,12 @@ class Mailing extends CommonObject $this->statuts[1] = 'MailingStatusValidated'; $this->statuts[2] = 'MailingStatusSentPartialy'; $this->statuts[3] = 'MailingStatusSentCompletely'; - + $this->statut_dest[-1] = 'MailingStatusError'; $this->statut_dest[1] = 'MailingStatusSent'; $this->statut_dest[2] = 'MailingStatusRead'; $this->statut_dest[3] = 'MailingStatusNotContact'; - + } /** @@ -186,7 +186,7 @@ class Mailing extends CommonObject function fetch($rowid) { global $conf; - + $sql = "SELECT m.rowid, m.titre, m.sujet, m.body, m.bgcolor, m.bgimage"; $sql.= ", m.email_from, m.email_replyto, m.email_errorsto"; $sql.= ", m.statut, m.nbemail"; @@ -211,14 +211,14 @@ class Mailing extends CommonObject $this->statut = $obj->statut; $this->nbemail = $obj->nbemail; $this->titre = $obj->titre; - - $this->sujet = $obj->sujet; + + $this->sujet = $obj->sujet; if (!empty($conf->global->FCKEDITOR_ENABLE_MAILING) && dol_textishtml(dol_html_entity_decode($obj->body, ENT_COMPAT | ENT_HTML401))) { $this->body = dol_html_entity_decode($obj->body, ENT_COMPAT | ENT_HTML401); }else { $this->body = $obj->body; } - + $this->bgcolor = $obj->bgcolor; $this->bgimage = $obj->bgimage; @@ -232,7 +232,7 @@ class Mailing extends CommonObject $this->date_creat = $this->db->jdate($obj->date_creat); $this->date_valid = $this->db->jdate($obj->date_valid); $this->date_envoi = $this->db->jdate($obj->date_envoi); - + $this->extraparams = (array) json_decode($obj->extraparams, true); return 1; @@ -267,6 +267,8 @@ class Mailing extends CommonObject $object=new Mailing($this->db); + $object->context['createfromclone']='createfromclone'; + $this->db->begin(); // Load source object @@ -313,13 +315,13 @@ class Mailing extends CommonObject { //Clone target if (!empty($option2)) { - + require_once DOL_DOCUMENT_ROOT .'/core/modules/mailings/modules_mailings.php'; - + $mailing_target = new MailingTargets($this->db); - + $target_array=array(); - + $sql = "SELECT fk_contact, "; $sql.=" lastname, "; $sql.=" firstname,"; @@ -330,7 +332,7 @@ class Mailing extends CommonObject $sql.=" source_type "; $sql.= " FROM ".MAIN_DB_PREFIX."mailing_cibles "; $sql.= " WHERE fk_mailing = ".$fromid; - + dol_syslog(get_class($this)."::createFromClone", LOG_DEBUG); $result=$this->db->query($sql); if ($result) @@ -338,17 +340,17 @@ class Mailing extends CommonObject if ($this->db->num_rows($result)) { while ($obj = $this->db->fetch_object($result)) { - + $target_array[]=array('fk_contact'=>$obj->fk_contact, 'lastname'=>$obj->lastname, 'firstname'=>$obj->firstname, - 'email'=>$obj->email, + 'email'=>$obj->email, 'other'=>$obj->other, 'source_url'=>$obj->source_url, 'source_id'=>$obj->source_id, 'source_type'=>$obj->source_type); } - + } } else @@ -356,12 +358,14 @@ class Mailing extends CommonObject $this->error=$this->db->lasterror(); return -1; } - + $mailing_target->add_to_target($object->id, $target_array); } } + unset($object->context['createfromclone']); + // End if (! $error) { @@ -514,7 +518,7 @@ class Mailing extends CommonObject } } - + /** * Renvoi le libelle d'un statut donne * @@ -526,7 +530,7 @@ class Mailing extends CommonObject { global $langs; $langs->load('mails'); - + if ($mode == 0) { return $langs->trans($this->statut_dest[$statut]); @@ -563,10 +567,10 @@ class Mailing extends CommonObject if ($statut==2) return $langs->trans("MailingStatusRead").' '.img_picto($langs->trans("MailingStatusRead"),'statut6'); if ($statut==3) return $langs->trans("MailingStatusNotContact").' '.img_picto($langs->trans("MailingStatusNotContact"),'statut8'); } - - - - + + + + } } diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 929932b47c2..26c2c0a0d64 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -393,6 +393,8 @@ class Propal extends CommonObject // Insert line $this->line=new PropaleLigne($this->db); + $this->line->context = $this->context; + $this->line->fk_propal=$this->id; $this->line->label=$label; $this->line->desc=$desc; @@ -953,6 +955,8 @@ class Propal extends CommonObject { global $user,$langs,$conf,$hookmanager; + $this->context['createfromclone']='createfromclone'; + $error=0; $now=dol_now(); @@ -1046,6 +1050,8 @@ class Propal extends CommonObject // End call triggers } + unset($this->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 35834419a74..2e98f6f21de 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -878,6 +878,8 @@ class Commande extends CommonOrder $error=0; + $this->context['createfromclone'] = 'createfromclone'; + $this->db->begin(); // get extrafields so they will be clone @@ -942,6 +944,8 @@ class Commande extends CommonOrder // End call triggers } + unset($this->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/compta/bank/class/bankcateg.class.php b/htdocs/compta/bank/class/bankcateg.class.php index fb796b219ee..5004d13caf1 100644 --- a/htdocs/compta/bank/class/bankcateg.class.php +++ b/htdocs/compta/bank/class/bankcateg.class.php @@ -300,7 +300,9 @@ class BankCateg // extends CommonObject $object=new BankCateg($this->db); - $this->db->begin(); + $object->context['createfromclone'] = 'createfromclone'; + + $this->db->begin(); // Load source object $object->fetch($fromid); @@ -327,6 +329,8 @@ class BankCateg // extends CommonObject } + unset($object->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index d50079f78c8..08f17832c42 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -607,6 +607,8 @@ class Facture extends CommonInvoice $error=0; + $this->context['createfromclone'] = 'createfromclone'; + $this->db->begin(); // get extrafields so they will be clone @@ -693,6 +695,8 @@ class Facture extends CommonInvoice // End call triggers } + unset($this->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index b75bb056e03..d524c501698 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -33,6 +33,7 @@ class PaymentTerm // extends CommonObject var $errors=array(); //!< To return several error codes (or messages) //public $element='c_payment_term'; //!< Id that identify managed objects //public $table_element='c_payment_term'; //!< Name of table without prefix where object is stored + var $context =array(); var $id; @@ -409,6 +410,8 @@ class PaymentTerm // extends CommonObject $object=new PaymentTerm($this->db); + $object->context['createfromclone'] = 'createfromclone'; + $this->db->begin(); // Load source object @@ -436,6 +439,8 @@ class PaymentTerm // extends CommonObject } + unset($this->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index 395932de69f..10f856cf858 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -384,6 +384,8 @@ class PaymentSocialContribution extends CommonObject $object=new PaymentSocialContribution($this->db); + $object->context['createfromclone'] = 'createfromclone'; + $this->db->begin(); // Load source object @@ -411,6 +413,8 @@ class PaymentSocialContribution extends CommonObject } + unset($this->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 8a8258ca641..4dc3b55c057 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -38,6 +38,7 @@ abstract class CommonObject public $error; public $errors; public $canvas; // Contains canvas name if it is + public $context=array(); // Use to pass context information public $name; public $lastname; diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 723660f1d9c..5f2ef68b194 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -718,6 +718,8 @@ class Cronjob extends CommonObject $object=new Cronjob($this->db); + $object->context['createfromclone'] = 'createfromclone'; + $this->db->begin(); // Load source object @@ -744,6 +746,8 @@ class Cronjob extends CommonObject } + unset($this->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 5faba969755..95c8c1801a7 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1024,7 +1024,9 @@ class CommandeFournisseur extends CommonOrder $error=0; - $this->db->begin(); + $this->context['createfromclone'] = 'createfromclone'; + + $this->db->begin(); // Load source object $objFrom = dol_clone($this); @@ -1060,7 +1062,9 @@ class CommandeFournisseur extends CommonOrder // End call triggers } - // End + unset($this->context['createfromclone']); + + // End if (! $error) { $this->db->commit(); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 96e00aba182..7f2697d7c0c 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -1699,7 +1699,9 @@ class FactureFournisseur extends CommonInvoice $object=new FactureFournisseur($this->db); - $this->db->begin(); + $object->context['createfromclone'] = 'createfromclone'; + + $this->db->begin(); // Load source object $object->fetch($fromid); @@ -1745,6 +1747,8 @@ class FactureFournisseur extends CommonInvoice } + unset($object->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index a4df7a95829..839dce77fed 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -327,7 +327,9 @@ class Productbatch extends CommonObject $object=new Productbatch($this->db); - $this->db->begin(); + $object->context['createfromclone']='createfromclone'; + + $this->db->begin(); // Load source object $object->fetch($fromid); @@ -353,6 +355,8 @@ class Productbatch extends CommonObject } + unset($object->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/product/class/productcustomerprice.class.php b/htdocs/product/class/productcustomerprice.class.php index 4cc6e7feb49..62d9bb0a406 100644 --- a/htdocs/product/class/productcustomerprice.class.php +++ b/htdocs/product/class/productcustomerprice.class.php @@ -75,9 +75,9 @@ class Productcustomerprice extends CommonObject global $conf, $langs; $error = 0; - + // Clean parameters - + if (isset($this->entity)) $this->entity = trim($this->entity); if (isset($this->fk_product)) @@ -106,16 +106,16 @@ class Productcustomerprice extends CommonObject $this->fk_user = trim($this->fk_user); if (isset($this->import_key)) $this->import_key = trim($this->import_key); - + // Check parameters // Put here code to add control on parameters values - + if ($this->price != '' || $this->price == 0) { if ($this->price_base_type == 'TTC') { $this->price_ttc = price2num($this->price, 'MU'); $this->price = price2num($this->price) / (1 + ($this->tva_tx / 100)); $this->price = price2num($this->price, 'MU'); - + if ($this->price_min != '' || $this->price_min == 0) { $this->price_min_ttc = price2num($this->price_min, 'MU'); $this->price_min = price2num($this->price_min) / (1 + ($this->tva_tx / 100)); @@ -128,7 +128,7 @@ class Productcustomerprice extends CommonObject $this->price = price2num($this->price, 'MU'); $this->price_ttc = ($this->recuperableonly != 1) ? price2num($this->price) * (1 + ($this->tva_tx / 100)) : $this->price; $this->price_ttc = price2num($this->price_ttc, 'MU'); - + if ($this->price_min != '' || $this->price_min == 0) { $this->price_min = price2num($this->price_min, 'MU'); $this->price_min_ttc = price2num($this->price_min) * (1 + ($this->tva_tx / 100)); @@ -140,10 +140,10 @@ class Productcustomerprice extends CommonObject } } } - + // Insert request $sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_customer_price("; - + $sql .= "entity,"; $sql .= "datec,"; $sql .= "fk_product,"; @@ -159,9 +159,9 @@ class Productcustomerprice extends CommonObject $sql .= "localtax2_tx,"; $sql .= "fk_user,"; $sql .= "import_key"; - + $sql .= ") VALUES ("; - + $sql .= " " . $conf->entity . ","; $sql .= " '" . $this->db->idate(dol_now()) . "',"; $sql .= " " . (! isset($this->fk_product) ? 'NULL' : "'" . $this->fk_product . "'") . ","; @@ -177,25 +177,25 @@ class Productcustomerprice extends CommonObject $sql .= " " . (! isset($this->localtax2_tx) ? 'NULL' : "'" . $this->localtax2_tx . "'") . ","; $sql .= " " . $user->id . ","; $sql .= " " . (! isset($this->import_key) ? 'NULL' : "'" . $this->db->escape($this->import_key) . "'") . ""; - + $sql .= ")"; - + $this->db->begin(); - + dol_syslog(get_class($this) . "::create", LOG_DEBUG); $resql = $this->db->query($sql); if (! $resql) { $error ++; $this->errors [] = "Error " . $this->db->lasterror(); } - + if (! $error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX . "product_customer_price"); - + if (! $notrigger) { // Uncomment this and change MYOBJECT to your own tag if you // want this action calls a trigger. - + // // Call triggers // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; // $interface=new Interfaces($this->db); @@ -204,14 +204,14 @@ class Productcustomerprice extends CommonObject // // End call triggers } } - + if (! $error) { $result = $this->setPriceOnAffiliateThirdparty($user, $forceupdateaffiliate); if ($result < 0) { $error ++; } } - + // Commit or rollback if ($error) { foreach ( $this->errors as $errmsg ) { @@ -237,7 +237,7 @@ class Productcustomerprice extends CommonObject global $langs; $sql = "SELECT"; $sql .= " t.rowid,"; - + $sql .= " t.entity,"; $sql .= " t.datec,"; $sql .= " t.tms,"; @@ -254,18 +254,18 @@ class Productcustomerprice extends CommonObject $sql .= " t.localtax2_tx,"; $sql .= " t.fk_user,"; $sql .= " t.import_key"; - + $sql .= " FROM " . MAIN_DB_PREFIX . "product_customer_price as t"; $sql .= " WHERE t.rowid = " . $id; - + dol_syslog(get_class($this) . "::fetch", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { if ($this->db->num_rows($resql)) { $obj = $this->db->fetch_object($resql); - + $this->id = $obj->rowid; - + $this->entity = $obj->entity; $this->datec = $this->db->jdate($obj->datec); $this->tms = $this->db->jdate($obj->tms); @@ -284,7 +284,7 @@ class Productcustomerprice extends CommonObject $this->import_key = $obj->import_key; } $this->db->free($resql); - + return 1; } else { $this->error = "Error " . $this->db->lasterror(); @@ -307,7 +307,7 @@ class Productcustomerprice extends CommonObject global $langs; $sql = "SELECT"; $sql .= " t.rowid,"; - + $sql .= " t.entity,"; $sql .= " t.datec,"; $sql .= " t.tms,"; @@ -332,7 +332,7 @@ class Productcustomerprice extends CommonObject $sql .= " WHERE soc.rowid=t.fk_soc "; $sql .= " AND prod.rowid=t.fk_product "; $sql .= " AND prod.entity IN (" . getEntity('product', 1) . ")"; - + // Manage filter if (count($filter) > 0) { foreach ( $filter as $key => $value ) { @@ -346,27 +346,27 @@ class Productcustomerprice extends CommonObject } } } - + if (! empty($sortfield)) { $sql .= " ORDER BY " . $sortfield . ' ' . $sortorder; } if (! empty($limit)) { $sql .= ' ' . $this->db->plimit($limit + 1, $offset); } - + dol_syslog(get_class($this) . "::fetch_all", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - + $this->lines = array (); $num = $this->db->num_rows($resql); - + while ( $obj = $this->db->fetch_object($resql) ) { - + $line = new PriceByCustomerLine(); - + $line->id = $obj->rowid; - + $line->entity = $obj->entity; $line->datec = $this->db->jdate($obj->datec); $line->tms = $this->db->jdate($obj->tms); @@ -385,11 +385,11 @@ class Productcustomerprice extends CommonObject $line->import_key = $obj->import_key; $line->socname = $obj->socname; $line->prodref = $obj->prodref; - + $this->lines [] = $line; } $this->db->free($resql); - + return $num; } else { $this->error = "Error " . $this->db->lasterror(); @@ -412,7 +412,7 @@ class Productcustomerprice extends CommonObject global $langs; $sql = "SELECT"; $sql .= " t.rowid,"; - + $sql .= " t.entity,"; $sql .= " t.datec,"; $sql .= " t.fk_product,"; @@ -436,7 +436,7 @@ class Productcustomerprice extends CommonObject $sql .= " WHERE soc.rowid=t.fk_soc "; $sql .= " AND prod.rowid=t.fk_product "; $sql .= " AND prod.entity IN (" . getEntity('product', 1) . ")"; - + // Manage filter if (count($filter) > 0) { foreach ( $filter as $key => $value ) { @@ -450,27 +450,27 @@ class Productcustomerprice extends CommonObject } } } - + if (! empty($sortfield)) { $sql .= " ORDER BY " . $sortfield . ' ' . $sortorder; } if (! empty($limit)) { $sql .= ' ' . $this->db->plimit($limit + 1, $offset); } - + dol_syslog(get_class($this) . "::fetch_all_log", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { - + $this->lines = array (); $num = $this->db->num_rows($resql); - + while ( $obj = $this->db->fetch_object($resql) ) { - + $line = new PriceByCustomerLine(); - + $line->id = $obj->rowid; - + $line->entity = $obj->entity; $line->datec = $this->db->jdate($obj->datec); $line->tms = $this->db->jdate($obj->tms); @@ -489,11 +489,11 @@ class Productcustomerprice extends CommonObject $line->import_key = $obj->import_key; $line->socname = $obj->socname; $line->prodref = $obj->prodref; - + $this->lines [] = $line; } $this->db->free($resql); - + return $num; } else { $this->error = "Error " . $this->db->lasterror(); @@ -513,9 +513,9 @@ class Productcustomerprice extends CommonObject global $conf, $langs; $error = 0; - + // Clean parameters - + if (isset($this->entity)) $this->entity = trim($this->entity); if (isset($this->fk_product)) @@ -544,16 +544,16 @@ class Productcustomerprice extends CommonObject $this->fk_user = trim($this->fk_user); if (isset($this->import_key)) $this->import_key = trim($this->import_key); - + // Check parameters // Put here code to add a control on parameters values - + if ($this->price != '' || $this->price == 0) { if ($this->price_base_type == 'TTC') { $this->price_ttc = price2num($this->price, 'MU'); $this->price = price2num($this->price) / (1 + ($this->tva_tx / 100)); $this->price = price2num($this->price, 'MU'); - + if ($this->price_min != '' || $this->price_min == 0) { $this->price_min_ttc = price2num($this->price_min, 'MU'); $this->price_min = price2num($this->price_min) / (1 + ($this->tva_tx / 100)); @@ -566,7 +566,7 @@ class Productcustomerprice extends CommonObject $this->price = price2num($this->price, 'MU'); $this->price_ttc = ($this->recuperableonly != 1) ? price2num($this->price) * (1 + ($this->tva_tx / 100)) : $this->price; $this->price_ttc = price2num($this->price_ttc, 'MU'); - + if ($this->price_min != '' || $this->price_min == 0) { $this->price_min = price2num($this->price_min, 'MU'); $this->price_min_ttc = price2num($this->price_min) * (1 + ($this->tva_tx / 100)); @@ -578,11 +578,11 @@ class Productcustomerprice extends CommonObject } } } - + // Do a copy of current record into log table // Insert request $sql = "INSERT INTO " . MAIN_DB_PREFIX . "product_customer_price_log("; - + $sql .= "entity,"; $sql .= "datec,"; $sql .= "fk_product,"; @@ -598,10 +598,10 @@ class Productcustomerprice extends CommonObject $sql .= "localtax2_tx,"; $sql .= "fk_user,"; $sql .= "import_key"; - + $sql .= ") "; $sql .= "SELECT"; - + $sql .= " t.entity,"; $sql .= " t.datec,"; $sql .= " t.fk_product,"; @@ -617,10 +617,10 @@ class Productcustomerprice extends CommonObject $sql .= " t.localtax2_tx,"; $sql .= " t.fk_user,"; $sql .= " t.import_key"; - + $sql .= " FROM " . MAIN_DB_PREFIX . "product_customer_price as t"; $sql .= " WHERE t.rowid = " . $this->id; - + $this->db->begin(); dol_syslog(get_class($this) . "::update", LOG_DEBUG); $resql = $this->db->query($sql); @@ -628,10 +628,10 @@ class Productcustomerprice extends CommonObject $error ++; $this->errors [] = "Error " . $this->db->lasterror(); } - + // Update request $sql = "UPDATE " . MAIN_DB_PREFIX . "product_customer_price SET"; - + $sql .= " entity=" . $conf->entity . ","; $sql .= " datec='" . $this->db->idate(dol_now()) . "',"; $sql .= " tms=" . (dol_strlen($this->tms) != 0 ? "'" . $this->db->idate($this->tms) . "'" : 'null') . ","; @@ -648,21 +648,21 @@ class Productcustomerprice extends CommonObject $sql .= " localtax2_tx=" . (isset($this->localtax2_tx) ? $this->localtax2_tx : "null") . ","; $sql .= " fk_user=" . $user->id . ","; $sql .= " import_key=" . (isset($this->import_key) ? "'" . $this->db->escape($this->import_key) . "'" : "null") . ""; - + $sql .= " WHERE rowid=" . $this->id; - + dol_syslog(get_class($this) . "::update", LOG_DEBUG); $resql = $this->db->query($sql); if (! $resql) { $error ++; $this->errors [] = "Error " . $this->db->lasterror(); } - + if (! $error) { if (! $notrigger) { // Uncomment this and change MYOBJECT to your own tag if you // want this action calls a trigger. - + // // Call triggers // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; // $interface=new Interfaces($this->db); @@ -671,14 +671,14 @@ class Productcustomerprice extends CommonObject // // End call triggers } } - + if (! $error) { $result = $this->setPriceOnAffiliateThirdparty($user, $forceupdateaffiliate); if ($result < 0) { $error ++; } } - + // Commit or rollback if ($error) { foreach ( $this->errors as $errmsg ) { @@ -703,50 +703,50 @@ class Productcustomerprice extends CommonObject function setPriceOnAffiliateThirdparty($user, $forceupdateaffiliate) { $error = 0; - + // Find all susidiaries $sql = "SELECT s.rowid"; $sql .= " FROM " . MAIN_DB_PREFIX . "societe as s"; $sql .= " WHERE s.parent = " . $this->fk_soc; $sql .= " AND s.entity IN (" . getEntity('societe', 1) . ")"; - + dol_syslog(get_class($this) . "::setPriceOnAffiliateThirdparty", LOG_DEBUG); $resql = $this->db->query($sql); - + if ($resql) { - + $this->lines = array (); $num = $this->db->num_rows($resql); - + while ( ($obj = $this->db->fetch_object($resql)) && (empty($error)) ) { - + // find if there is an existing line for the product and the subsidiaries $prodsocprice = new Productcustomerprice($this->db); - + $filter = array ( - 't.fk_product' => $this->fk_product,'t.fk_soc' => $obj->rowid + 't.fk_product' => $this->fk_product,'t.fk_soc' => $obj->rowid ); - + $result = $prodsocprice->fetch_all('', '', 0, 0, $filter); if ($result < 0) { $error ++; $this->error = $prodsocprice->error; } else { - + // There is one line if (count($prodsocprice->lines) > 0) { // If force update => Update if (! empty($forceupdateaffiliate)) { - + $prodsocpriceupd = new Productcustomerprice($this->db); $prodsocpriceupd->fetch($prodsocprice->lines [0]->id); - + $prodsocpriceupd->price = $this->price; $prodsocpriceupd->price_min = $this->price_min; $prodsocpriceupd->price_base_type = $this->price_base_type; $prodsocpriceupd->tva_tx = $this->tva_tx; $prodsocpriceupd->recuperableonly = $this->recuperableonly; - + $resultupd = $prodsocpriceupd->update($user, 0, $forceupdateaffiliate); if ($result < 0) { $error ++; @@ -763,7 +763,7 @@ class Productcustomerprice extends CommonObject $prodsocpricenew->price_base_type = $this->price_base_type; $prodsocpricenew->tva_tx = $this->tva_tx; $prodsocpricenew->recuperableonly = $this->recuperableonly; - + $resultupd = $prodsocpricenew->create($user, 0, $forceupdateaffiliate); if ($result < 0) { $error ++; @@ -773,7 +773,7 @@ class Productcustomerprice extends CommonObject } } $this->db->free($resql); - + if (empty($error)) { return 1; } else { @@ -796,14 +796,14 @@ class Productcustomerprice extends CommonObject global $conf, $langs; $error = 0; - + $this->db->begin(); - + if (! $error) { if (! $notrigger) { // Uncomment this and change MYOBJECT to your own tag if you // want this action calls a trigger. - + // // Call triggers // include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; // $interface=new Interfaces($this->db); @@ -812,11 +812,11 @@ class Productcustomerprice extends CommonObject // // End call triggers } } - + if (! $error) { $sql = "DELETE FROM " . MAIN_DB_PREFIX . "product_customer_price"; $sql .= " WHERE rowid=" . $this->id; - + dol_syslog(get_class($this) . "::delete", LOG_DEBUG); $resql = $this->db->query($sql); if (! $resql) { @@ -824,7 +824,7 @@ class Productcustomerprice extends CommonObject $this->errors [] = "Error " . $this->db->lasterror(); } } - + // Commit or rollback if ($error) { foreach ( $this->errors as $errmsg ) { @@ -848,33 +848,37 @@ class Productcustomerprice extends CommonObject function createFromClone($fromid) { global $user, $langs; - + $error = 0; - + $object = new Productcustomerprice($this->db); - + + $object->context['createfromclone']='createfromclone'; + $this->db->begin(); - + // Load source object $object->fetch($fromid); $object->id = 0; $object->statut = 0; - + // Clear fields // ... - + // Create clone $result = $object->create($user); - + // Other options if ($result < 0) { $this->error = $object->error; $error ++; } - + if (! $error) { } - + + unset($object->context['createfromclone']); + // End if (! $error) { $this->db->commit(); @@ -894,7 +898,7 @@ class Productcustomerprice extends CommonObject function initAsSpecimen() { $this->id = 0; - + $this->entity = ''; $this->datec = ''; $this->tms = ''; diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index fbb35990954..a52a9f133e9 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1017,6 +1017,8 @@ class Project extends CommonObject $clone_project=new Project($this->db); + $clone_project->context['createfromclone']='createfromclone'; + $this->db->begin(); // Load source object @@ -1068,8 +1070,6 @@ class Project extends CommonObject if (! $error) { - $this->db->commit(); - //Get the new project id $clone_project_id=$clone_project->id; @@ -1223,23 +1223,19 @@ class Project extends CommonObject } } } + } + unset($clone_project->context['createfromclone']); - - if (! $error) - { - return $clone_project_id; - } - else - { - dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR); - return -1; - } - + if (! $error) + { + $this->db->commit(); + return $clone_project_id; } else { $this->db->rollback(); + dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR); return -1; } } diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 0f9645fe237..017e2b782ec 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -1092,6 +1092,8 @@ class Task extends CommonObject $clone_task=new Task($this->db); $origin_task=new Task($this->db); + $clone_task->context['createfromclone']='createfromclone'; + $this->db->begin(); // Load source object @@ -1158,8 +1160,6 @@ class Task extends CommonObject // End if (! $error) { - $this->db->commit(); - $clone_task_id=$clone_task->id; $clone_task_ref = $clone_task->ref; @@ -1279,20 +1279,19 @@ class Task extends CommonObject { //TODO clone time of affectation } + } - if (! $error) - { - return $clone_task_id; - } - else - { - dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR); - return -1; - } + unset($clone_task->context['createfromclone']); + + if (! $error) + { + $this->db->commit(); + return $clone_task_id; } else { $this->db->rollback(); + dol_syslog(get_class($this)."::createFromClone nbError: ".$error." error : " . $this->error, LOG_ERR); return -1; } } From fe7889e2662b7b2e14156ef853933e80f8f9e4b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 Feb 2015 13:19:19 +0100 Subject: [PATCH 39/54] Fix trigger to insert lines where called when inserting line but also when cloning parent object, making no way to know when to use them or not. I introduced a context to allow code to know that and do not triggers twice. --- htdocs/comm/propal/class/propal.class.php | 41 +++++++++++-------- htdocs/commande/class/commande.class.php | 6 +++ htdocs/compta/facture/class/facture.class.php | 9 +++- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 26c2c0a0d64..b18ff15331f 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -239,27 +239,30 @@ class Propal extends CommonObject return -5; } - $propalligne=new PropaleLigne($this->db); - $propalligne->fk_propal=$this->id; - $propalligne->fk_remise_except=$remise->id; - $propalligne->desc=$remise->description; // Description ligne - $propalligne->tva_tx=$remise->tva_tx; - $propalligne->subprice=-$remise->amount_ht; - $propalligne->fk_product=0; // Id produit predefini - $propalligne->qty=1; - $propalligne->remise=0; - $propalligne->remise_percent=0; - $propalligne->rang=-1; - $propalligne->info_bits=2; + $line=new PropaleLigne($this->db); + + $this->line->context = $this->context; + + $line->fk_propal=$this->id; + $line->fk_remise_except=$remise->id; + $line->desc=$remise->description; // Description ligne + $line->tva_tx=$remise->tva_tx; + $line->subprice=-$remise->amount_ht; + $line->fk_product=0; // Id produit predefini + $line->qty=1; + $line->remise=0; + $line->remise_percent=0; + $line->rang=-1; + $line->info_bits=2; // TODO deprecated - $propalligne->price=-$remise->amount_ht; + $line->price=-$remise->amount_ht; - $propalligne->total_ht = -$remise->amount_ht; - $propalligne->total_tva = -$remise->amount_tva; - $propalligne->total_ttc = -$remise->amount_ttc; + $line->total_ht = -$remise->amount_ht; + $line->total_tva = -$remise->amount_tva; + $line->total_ttc = -$remise->amount_ttc; - $result=$propalligne->insert(); + $result=$line->insert(); if ($result > 0) { $result=$this->update_price(1); @@ -276,7 +279,7 @@ class Propal extends CommonObject } else { - $this->error=$propalligne->error; + $this->error=$line->error; $this->db->rollback(); return -2; } @@ -547,6 +550,8 @@ class Propal extends CommonObject // Update line $this->line=new PropaleLigne($this->db); + $this->line->context = $this->context; + // Stock previous line records $staticline=new PropaleLigne($this->db); $staticline->fetch($rowid); diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 2e98f6f21de..1cdd57b1b6a 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1205,6 +1205,8 @@ class Commande extends CommonOrder // Insert line $this->line=new OrderLine($this->db); + $this->line->context = $this->context; + $this->line->fk_commande=$this->id; $this->line->label=$label; $this->line->desc=$desc; @@ -1319,6 +1321,8 @@ class Commande extends CommonOrder $line=new OrderLine($this->db); + $line->context = $this->context; + $line->fk_product=$idproduct; $line->desc=$prod->description; $line->qty=$qty; @@ -2401,6 +2405,8 @@ class Commande extends CommonOrder // Update line $this->line=new OrderLine($this->db); + $this->line->context = $this->context; + // Stock previous line records $staticline=new OrderLine($this->db); $staticline->fetch($rowid); diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 08f17832c42..ec41b0a99c2 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2047,6 +2047,9 @@ class Facture extends CommonInvoice // Insert line $this->line=new FactureLigne($this->db); + + $this->line->context = $this->context; + $this->line->fk_facture=$this->id; $this->line->label=$label; // deprecated $this->line->desc=$desc; @@ -2185,7 +2188,9 @@ class Facture extends CommonInvoice // Update line into database $this->line=new FactureLigne($this->db); - // Stock previous line records + $this->line->context = $this->context; + + // Stock previous line records $staticline=new FactureLigne($this->db); $staticline->fetch($rowid); $this->line->oldline = $staticline; @@ -2298,6 +2303,8 @@ class Facture extends CommonInvoice $line=new FactureLigne($this->db); + $line->context = $this->context; + // For triggers $line->fetch($rowid); From 4bde7e9f51a18926713a1c04cb6bd5af70ace820 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 Feb 2015 14:25:30 +0100 Subject: [PATCH 40/54] Fix: Missing error management --- htdocs/adherents/card.php | 2 ++ htdocs/adherents/type.php | 2 ++ htdocs/categories/card.php | 1 + htdocs/categories/edit.php | 3 ++- htdocs/comm/action/card.php | 2 ++ htdocs/comm/propal.php | 6 ++--- htdocs/commande/card.php | 12 +++++----- htdocs/compta/facture.php | 7 +++--- htdocs/contact/card.php | 2 ++ htdocs/contrat/card.php | 24 +++++++++++--------- htdocs/core/class/extrafields.class.php | 2 +- htdocs/fourn/commande/card.php | 23 ++++++++++++------- htdocs/fourn/facture/card.php | 5 ++--- htdocs/product/card.php | 9 ++++++-- htdocs/projet/card.php | 6 ++--- htdocs/projet/tasks/task.php | 11 +++++---- htdocs/public/members/new.php | 1 + htdocs/societe/soc.php | 2 +- htdocs/user/card.php | 30 ++++++++++++++----------- htdocs/user/group/card.php | 2 ++ 20 files changed, 90 insertions(+), 62 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index d8a1a85debf..94f12a61f8b 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -302,6 +302,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; // Check if we need to also synchronize user information $nosyncuser=0; @@ -471,6 +472,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; // Check parameters if (empty($morphy) || $morphy == "-1") { diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index 96e13561825..ea39a200c97 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -89,6 +89,7 @@ if ($action == 'add' && $user->rights->adherent->configurer) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$adht); + if ($ret < 0) $error++; if ($adht->libelle) { @@ -126,6 +127,7 @@ if ($action == 'update' && $user->rights->adherent->configurer) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$adht); + if ($ret < 0) $error++; $adht->update($user); diff --git a/htdocs/categories/card.php b/htdocs/categories/card.php index 672c92b9508..8a587d7de32 100644 --- a/htdocs/categories/card.php +++ b/htdocs/categories/card.php @@ -127,6 +127,7 @@ if ($action == 'add' && $user->rights->categorie->creer) if ($parent != "-1") $object->fk_parent = $parent; $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; if (! $object->label) { diff --git a/htdocs/categories/edit.php b/htdocs/categories/edit.php index aa82fdb455d..a105d104036 100644 --- a/htdocs/categories/edit.php +++ b/htdocs/categories/edit.php @@ -90,7 +90,8 @@ if ($action == 'update' && $user->rights->categorie->creer) if (empty($categorie->error)) { $ret = $extrafields->setOptionalsFromPost($extralabels,$categorie); - + if ($ret < 0) $error++; + if ($categorie->update($user) > 0) { header('Location: '.DOL_URL_ROOT.'/categories/viewcat.php?id='.$categorie->id.'&type='.$type); diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 0a4b255884a..c15b1fe4f32 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -274,6 +274,7 @@ if ($action == 'add') // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; if (! $error) { @@ -429,6 +430,7 @@ if ($action == 'update') // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; if (! $error) { diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index 030aff46434..3739b59c338 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1080,10 +1080,10 @@ if (empty($reshook)) // Fill array 'array_options' with data from update form $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute')); - if ($ret < 0) - $error ++; + if ($ret < 0) $error++; - if (! $error) { + if (! $error) + { // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('propaldao')); diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 5b76dd59323..eb5767b173a 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -271,8 +271,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels, $object); - if ($ret < 0) - $error ++; + if ($ret < 0) $error++; if (! $error) { @@ -365,10 +364,10 @@ if (empty($reshook)) } else { // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels, $object); - if ($ret < 0) - $error ++; + if ($ret < 0) $error++; - if (! $error) { + if (! $error) + { $object_id = $object->create($user); // If some invoice's lines already known @@ -1124,8 +1123,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from update form $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute')); - if ($ret < 0) - $error ++; + if ($ret < 0) $error++; if (! $error) { // Actions on extra fields (by external module or standard code) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 5f1f3998b5d..3d7a71f8133 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -585,7 +585,7 @@ if (empty($reshook)) $discount->fk_facture_source = $object->id; $error = 0; - + foreach ($amount_ht as $tva_tx => $xxx) { $discount->amount_ht = abs($amount_ht [$tva_tx]); $discount->amount_tva = abs($amount_tva [$tva_tx]); @@ -636,7 +636,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels, $object); - if ($ret < 0) $error ++; + if ($ret < 0) $error++; // Replacement invoice if ($_POST['type'] == Facture::TYPE_REPLACEMENT) @@ -1676,8 +1676,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute')); - if ($ret < 0) - $error ++; + if ($ret < 0) $error++; if (! $error) { // Actions on extra fields (by external module or standard code) diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index af07cbb9a62..248352dfee3 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -200,6 +200,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; if (! GETPOST("lastname")) { @@ -303,6 +304,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; $result = $object->update($contactid, $user); diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index fdd0acfec74..6d10442caf7 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -355,6 +355,7 @@ if ($action == 'add' && $user->rights->contrat->creer) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels, $object); + if ($ret < 0) $error++; $result = $object->create($user); if ($result > 0) @@ -702,19 +703,20 @@ else if ($action == 'confirm_move' && $confirm == 'yes' && $user->rights->contra // Fill array 'array_options' with data from update form $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels, $object, GETPOST('attribute')); - if ($ret < 0) - $error ++; + if ($ret < 0) $error++; - if (! $error) { + if (! $error) + { + $result = $object->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + else if ($reshook < 0) $error++; - $result = $object->insertExtraFields(); - if ($result < 0) { - $error ++; - } - } else if ($reshook < 0) - $error ++; - - if ($error) { + if ($error) + { $action = 'edit_extras'; setEventMessage($object->error,'errors'); } diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 008dff0f019..cc602d08ed5 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1063,7 +1063,7 @@ class ExtraFields * @param array $extralabels $array of extrafields * @param object $object Object * @param string $onlykey Only following key is filled. When we make update of only one extrafield ($action = 'update_extras'), calling page must must set this to avoid to have other extrafields being reset. - * @return int 1 if array_options set / 0 if no value + * @return int 1 if array_options set, 0 if no value, -1 if error (field required missing for example) */ function setOptionalsFromPost($extralabels,&$object,$onlykey='') { diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 28b492651c0..0257b51c946 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -783,7 +783,7 @@ if ($action == 'update_extras') $ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute')); if ($ret < 0) $error++; - if (!$error) + if (! $error) { // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! @@ -842,19 +842,26 @@ if ($action == 'add' && $user->rights->fournisseur->commande->creer) $object->date_livraison = $datelivraison; // Fill array 'array_options' with data from add form - $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if (! $error) + { + $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; + } - $id = $object->create($user); - if ($id < 0) - { - $error++; - } + if (! $error) + { + $id = $object->create($user); + if ($id < 0) + { + $error++; + setEventMessage($langs->trans($object->error), 'errors'); + } + } if ($error) { $langs->load("errors"); $db->rollback(); - setEventMessage($langs->trans($object->error), 'errors'); $action='create'; $_GET['socid']=$_POST['socid']; } diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index a10aa89ae65..54ef660f6aa 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -308,7 +308,7 @@ elseif ($action == 'add' && $user->rights->fournisseur->facture->creer) $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels, $object); - if ($ret < 0) $error ++; + if ($ret < 0) $error++; $tmpproject = GETPOST('projectid', 'int'); @@ -1071,8 +1071,7 @@ elseif ($action == 'update_extras') // Fill array 'array_options' with data from add form $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels,$object,GETPOST('attribute')); - - if($ret < 0) $error++; + if ($ret < 0) $error++; if (!$error) { diff --git a/htdocs/product/card.php b/htdocs/product/card.php index a4c4e4ee92e..b5f34e20a8d 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -262,8 +262,12 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; - $id = $object->create($user); + if (! $error) + { + $id = $object->create($user); + } if ($id > 0) { @@ -339,8 +343,9 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; - if ($object->check()) + if (! $error && $object->check()) { if ($object->update($object->id, $user) > 0) { diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index b376133699b..1c971ef9e35 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -147,6 +147,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; $result = $object->create($user); if ($result > 0) @@ -222,10 +223,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); - if ($ret < 0) - { - $error++; - } + if ($ret < 0) $error++; } if (! $error) diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index 11bc8ffea09..a9cd64e33b5 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -91,12 +91,15 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->projet->creer) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; - $result=$object->update($user); - - if ($result < 0) + if (! $error) { - setEventMessages($object->error,$object->errors,'errors'); + $result=$object->update($user); + if ($result < 0) + { + setEventMessages($object->error,$object->errors,'errors'); + } } } else diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index c8628bd26a0..255e7fe9134 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -250,6 +250,7 @@ if ($action == 'add') // Fill array 'array_options' with data from add form $extralabels=$extrafields->fetch_name_optionals_label($adh->table_element); $ret = $extrafields->setOptionalsFromPost($extralabels,$adh); + if ($ret < 0) $error++; $result=$adh->create($user); if ($result > 0) diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 72e249ce542..065bbbc0ac8 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -195,7 +195,7 @@ if (empty($reshook)) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); - + if ($ret < 0) $error++; if (GETPOST('deletephoto')) $object->logo = ''; else if (! empty($_FILES['photo']['name'])) $object->logo = dol_sanitizeFileName($_FILES['photo']['name']); diff --git a/htdocs/user/card.php b/htdocs/user/card.php index ec6b65e534c..7c5caf5254a 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -211,6 +211,7 @@ if ($action == 'add' && $canadduser) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; // If multicompany is off, admin users must all be on entity 0. $entity=GETPOST('entity','int'); @@ -358,6 +359,7 @@ if ($action == 'update' && ! $_POST["cancel"]) // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; if (! empty($conf->multicompany->enabled)) { @@ -382,20 +384,22 @@ if ($action == 'update' && ! $_POST["cancel"]) if (GETPOST('deletephoto')) $object->photo=''; if (! empty($_FILES['photo']['name'])) $object->photo = dol_sanitizeFileName($_FILES['photo']['name']); - $ret=$object->update($user); - - if ($ret < 0) + if (! $error) { - $error++; - if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') - { - $langs->load("errors"); - setEventMessage($langs->trans("ErrorLoginAlreadyExists",$object->login), 'errors'); - } - else - { - setEventMessage($object->error, 'errors'); - } + $ret=$object->update($user); + if ($ret < 0) + { + $error++; + if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') + { + $langs->load("errors"); + setEventMessage($langs->trans("ErrorLoginAlreadyExists",$object->login), 'errors'); + } + else + { + setEventMessage($object->error, 'errors'); + } + } } if (! $error && isset($_POST['contactid'])) diff --git a/htdocs/user/group/card.php b/htdocs/user/group/card.php index a1930f7c027..56cfc5d9ee8 100644 --- a/htdocs/user/group/card.php +++ b/htdocs/user/group/card.php @@ -101,6 +101,7 @@ if ($action == 'add') // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; if (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode)) $object->entity = 0; else $object->entity = $_POST["entity"]; @@ -183,6 +184,7 @@ if ($action == 'update') // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost($extralabels,$object); + if ($ret < 0) $error++; if (! empty($conf->multicompany->enabled) && ! empty($conf->multicompany->transverse_mode)) $object->entity = 0; else $object->entity = $_POST["entity"]; From d6438a51ab5d580ff1f460d44967c8bce2f8b732 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 Feb 2015 15:24:15 +0100 Subject: [PATCH 41/54] Add log to help track bug --- htdocs/fourn/class/fournisseur.product.class.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 75ac674e877..3d12352903f 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -447,12 +447,18 @@ class ProductFournisseur extends Product * * @param int $prodid Product id * @param int $qty Minimum quantity - * @return int <0 if KO, >0 if OK + * @return int <0 if KO, 0=Not found of no product id provided, >0 if OK */ function find_min_price_product_fournisseur($prodid, $qty=0) { global $conf; + if (empty($prodid)) + { + dol_syslog("Warning function find_min_price_product_fournisseur were called with prodid empty. May be a bug.", LOG_WARNING); + return 0; + } + $this->product_fourn_price_id = ''; $this->product_fourn_id = ''; $this->fourn_ref = ''; @@ -500,7 +506,7 @@ class ProductFournisseur extends Product return 1; } else - { + { $this->error=$this->db->error(); return -1; } From 828716420bba6f385a3f6bc1a232f5ce7d045292 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 26 Feb 2015 16:19:45 +0100 Subject: [PATCH 42/54] Comment of function was not correct --- htdocs/core/class/commonobject.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 4dc3b55c057..46d280f8763 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -3457,7 +3457,8 @@ abstract class CommonObject /** * Add/Update all extra fields values for the current object. - * All data to describe values to insert are stored into $this->array_options=array('keyextrafield'=>'valueextrafieldtoadd') + * Data to describe values to insert/update are stored into $this->array_options=array('options_codeforfield1'=>'valueforfield1', 'options_codeforfield2'=>'valueforfield2', ...) + * This function delte record with all extrafields and insert them again from the array $this->array_options. * * @return int -1=error, O=did nothing, 1=OK */ From bfe9bf7a478c4eefe66af7c10d1e5c63c79183c3 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 27 Feb 2015 17:55:15 +0100 Subject: [PATCH 43/54] Fix: Bad SEPA xml file creation --- ChangeLog | 1 + .../class/bonprelevement.class.php | 41 +++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index c50c42acb21..927ed0e7a24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -27,6 +27,7 @@ English Dolibarr ChangeLog - Fix: [ bug #1830 ] Salaries payment only allows checking accounts - Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work - Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key +- Fix: Bad SEPA xml file creation ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 7f0b693391e..0a9884bbcd3 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1326,12 +1326,26 @@ class BonPrelevement extends CommonObject $dateTime_ECMA = dol_print_date($date_actu, '%Y-%m-%dT%H:%M:%S'); $fileDebiteurSection = ''; $fileEmetteurSection = ''; - $i = 0; + $i = $j = 0; $this->total = 0; /* * section Debiteur (sepa Debiteurs bloc lines) */ + + $sql = "SELECT f.facnumber as fac FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."prelevement_facture as pf, ".MAIN_DB_PREFIX."societe as soc, ".MAIN_DB_PREFIX."c_pays as p, ".MAIN_DB_PREFIX."societe_rib as rib WHERE pl.fk_prelevement_bons = ".$this->id." AND pl.rowid = pf.fk_prelevement_lignes AND pf.fk_facture = f.rowid AND soc.fk_pays = p.rowid AND soc.rowid = f.fk_soc AND rib.fk_soc = f.fk_soc AND rib.default_rib = 1"; + $resql=$this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + while ($j < $num) + { + $objfac = $this->db->fetch_object($resql); + $ListOfFactures = $ListOfFactures . $objfac->fac . ","; + $j++; + } + } + $sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, soc.datec, p.code as country_code,"; $sql.= " pl.client_nom as nom, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,"; $sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum"; @@ -1357,7 +1371,7 @@ class BonPrelevement extends CommonObject while ($i < $num) { $obj = $this->db->fetch_object($resql); - $fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $obj->facnumber, $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum); + $fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $ListOfFactures , $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum); $this->total = $this->total + $obj->somme; $i++; } @@ -1394,13 +1408,14 @@ class BonPrelevement extends CommonObject fputs($this->file, ' '.$this->total.''.$CrLf); fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$this->raison_sociale.''.$CrLf); -/* fputs($this->file, ' '.$CrLf); - fputs($this->file, ' '.$CrLf); - fputs($this->file, ' 0533883248'.$CrLf); - fputs($this->file, ' KBO-BCE'.$CrLf); + fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$conf->global->PRELEVEMENT_ICS.''.$CrLf); + fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); -*/ fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); // SEPA File Emetteur if ($result != -2) @@ -1583,6 +1598,7 @@ class BonPrelevement extends CommonObject $CrLf = "\n"; $Rowing = sprintf("%06d", $row_idfac); $Date_Rum = strtotime($row_datec); + $DtOfSgntr = dol_print_date($row_datec, '%Y-%m-%d'); $pre = ($date_Rum > 1359673200) ? 'Rum' : '++R'; $Rum = $pre.$row_code_client.$row_drum.'-0'.date('U', $Date_Rum); $XML_DEBITOR =''; @@ -1590,11 +1606,11 @@ class BonPrelevement extends CommonObject $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.('AS-'.$row_facnumber.'-'.$Rowing).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; - $XML_DEBITOR .=' '.round($row_somme, 2).''.$CrLf; + $XML_DEBITOR .=' '.round($row_somme, 2).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$Rum.''.$CrLf; - $XML_DEBITOR .=' '.$row_datec.''.$CrLf; + $XML_DEBITOR .=' '.$DtOfSgntr.''.$CrLf; $XML_DEBITOR .=' false'.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; @@ -1607,17 +1623,18 @@ class BonPrelevement extends CommonObject $XML_DEBITOR .=' '.strtoupper(dol_string_unaccent($row_nom)).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$row_country_code.''.$CrLf; - $XML_DEBITOR .=' '.strtr($row_adr, array(CHR(13) => ", ", CHR(10) => "")).''.$CrLf; + $XML_DEBITOR .=' '.strtr($row_address, array(CHR(13) => ", ", CHR(10) => "")).''.$CrLf; $XML_DEBITOR .=' '.dol_string_unaccent($row_zip.' '.$row_town).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; - $XML_DEBITOR .=' '.$row_iban.''.$CrLf; + $XML_DEBITOR .=' '.preg_replace('/\s/', '', $row_iban).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; - $XML_DEBITOR .=' '.($row_facnumber.'/'.$Rowing.'/'.$Rum).''.$CrLf; + // $XML_DEBITOR .=' '.($row_facnumber.'/'.$Rowing.'/'.$Rum).''.$CrLf; + $XML_DEBITOR .=' '.$row_facnumber.''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; return $XML_DEBITOR; From 7ca8fdb20cd833d11ed1b693cadd36ffe521bca3 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 27 Feb 2015 17:58:19 +0100 Subject: [PATCH 44/54] PHP norms --- htdocs/compta/prelevement/class/bonprelevement.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 0a9884bbcd3..b90b0dc6c25 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1326,7 +1326,8 @@ class BonPrelevement extends CommonObject $dateTime_ECMA = dol_print_date($date_actu, '%Y-%m-%dT%H:%M:%S'); $fileDebiteurSection = ''; $fileEmetteurSection = ''; - $i = $j = 0; + $i = 0; + $j = 0; $this->total = 0; /* From 88d1d203d858f3083dcf1ee0eb8b8084fa5d3928 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 27 Feb 2015 18:13:24 +0100 Subject: [PATCH 45/54] Fix: Bad SEPA xml file creation Conflicts: htdocs/compta/prelevement/class/bonprelevement.class.php --- ChangeLog | 1 + .../class/bonprelevement.class.php | 51 ++++++++++++------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index a14c6830947..d4999c867c2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -198,6 +198,7 @@ Dolibarr better: - Fix: [ bug #1830 ] Salaries payment only allows checking accounts - Fix: [ bug #1825 ] External agenda: hide/show checkbox doesn't work - Fix: [ bug #1790 ] Email form behaves in an unexpected way when pressing Enter key +- Fix: Bad SEPA xml file creation ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** - Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index a43423c0d78..e8a34d6e22f 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -1255,14 +1255,29 @@ class BonPrelevement extends CommonObject $fileDebiteurSection = ''; $fileEmetteurSection = ''; $i = 0; + $j = 0; $this->total = 0; /* * section Debiteur (sepa Debiteurs bloc lines) */ - $sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, c.code as country_code,"; - $sql.= " pl.client_nom as name, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,"; - $sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.datec, rib.rowid as drum"; + + $sql = "SELECT f.facnumber as fac FROM ".MAIN_DB_PREFIX."prelevement_lignes as pl, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."prelevement_facture as pf, ".MAIN_DB_PREFIX."societe as soc, ".MAIN_DB_PREFIX."c_country as p, ".MAIN_DB_PREFIX."societe_rib as rib WHERE pl.fk_prelevement_bons = ".$this->id." AND pl.rowid = pf.fk_prelevement_lignes AND pf.fk_facture = f.rowid AND soc.fk_pays = p.rowid AND soc.rowid = f.fk_soc AND rib.fk_soc = f.fk_soc AND rib.default_rib = 1"; + $resql=$this->db->query($sql); + if ($resql) + { + $num = $this->db->num_rows($resql); + while ($j < $num) + { + $objfac = $this->db->fetch_object($resql); + $ListOfFactures = $ListOfFactures . $objfac->fac . ","; + $j++; + } + } + + $sql = "SELECT soc.code_client as code, soc.address, soc.zip, soc.town, soc.datec, p.code as country_code,"; + $sql.= " pl.client_nom as nom, pl.code_banque as cb, pl.code_guichet as cg, pl.number as cc, pl.amount as somme,"; + $sql.= " f.facnumber as fac, pf.fk_facture as idfac, rib.iban_prefix as iban, rib.bic as bic, rib.rowid as drum"; $sql.= " FROM"; $sql.= " ".MAIN_DB_PREFIX."prelevement_lignes as pl,"; $sql.= " ".MAIN_DB_PREFIX."facture as f,"; @@ -1285,7 +1300,7 @@ class BonPrelevement extends CommonObject while ($i < $num) { $obj = $this->db->fetch_object($resql); - $fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->name, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $obj->facnumber, $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum); + $fileDebiteurSection .= $this->EnregDestinataireSEPA($obj->code, $obj->nom, $obj->address, $obj->zip, $obj->town, $obj->country_code, $obj->cb, $obj->cg, $obj->cc, $obj->somme, $ListOfFactures , $obj->idfac, $obj->iban, $obj->bic, $obj->datec, $obj->drum); $this->total = $this->total + $obj->somme; $i++; } @@ -1320,13 +1335,14 @@ class BonPrelevement extends CommonObject fputs($this->file, ' '.$this->total.''.$CrLf); fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$this->raison_sociale.''.$CrLf); -/* fputs($this->file, ' '.$CrLf); - fputs($this->file, ' '.$CrLf); - fputs($this->file, ' 0533883248'.$CrLf); - fputs($this->file, ' KBO-BCE'.$CrLf); + fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$conf->global->PRELEVEMENT_ICS.''.$CrLf); + fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); -*/ fputs($this->file, ' '.$CrLf); + fputs($this->file, ' '.$CrLf); fputs($this->file, ' '.$CrLf); // SEPA File Emetteur if ($result != -2) @@ -1515,19 +1531,19 @@ class BonPrelevement extends CommonObject // Define value for RUM // Example: RUMCustomerCode-CustomerBankAccountId-01424448606 (note: Date is date of creation of CustomerBankAccountId) $Date_Rum = strtotime($row_datec); - $pre = ($date_Rum > 1359673200) ? 'RUM' : '++R'; - $Rum = dol_trunc($pre.$row_code_client.'-'.$row_drum.'-0'.date('U', $Date_Rum), 35, 'right', 'UTF-8', 1); - + $DtOfSgntr = dol_print_date($row_datec, '%Y-%m-%d'); + $pre = ($date_Rum > 1359673200) ? 'Rum' : '++R'; + $Rum = $pre.$row_code_client.$row_drum.'-0'.date('U', $Date_Rum); $XML_DEBITOR =''; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.('AS-'.$row_facnumber.'-'.$Rowing).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; - $XML_DEBITOR .=' '.round($row_somme, 2).''.$CrLf; + $XML_DEBITOR .=' '.round($row_somme, 2).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$Rum.''.$CrLf; - $XML_DEBITOR .=' '.$row_datec.''.$CrLf; + $XML_DEBITOR .=' '.$DtOfSgntr.''.$CrLf; $XML_DEBITOR .=' false'.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; @@ -1540,17 +1556,18 @@ class BonPrelevement extends CommonObject $XML_DEBITOR .=' '.strtoupper(dol_string_unaccent($row_nom)).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$row_country_code.''.$CrLf; - $XML_DEBITOR .=' '.strtr($row_adr, array(CHR(13) => ", ", CHR(10) => "")).''.$CrLf; + $XML_DEBITOR .=' '.strtr($row_address, array(CHR(13) => ", ", CHR(10) => "")).''.$CrLf; $XML_DEBITOR .=' '.dol_string_unaccent($row_zip.' '.$row_town).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; - $XML_DEBITOR .=' '.$row_iban.''.$CrLf; + $XML_DEBITOR .=' '.preg_replace('/\s/', '', $row_iban).''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; - $XML_DEBITOR .=' '.($row_facnumber.'/'.$Rowing.'/'.$Rum).''.$CrLf; + // $XML_DEBITOR .=' '.($row_facnumber.'/'.$Rowing.'/'.$Rum).''.$CrLf; + $XML_DEBITOR .=' '.$row_facnumber.''.$CrLf; $XML_DEBITOR .=' '.$CrLf; $XML_DEBITOR .=' '.$CrLf; return $XML_DEBITOR; From 8c6ee6b7a8104a7e26eeefabd8318fa96b3029d3 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Fri, 27 Feb 2015 18:20:35 +0100 Subject: [PATCH 46/54] Trad: Syncro from transifex --- htdocs/langs/es_ES/accountancy.lang | 6 +++--- htdocs/langs/es_ES/admin.lang | 2 +- htdocs/langs/es_ES/agenda.lang | 2 +- htdocs/langs/es_ES/compta.lang | 2 +- htdocs/langs/es_ES/cron.lang | 4 ++-- htdocs/langs/es_ES/errors.lang | 4 ++-- htdocs/langs/es_ES/orders.lang | 8 ++++---- htdocs/langs/es_ES/productbatch.lang | 10 +++++----- htdocs/langs/es_ES/products.lang | 6 +++--- htdocs/langs/es_ES/projects.lang | 4 ++-- htdocs/langs/es_ES/sendings.lang | 22 +++++++++++----------- htdocs/langs/es_ES/stocks.lang | 20 ++++++++++---------- htdocs/langs/es_ES/suppliers.lang | 4 ++-- htdocs/langs/es_ES/withdrawals.lang | 2 +- htdocs/langs/es_ES/workflow.lang | 2 +- 15 files changed, 49 insertions(+), 49 deletions(-) diff --git a/htdocs/langs/es_ES/accountancy.lang b/htdocs/langs/es_ES/accountancy.lang index 67b6e7e7f4c..487078605dc 100644 --- a/htdocs/langs/es_ES/accountancy.lang +++ b/htdocs/langs/es_ES/accountancy.lang @@ -13,9 +13,9 @@ ConfigAccountingExpert=Configuración del módulo contable Journaux=Diarios JournalFinancial=Diarios financieros Exports=Exportaciones -Export=Export +Export=Exportar Modelcsv=Modelo de exportación -OptionsDeactivatedForThisExportModel=For this export model, options are deactivated +OptionsDeactivatedForThisExportModel=Las opciones están desactivadas para este modelo de exportación Selectmodelcsv=Seleccione un modelo de exportación Modelcsv_normal=Exportación clásica Modelcsv_CEGID=Exportar a Cegid Expert @@ -68,7 +68,7 @@ Lineofinvoice=Línea de la factura VentilatedinAccount=Contabilizada con éxito en la cuenta contable NotVentilatedinAccount=Cuenta sin contabilización en la contabilidad -ACCOUNTING_SEPARATORCSV=Column separator in export file +ACCOUNTING_SEPARATORCSV=Separador de columnas en el archivo de exportación ACCOUNTING_LIMIT_LIST_VENTILATION=Número de elementos a contabilizar que se muestran por página (máximo recomendado: 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Ordenar las páginas de contabilización "A contabilizar" por los elementos más recientes diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index e07f8194142..78ce8878190 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -1568,4 +1568,4 @@ SalariesSetup=Configuración del módulo salarios SortOrder=Ordenación Format=Formatear TypePaymentDesc=0:Pago cliente,1:Pago proveedor,2:Tanto pago de cliente como de proveedor -IncludePath=Include path (defined into variable %s) +IncludePath=Include path (definida en la variable %s) diff --git a/htdocs/langs/es_ES/agenda.lang b/htdocs/langs/es_ES/agenda.lang index ad9ebcba1b2..64836535194 100644 --- a/htdocs/langs/es_ES/agenda.lang +++ b/htdocs/langs/es_ES/agenda.lang @@ -60,7 +60,7 @@ SupplierOrderSentByEMail=Pedido a proveedor %s enviada por e-mail SupplierInvoiceSentByEMail=Factura de proveedor %s enviada por e-mail ShippingSentByEMail=Expedición %s enviada por email ShippingValidated= Expedición %s validada -InterventionSentByEMail=Intervention %s sent by EMail +InterventionSentByEMail=Intervención %s enviada por e-mail NewCompanyToDolibarr= Tercero creado DateActionPlannedStart= Fecha de inicio prevista DateActionPlannedEnd= Fecha de fin prevista diff --git a/htdocs/langs/es_ES/compta.lang b/htdocs/langs/es_ES/compta.lang index 83e1dc18b6e..45438f35375 100644 --- a/htdocs/langs/es_ES/compta.lang +++ b/htdocs/langs/es_ES/compta.lang @@ -29,7 +29,7 @@ ReportTurnover=Volumen de ventas PaymentsNotLinkedToInvoice=Pagos vinculados a ninguna factura, por lo que ninguún tercero PaymentsNotLinkedToUser=Pagos no vinculados a un usuario Profit=Beneficio -AccountingResult=Accounting result +AccountingResult=Resultado contable Balance=Saldo Debit=Debe Credit=Haber diff --git a/htdocs/langs/es_ES/cron.lang b/htdocs/langs/es_ES/cron.lang index 477deb2e57a..d8d9065c901 100644 --- a/htdocs/langs/es_ES/cron.lang +++ b/htdocs/langs/es_ES/cron.lang @@ -14,8 +14,8 @@ URLToLaunchCronJobs=URL para ejecutar tareas Cron OrToLaunchASpecificJob=O para ejecutar una tarea en concreto KeyForCronAccess=Clave para la URL para ejecutar tareas Cron FileToLaunchCronJobs=Comando para ejecutar tareas Cron -CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run the command line each 5 minutes +CronExplainHowToRunUnix=En entornos Unix se debe utilizar la siguiente entrada crontab para ejecutar el comando cada 5 minutos +CronExplainHowToRunWin=En entornos Microsoft (tm) Windows, puede utilizar las herramienta tareas programadas para ejecutar el comando cada 5 minutos # Menu CronJobs=Tareas programadas CronListActive=Listado de tareas activas/programadas diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 16715819b76..18ee8a8a9ee 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -158,8 +158,8 @@ ErrorPriceExpression21=Resultado '%s' vacío ErrorPriceExpression22=Resultado '%s' negativo ErrorPriceExpressionInternal=Error interno '%s' ErrorPriceExpressionUnknown=Error desconocido '%s' -ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs -ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without batch/serial information, on a product requiring batch/serial information +ErrorSrcAndTargetWarehouseMustDiffers=Los almacenes de origen y destino deben de ser diferentes +ErrorTryToMakeMoveOnProductRequiringBatchData=Error, intenta hacer un movimiento de stock sin indicar lote/serie, en un producto que requiere de lote/serie # Warnings WarningMandatorySetupNotComplete=Los parámetros obligatorios de configuración no están todavía definidos diff --git a/htdocs/langs/es_ES/orders.lang b/htdocs/langs/es_ES/orders.lang index ce5b62a9033..895a5c32915 100644 --- a/htdocs/langs/es_ES/orders.lang +++ b/htdocs/langs/es_ES/orders.lang @@ -29,7 +29,7 @@ StatusOrderDraftShort=Borrador StatusOrderValidatedShort=Validado StatusOrderSentShort=Expedición en curso StatusOrderSent=Envío en curso -StatusOrderOnProcessShort=Ordered +StatusOrderOnProcessShort=Pedido StatusOrderProcessedShort=Procesado StatusOrderToBillShort=Emitido StatusOrderToBill2Short=A facturar @@ -41,7 +41,7 @@ StatusOrderReceivedAllShort=Recibido StatusOrderCanceled=Anulado StatusOrderDraft=Borrador (a validar) StatusOrderValidated=Validado -StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcess=Pedido - En espera de recibir StatusOrderProcessed=Procesado StatusOrderToBill=Emitido StatusOrderToBill2=A facturar @@ -50,8 +50,8 @@ StatusOrderRefused=Rechazado StatusOrderReceivedPartially=Recibido parcialmente StatusOrderReceivedAll=Recibido ShippingExist=Existe una expedición -ProductQtyInDraft=Product quantity into draft orders -ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +ProductQtyInDraft=Cantidades en pedidos borrador +ProductQtyInDraftOrWaitingApproved=Cantidades en pedidos borrador o aprobados, pero no realizados DraftOrWaitingApproved=Borrador o aprobado aún no controlado DraftOrWaitingShipped=Borrador o validado aún no expedido MenuOrdersToBill=Pedidos a facturar diff --git a/htdocs/langs/es_ES/productbatch.lang b/htdocs/langs/es_ES/productbatch.lang index 194a1ab5a5b..6fa46be9db5 100644 --- a/htdocs/langs/es_ES/productbatch.lang +++ b/htdocs/langs/es_ES/productbatch.lang @@ -1,8 +1,8 @@ # ProductBATCH language file - en_US - ProductBATCH -ManageLotSerial=Use batch/serial number -ProductStatusOnBatch=Yes (Batch/serial required) -ProductStatusNotOnBatch=No (Batch/serial not used) -ProductStatusOnBatchShort=Yes +ManageLotSerial=Usar numeración por lotes/series +ProductStatusOnBatch=Sí (se necesita lote/serie) +ProductStatusNotOnBatch=No (no se usa lote/serie) +ProductStatusOnBatchShort=Sí ProductStatusNotOnBatchShort=No Batch=Lote/Serie atleast1batchfield=Fecha de caducidad o Fecha de venta o Lote @@ -18,4 +18,4 @@ printQty=Cant.: %d AddDispatchBatchLine=Añada una línea para despacho por caducidad BatchDefaultNumber=Indefinido WhenProductBatchModuleOnOptionAreForced=Si el módulo de Lotes/Series está activado, el incremento/decremento de stock es forzado a lo último escogido y no puede editarse. Otras opciones pueden definirse si se necesita -ProductDoesNotUseBatchSerial=This product does not use batch/serial number +ProductDoesNotUseBatchSerial=Este producto no usa numeración por lotes/series diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang index 97ad12c901b..e07e882a1ee 100644 --- a/htdocs/langs/es_ES/products.lang +++ b/htdocs/langs/es_ES/products.lang @@ -22,14 +22,14 @@ ProductAccountancySellCode=Código contable ventas ProductOrService=Producto o servicio ProductsAndServices=Productos y servicios ProductsOrServices=Productos o servicios -ProductsAndServicesOnSell=Products and Services for sale or for purchase -ProductsAndServicesNotOnSell=Products and Services out of sale +ProductsAndServicesOnSell=Productos y Servicios a la venta o en compra +ProductsAndServicesNotOnSell=Productos y Servicios fuera de venta ProductsAndServicesStatistics=Estadísticas productos y servicios ProductsStatistics=Estadísticas productos ProductsOnSell=Producto en venta o en compra ProductsNotOnSell=Producto fuera de venta y fuera de compra ProductsOnSellAndOnBuy=Productos en venta o en compra -ServicesOnSell=Services for sale or for purchase +ServicesOnSell=Servicios a la venta o en compra ServicesNotOnSell=Servicios fuera de venta ServicesOnSellAndOnBuy=Servicios a la venta o en compra InternalRef=Referencia interna diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index ce1af52a955..b17e8892198 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -3,7 +3,7 @@ RefProject=Ref. proyecto ProjectId=Id proyecto Project=Proyecto Projects=Proyectos -ProjectStatus=Project status +ProjectStatus=Estado del proyecto SharedProject=Proyecto compartido PrivateProject=Contactos del proyecto MyProjectsDesc=Esta vista muestra aquellos proyectos en los que usted es un contacto afectado (cualquier tipo). @@ -103,7 +103,7 @@ CloneContacts=Clonar los contactos CloneNotes=Clonar las notas CloneProjectFiles=Clonar los archivos adjuntos del proyecto CloneTaskFiles=Clonar los archivos adjuntos de la(s) tarea(s) (si se clonan la(s) tarea(s)) -CloneMoveDate=Update project/tasks dates from now ? +CloneMoveDate=¿Actualizar las fechas de los proyectos/tareas? ConfirmCloneProject=¿Está seguro de querer clonar este proyecto? ProjectReportDate=Cambiar las fechas de las tareas en función de la fecha de inicio del proyecto ErrorShiftTaskDate=Se ha producido un error en el cambio de las fechas de las tareas diff --git a/htdocs/langs/es_ES/sendings.lang b/htdocs/langs/es_ES/sendings.lang index d9e67d7c0e4..cf377a641db 100644 --- a/htdocs/langs/es_ES/sendings.lang +++ b/htdocs/langs/es_ES/sendings.lang @@ -4,8 +4,8 @@ Sending=Envío Sendings=Envíos Shipment=Envío Shipments=Envíos -ShowSending=Show Sending -Receivings=Receipts +ShowSending=Mostrar envío +Receivings=Recepciones SendingsArea=Área envíos ListOfSendings=Listado de envíos SendingMethod=Método de envío @@ -15,7 +15,7 @@ SearchASending=Buscar envío StatisticsOfSendings=Estadísticas de envíos NbOfSendings=Número de envíos NumberOfShipmentsByMonth=Número de envíos por mes -SendingCard=Shipment card +SendingCard=Ficha envío NewSending=Nuevo envío CreateASending=Crear un envío CreateSending=Crear envío @@ -38,7 +38,7 @@ StatusSendingCanceledShort=Anulado StatusSendingDraftShort=Borrador StatusSendingValidatedShort=Validado StatusSendingProcessedShort=Procesado -SendingSheet=Shipment sheet +SendingSheet=Nota de entrega Carriers=Transportistas Carrier=Transportista CarriersArea=Área transportistas @@ -59,15 +59,15 @@ SendShippingRef=Envío de la expedición %s ActionsOnShipping=Eventos sobre la expedición LinkToTrackYourPackage=Enlace para el seguimento de su paquete ShipmentCreationIsDoneFromOrder=De momento, la creación de una nueva expedición se realiza desde la ficha de pedido. -RelatedShippings=Related shipments +RelatedShippings=Expediciones asociadas ShipmentLine=Línea de expedición CarrierList=Listado de transportistas -SendingRunning=Product from ordered customer orders -SuppliersReceiptRunning=Product from ordered supplier orders -ProductQtyInCustomersOrdersRunning=Product quantity into opened customers orders -ProductQtyInSuppliersOrdersRunning=Product quantity into opened suppliers orders -ProductQtyInShipmentAlreadySent=Product quantity from opended customer order already sent -ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from opened supplier order already received +SendingRunning=Producto de pedidos de clientes +SuppliersReceiptRunning=Producto de pedidos a proveedores +ProductQtyInCustomersOrdersRunning=Cantidad en pedidos de clientes abiertos +ProductQtyInSuppliersOrdersRunning=Cantidad en pedidos a proveedores abiertos +ProductQtyInShipmentAlreadySent=Cantidad en pedidos de clientes ya enviados +ProductQtyInSuppliersShipmentAlreadyRecevied=Cantidad en pedidos a proveedores ya recibidos # Sending methods SendingMethodCATCH=Recogido por el cliente diff --git a/htdocs/langs/es_ES/stocks.lang b/htdocs/langs/es_ES/stocks.lang index 652c750edb2..c45945ede6e 100644 --- a/htdocs/langs/es_ES/stocks.lang +++ b/htdocs/langs/es_ES/stocks.lang @@ -48,8 +48,8 @@ PMPValueShort=PMP EnhancedValueOfWarehouses=Valor de stocks UserWarehouseAutoCreate=Crear automáticamente existencias/almacén propio del usuario en la creación del usuario QtyDispatched=Cantidad recibida -QtyDispatchedShort=Qty dispatched -QtyToDispatchShort=Qty to dispatch +QtyDispatchedShort=Cant. recibida +QtyToDispatchShort=Cant. a enviar OrderDispatch=Recepción de stocks RuleForStockManagementDecrease=Regla de gestión de decrementos de stock RuleForStockManagementIncrease=Regla de gestión de incrementos de stock @@ -61,7 +61,7 @@ ReStockOnValidateOrder=Incrementar los stocks físicos sobre los pedidos a prove ReStockOnDispatchOrder=Incrementa los stocks físicos en el desglose manual de la recepción de los pedidos a proveedores en los almacenes ReStockOnDeleteInvoice=Incrementa los stocks físicos en la eliminación de facturas OrderStatusNotReadyToDispatch=El pedido aún no está o no tiene un estado que permita un desglose de stock. -StockDiffPhysicTeoric=Explanation for difference between physical and theoretical stock +StockDiffPhysicTeoric=Motivo de la diferencia entre valores físicos y teóricos NoPredefinedProductToDispatch=No hay productos predefinidos en este objeto. Por lo tanto no se puede realizar un desglose de stock. DispatchVerb=Validar recepción StockLimitShort=Límite para alerta @@ -118,15 +118,15 @@ MassMovement=Movimientos en masa MassStockMovement=Movimientos de stock en masa SelectProductInAndOutWareHouse=Selecccione un producto, una cantidad, un almacén origen y un almacén destino, seguidamente haga clic "%s". Una vez seleccionados todos los movimientos, haga clic en "%s". RecordMovement=Registrar transferencias -ReceivingForSameOrder=Receipts for this order +ReceivingForSameOrder=Recepciones de este pedido StockMovementRecorded=Movimiento de stock registrado RuleForStockAvailability=Reglas de requerimiento de stock StockMustBeEnoughForInvoice=El nivel de existencias debe ser suficiente para añadir productos/servicios en facturas StockMustBeEnoughForOrder=El nivel de existencias debe ser suficiente para añadir productos/servicios en pedidos StockMustBeEnoughForShipment= El nivel de existencias debe ser suficiente para añadir productos/servicios en envíos -MovementLabel=Label of movement -InventoryCode=Movement or inventory code -IsInPackage=Contained into package -ShowWarehouse=Show warehouse -MovementCorrectStock=Stock content correction for product %s -MovementTransferStock=Stock transfer of product %s into another warehouse +MovementLabel=Etiqueta del movimiento +InventoryCode=Movimiento o código de inventario +IsInPackage=Contenido en el paquete +ShowWarehouse=Mostrar almacén +MovementCorrectStock=Corrección de stock del producto %s +MovementTransferStock=Transferencia de stock del producto %s a otro almacén diff --git a/htdocs/langs/es_ES/suppliers.lang b/htdocs/langs/es_ES/suppliers.lang index 88db48b131a..a7d37289ca7 100644 --- a/htdocs/langs/es_ES/suppliers.lang +++ b/htdocs/langs/es_ES/suppliers.lang @@ -42,5 +42,5 @@ NoneOrBatchFileNeverRan=Ninguno o lote %s no se ha ejecutado recientement SentToSuppliers=Enviado a proveedores ListOfSupplierOrders=Listado de pedidos a proveedor MenuOrdersSupplierToBill=Pedidos a proveedor a facturar -NbDaysToDelivery=Delivery delay in days -DescNbDaysToDelivery=The biggest delay is display among order product list +NbDaysToDelivery=Tiempo de entrega en días +DescNbDaysToDelivery=El plazo mayor se visualiza el el listado de pedidos de productos diff --git a/htdocs/langs/es_ES/withdrawals.lang b/htdocs/langs/es_ES/withdrawals.lang index b1a5531479e..b5e6bd3cdee 100644 --- a/htdocs/langs/es_ES/withdrawals.lang +++ b/htdocs/langs/es_ES/withdrawals.lang @@ -79,7 +79,7 @@ CreditDate=Abonada el WithdrawalFileNotCapable=No es posible generar el fichero bancario de domiciliación para el país %s (El país no está soportado) ShowWithdraw=Ver domiciliación IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Sin embargo, si la factura tiene pendiente algún pago por domiciliación, no será cerrada para permitir la gestión de la domiciliación. -DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once done, go into menu Bank->Withdrawal to manage the standing order. When standing order is closed, payment on invoice will be automatically recorded, and invoice closed if remainder to pay is null. +DoStandingOrdersBeforePayments=Esta pestaña le permite realizar una petición de domiciliación. Una vez realizadas las peticiones, vaya al menú Bancos->Domiciliaciones para gestionar la domiciliación. Al cerrar una domiciliación, los pagos de las facturas se registrarán automáticamente, y las facturas completamente pagadas serán cerradas. WithdrawalFile=Archivo de la domiciliación SetToStatusSent=Clasificar como "Archivo enviado" ThisWillAlsoAddPaymentOnInvoice=Se crearán los pagos de las facturas y las clasificará como pagadas diff --git a/htdocs/langs/es_ES/workflow.lang b/htdocs/langs/es_ES/workflow.lang index 826ad1eb61e..8f97c568178 100644 --- a/htdocs/langs/es_ES/workflow.lang +++ b/htdocs/langs/es_ES/workflow.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin WorkflowSetup=Configuración del módulo Flujo de trabajo -WorkflowDesc=This module is designed to modify the behaviour of automatic actions into application. By default, workflow is opened (you make thing in order you want). You can activate the automatic actions that you are interesting in. +WorkflowDesc=Este módulo le permite cambiar el comportamiento de las acciones automáticas en la aplicación. De forma predeterminada, el workflow está abierto (configure según sus necesidades). Active las acciones automáticas que le interesen. ThereIsNoWorkflowToModify=No hay workflow modificable para los módulos que tiene activados. descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Crear un pedido de cliente automáticamente a la firma de un presupuesto descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Crear una factura a cliente automáticamente a la firma de un presupuesto From 1cdd77a6716c956f994f0af2bb4c2f615b1ad163 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 28 Feb 2015 18:18:41 +0100 Subject: [PATCH 47/54] Fix: use bad var --- htdocs/fourn/commande/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 0257b51c946..7750250b00b 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -334,7 +334,7 @@ if ($action == 'addline' && $user->rights->fournisseur->commande->creer) else { $ttc = price2num($_POST['price_ttc']); - $ht = $ttc / (1 + ($tauxtva / 100)); + $ht = $ttc / (1 + ($tva_tx / 100)); $price_base_type = 'HT'; $result=$object->addline($desc, $ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, 0, 0, '', $remise_percent, $price_base_type, $ttc, $type,'','', $date_start, $date_end); } From 7baaf18ad1f157767d6d645631cbc50ad3d86f98 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 28 Feb 2015 18:44:06 +0100 Subject: [PATCH 48/54] Fix can be null --- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 3 +++ htdocs/install/mysql/tables/llx_projet_task.sql | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 2efb6996993..d9d972cc25c 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -1095,6 +1095,9 @@ ALTER TABLE llx_projet_task_time ADD INDEX idx_projet_task_time_task (fk_task); ALTER TABLE llx_projet_task_time ADD INDEX idx_projet_task_time_date (task_date); ALTER TABLE llx_projet_task_time ADD INDEX idx_projet_task_time_datehour (task_datehour); +ALTER TABLE llx_projet_task CHANGE COLUMN duration_effective real DEFAULT 0 NULL; +ALTER TABLE llx_projet_task CHANGE COLUMN planned_workload real DEFAULT 0 NULL; + -- add extrafield on ficheinter lines CREATE TABLE llx_fichinterdet_extrafields diff --git a/htdocs/install/mysql/tables/llx_projet_task.sql b/htdocs/install/mysql/tables/llx_projet_task.sql index 98c8845974e..5b9decd23ef 100644 --- a/htdocs/install/mysql/tables/llx_projet_task.sql +++ b/htdocs/install/mysql/tables/llx_projet_task.sql @@ -31,10 +31,10 @@ create table llx_projet_task datev datetime, -- date validation label varchar(255) NOT NULL, description text, - duration_effective real DEFAULT 0 NOT NULL, - planned_workload real DEFAULT 0 NOT NULL, - progress integer DEFAULT 0, -- percentage increase - priority integer DEFAULT 0, -- priority + duration_effective real DEFAULT 0, + planned_workload real DEFAULT 0, + progress integer DEFAULT 0, -- percentage increase + priority integer DEFAULT 0, -- priority fk_user_creat integer, -- user who created the task fk_user_valid integer, -- user who validated the task fk_statut smallint DEFAULT 0 NOT NULL, From f8e9a38e5cecddc7ebef63cc66a4cdc731592681 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 28 Feb 2015 19:37:44 +0100 Subject: [PATCH 49/54] Fix: Avoid empty table into setup when module are missing. --- htdocs/admin/stock.php | 131 +++++++++++++++++++++------------- htdocs/langs/en_US/admin.lang | 2 + 2 files changed, 82 insertions(+), 51 deletions(-) diff --git a/htdocs/admin/stock.php b/htdocs/admin/stock.php index 6b2c626da39..87ed5fe64c6 100644 --- a/htdocs/admin/stock.php +++ b/htdocs/admin/stock.php @@ -136,6 +136,8 @@ print "  \n"; print ''."\n"; $var=true; +$found=0; + if (! empty($conf->facture->enabled)) { $var=!$var; @@ -148,6 +150,7 @@ if (! empty($conf->facture->enabled)) print $form->selectyesno("STOCK_CALCULATE_ON_BILL",$conf->global->STOCK_CALCULATE_ON_BILL,1,$disabled); print ''; print "\n\n\n"; + $found++; } if (! empty($conf->commande->enabled)) @@ -162,6 +165,7 @@ if (! empty($conf->commande->enabled)) print $form->selectyesno("STOCK_CALCULATE_ON_VALIDATE_ORDER",$conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER,1,$disabled); print ''; print "\n\n\n"; + $found++; } if (! empty($conf->expedition->enabled)) @@ -176,7 +180,17 @@ if (! empty($conf->expedition->enabled)) print $form->selectyesno("STOCK_CALCULATE_ON_SHIPMENT",$conf->global->STOCK_CALCULATE_ON_SHIPMENT,1,$disabled); print ''; print "\n\n\n"; + $found++; } + +if (! $found) +{ + $var=!$var; + print ""; + print ''.$langs->trans("NoModueToManageStockDecrease").''; + print "\n"; +} + print ''; print '
'; @@ -189,6 +203,8 @@ print "  \n"; print ''."\n"; $var=true; +$found=0; + if (! empty($conf->fournisseur->enabled)) { $var=!$var; @@ -201,6 +217,7 @@ if (! empty($conf->fournisseur->enabled)) print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_BILL",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL,1,$disabled); print ''; print "\n\n\n"; + $found++; } if (! empty($conf->fournisseur->enabled)) @@ -215,6 +232,7 @@ if (! empty($conf->fournisseur->enabled)) print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER,1,$disabled); print ''; print "\n\n\n"; + $found++; } if (! empty($conf->fournisseur->enabled)) { @@ -228,65 +246,76 @@ if (! empty($conf->fournisseur->enabled)) print $form->selectyesno("STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER",$conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER,1,$disabled); print ''; print "\n\n\n"; + $found++; +} + +if (! $found) +{ + $var=!$var; + print ""; + print ''.$langs->trans("NoModueToManageStockIncrease").''; + print "\n"; } print ''; // Optio to force stock to be enough before adding a line into document -print '
'; -print ''; -print ''; -print " \n"; -print " \n"; -print ''."\n"; +if ($conf->invoice->enabled || $conf->order->enabled || $conf->expedition->enabled) +{ + print '
'; + print '
".$langs->trans("RuleForStockAvailability")." 
'; + print ''; + print " \n"; + print " \n"; + print ''."\n"; -if($conf->invoice->enabled) { - $var = !$var; - print ""; - print ''; - print '\n"; - print "\n"; + if($conf->invoice->enabled) { + $var = !$var; + print ""; + print ''; + print '\n"; + print "\n"; + } + + if($conf->order->enabled) { + $var = !$var; + print ""; + print ''; + print '\n"; + print "\n"; + } + + if($conf->expedition->enabled) { + $var = !$var; + print ""; + print ''; + print '\n"; + print "\n"; + } + print '
".$langs->trans("RuleForStockAvailability")." 
'.$langs->trans("StockMustBeEnoughForInvoice").''; - print "
"; - print ''; - print ""; - print $form->selectyesno("STOCK_MUST_BE_ENOUGH_FOR_INVOICE",$conf->global->STOCK_MUST_BE_ENOUGH_FOR_INVOICE,1); - print ''; - print '
'; - print "
'.$langs->trans("StockMustBeEnoughForInvoice").''; + print "
"; + print ''; + print ""; + print $form->selectyesno("STOCK_MUST_BE_ENOUGH_FOR_INVOICE",$conf->global->STOCK_MUST_BE_ENOUGH_FOR_INVOICE,1); + print ''; + print '
'; + print "
'.$langs->trans("StockMustBeEnoughForOrder").''; + print "
"; + print ''; + print ""; + print $form->selectyesno("STOCK_MUST_BE_ENOUGH_FOR_ORDER",$conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER,1); + print ''; + print '
'; + print "
'.$langs->trans("StockMustBeEnoughForShipment").''; + print "
"; + print ''; + print ""; + print $form->selectyesno("STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT",$conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT,1); + print ''; + print '
'; + print "
'; } -if($conf->order->enabled) { - $var = !$var; - print ""; - print ''.$langs->trans("StockMustBeEnoughForOrder").''; - print ''; - print "
"; - print ''; - print ""; - print $form->selectyesno("STOCK_MUST_BE_ENOUGH_FOR_ORDER",$conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER,1); - print ''; - print '
'; - print "\n"; - print "\n"; -} - -if($conf->expedition->enabled) { - $var = !$var; - print ""; - print ''.$langs->trans("StockMustBeEnoughForShipment").''; - print ''; - print "
"; - print ''; - print ""; - print $form->selectyesno("STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT",$conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT,1); - print ''; - print '
'; - print "\n"; - print "\n"; -} -print ''; - - $virtualdiffersfromphysical=0; if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT) || ! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8768983ce73..e39486e242a 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1560,3 +1560,5 @@ SortOrder=Sort order Format=Format TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type IncludePath=Include path (defined into variable %s) +NoModueToManageStockDecrease=No module able to manage automatic stock decrease has been activated. Stock decrease will be done on manual input only. +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. From be033c1947798b59d1de39ec915b9ee45f704c04 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 1 Mar 2015 13:54:24 +0100 Subject: [PATCH 50/54] Fix bad position of html tags Conflicts: htdocs/opensurvey/card.php --- htdocs/opensurvey/card.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/htdocs/opensurvey/card.php b/htdocs/opensurvey/card.php index 396fdf050ec..70e1b49ad48 100644 --- a/htdocs/opensurvey/card.php +++ b/htdocs/opensurvey/card.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2013-2015 Laurent Destailleur * Copyright (C) 2014 Marcos García * * This program is free software; you can redistribute it and/or modify @@ -157,12 +157,14 @@ if ($action == 'edit') { * View */ -if ($object->fk_user_creat) { +$form=new Form($db); + +if ($object->fk_user_creat) +{ $userstatic = new User($db); $userstatic->fetch($object->fk_user_creat); } -$form=new Form($db); $arrayofjs=array(); $arrayofcss=array('/opensurvey/css/style.css'); @@ -186,8 +188,8 @@ print ''; $head = opensurvey_prepare_head($object); -print dol_get_fiche_head($head,'general',$langs->trans("Survey"),0,dol_buildpath('/opensurvey/img/object_opensurvey.png',1),1); +dol_fiche_head($head,'general',$langs->trans("Survey"),0,dol_buildpath('/opensurvey/img/object_opensurvey.png',1),1); print ''; @@ -313,11 +315,12 @@ print $urllink; print '
'; -if ($action == 'edit') print '

'; +dol_fiche_end(); + +if ($action == 'edit') print '
'; print ''."\n"; -dol_fiche_end(); /* From 5f29942257d3bcf96db31e14002738ebadcbf083 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 1 Mar 2015 14:03:14 +0100 Subject: [PATCH 51/54] Fix link missing icon --- htdocs/projet/index.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/htdocs/projet/index.php b/htdocs/projet/index.php index 36f53b02680..8baa287731e 100644 --- a/htdocs/projet/index.php +++ b/htdocs/projet/index.php @@ -25,6 +25,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; +require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; @@ -50,6 +51,7 @@ $sortorder = GETPOST("sortorder",'alpha'); $socstatic=new Societe($db); $projectstatic=new Project($db); $userstatic=new User($db); +$tasktmp=new Task($db); $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:(empty($user->rights->projet->all->lire)?0:2)),1); //var_dump($projectsListId); @@ -224,7 +226,9 @@ if ( $resql ) print ''; if (! empty($obj->taskid)) { - print ''.$obj->label.''; + $tasktmp->id = $obj->taskid; + $tasktmp->ref = $obj->label; + print $tasktmp->getNomUrl(1); } else print $langs->trans("NoTasks"); print ''; @@ -256,13 +260,13 @@ if ( $resql ) } if ($num > $max) - { - print ''.$langs->trans("WarningTooManyDataPleaseUseMoreFilters").''; + { + print ''.$langs->trans("WarningTooManyDataPleaseUseMoreFilters").''; } - + print ""; - + $db->free($resql); } else From 8a00109baf27c38243ee776a411a24f616d3dd15 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 1 Mar 2015 16:04:34 +0100 Subject: [PATCH 52/54] Fix: Several bugs int replenishment feature. --- htdocs/commande/list.php | 13 +-- htdocs/fourn/commande/dispatch.php | 4 +- htdocs/install/mysql/migration/repair.sql | 1 + htdocs/langs/en_US/stocks.lang | 2 +- htdocs/product/class/product.class.php | 15 ++-- .../product/stock/lib/replenishment.lib.php | 80 ++++++++++++------- htdocs/product/stock/replenish.php | 74 +++++++---------- htdocs/product/stock/replenishorders.php | 32 ++++---- 8 files changed, 120 insertions(+), 101 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 0de3c54e1ba..59df993b686 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -361,19 +361,22 @@ if ($resql) // stock order and stock order_supplier $stock_order=0; $stock_order_supplier=0; - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) { - if (! empty($conf->commande->enabled)) { + if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) + { + if (! empty($conf->commande->enabled)) + { if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'])) { - $generic_product->load_stats_commande(0,'1,2',true); + $generic_product->load_stats_commande(0,'1,2'); $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'] = $generic_product->stats_commande['qty']; } else { $generic_product->stats_commande['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer']; } $stock_order=$generic_product->stats_commande['qty']; } - if (! empty($conf->fournisseur->enabled)) { + if (! empty($conf->fournisseur->enabled)) + { if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'])) { - $generic_product->load_stats_commande_fournisseur(0,'3',true); + $generic_product->load_stats_commande_fournisseur(0,'3'); $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'] = $generic_product->stats_commande_fournisseur['qty']; } else { $generic_product->stats_commande_fournisseur['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier']; diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index c88886de649..9874f809673 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -387,11 +387,11 @@ if ($id > 0 || ! empty($ref)) print ''; if (count($listwarehouses)>1) { - print $form->selectarray("entrepot".$suffix, $listwarehouses, '', 1, 0, 0, '', 0, 0, $disabled); + print $form->selectarray("entrepot".$suffix, $listwarehouses, GETPOST("entrepot".$suffix), 1, 0, 0, '', 0, 0, $disabled); } elseif (count($listwarehouses)==1) { - print $form->selectarray("entrepot".$suffix, $listwarehouses, '', 0, 0, 0, '', 0, 0, $disabled); + print $form->selectarray("entrepot".$suffix, $listwarehouses, GETPOST("entrepot".$suffix), 0, 0, 0, '', 0, 0, $disabled); } else { diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 9e1ca7bb6f9..c0aeda5b671 100755 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -212,5 +212,6 @@ update llx_facturedet set product_type = 1 where product_type = 2; --update llx_commandedet as d set d.product_type = 1 where d.fk_product = 22 and d.product_type = 0; --update llx_facturedet as d set d.product_type = 1 where d.fk_product = 22 and d.product_type = 0; +delete from llx_commande_fournisseur_dispatch where fk_commandefourndet = 0 or fk_commandefourndet IS NULL; diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 0e3e7dd6c27..fdd6408accb 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -108,7 +108,7 @@ WarehouseForStockDecrease=The warehouse %s will be used for stock decreas WarehouseForStockIncrease=The warehouse %s will be used for stock increase ForThisWarehouse=For this warehouse ReplenishmentStatusDesc=This is list of all product with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked), and suggest you to create supplier orders to fill the difference. -ReplenishmentOrdersDesc=This is list of all opened supplier orders +ReplenishmentOrdersDesc=This is list of all opened supplier orders including predefined products. Only opened orders with predefined products, so that may affect stocks, are visible here. Replenishments=Replenishments NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 0778046c431..e26f9102544 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3024,7 +3024,9 @@ class Product extends CommonObject } } $this->db->free($result); - $this->load_virtual_stock(); + + $this->load_virtual_stock(); // This also load stats_commande_fournisseur, ... + return 1; } else @@ -3048,18 +3050,21 @@ class Product extends CommonObject $stock_sending_client=0; $stock_reception_fournisseur=0; - if (! empty($conf->commande->enabled)) { + if (! empty($conf->commande->enabled)) + { $result=$this->load_stats_commande(0,'1,2'); if ($result < 0) dol_print_error($db,$this->error); $stock_commande_client=$this->stats_commande['qty']; } - if (! empty($conf->expedition->enabled)) { + if (! empty($conf->expedition->enabled)) + { $result=$this->load_stats_sending(0,'1,2'); if ($result < 0) dol_print_error($db,$this->error); $stock_sending_client=$this->stats_expedition['qty']; } - if (! empty($conf->fournisseur->enabled)) { - $result=$this->load_stats_commande_fournisseur(0,'3,4'); + if (! empty($conf->fournisseur->enabled)) + { + $result=$this->load_stats_commande_fournisseur(0,'1,2,3,4'); if ($result < 0) dol_print_error($db,$this->error); $stock_commande_fournisseur=$this->stats_commande_fournisseur['qty']; diff --git a/htdocs/product/stock/lib/replenishment.lib.php b/htdocs/product/stock/lib/replenishment.lib.php index 50a0d85e25c..1ef993c479d 100644 --- a/htdocs/product/stock/lib/replenishment.lib.php +++ b/htdocs/product/stock/lib/replenishment.lib.php @@ -25,56 +25,80 @@ require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.commande.class.php'; /** - * dispatched + * Check if there is still some dispatching of stock to do. * - * @param int $order_id Id of order - * @return boolean + * @param int $order_id Id of order to check + * @return boolean True = There is some dispatching to do, False = All dispatching is done (may be we receive more) or is not required */ -function dispatched($order_id) +function dolDispatchToDo($order_id) { global $db; - $sql = 'SELECT fk_product, SUM(qty) FROM ' . MAIN_DB_PREFIX . 'commande_fournisseur_dispatch'; - $sql .= ' WHERE fk_commande = ' . $order_id . ' GROUP BY fk_product'; - $sql .= ' ORDER by fk_product'; - $resql = $db->query($sql); + $dispatched = array(); $ordered = array(); - if($resql && $db->num_rows($resql)) - { - while($res = $db->fetch_object($resql)) - $dispatched[] = $res; - } - $sql = 'SELECT fk_product, SUM(qty) FROM ' . MAIN_DB_PREFIX . 'commande_fournisseurdet'; - $sql .= ' WHERE fk_commande = ' . $order_id . ' GROUP BY fk_product'; - $sql .= ' ORDER by fk_product'; + + # Count nb of quantity dispatched per product + $sql = 'SELECT fk_product, SUM(qty) FROM ' . MAIN_DB_PREFIX . 'commande_fournisseur_dispatch'; + $sql.= ' WHERE fk_commande = ' . $order_id; + $sql.= ' GROUP BY fk_product'; + $sql.= ' ORDER by fk_product'; $resql = $db->query($sql); - if($resql && $db->num_rows($resql)) { - while($res = $db->fetch_object($resql)) - $ordered[] = $res; + if ($resql && $db->num_rows($resql)) + { + while ($obj = $db->fetch_object($resql)) + $dispatched[$obj->fk_product] = $obj; } - return $dispatched == $ordered; + + # Count nb of quantity to dispatch per product + $sql = 'SELECT fk_product, SUM(qty) FROM ' . MAIN_DB_PREFIX . 'commande_fournisseurdet'; + $sql.= ' WHERE fk_commande = ' . $order_id; + $sql.= ' AND fk_product > 0'; + if (empty($conf->global->STOCK_SUPPORTS_SERVICES)) $sql.= ' AND product_type = 0'; + $sql.= ' GROUP BY fk_product'; + $sql.= ' ORDER by fk_product'; + $resql = $db->query($sql); + if ($resql && $db->num_rows($resql)) + { + while ($obj = $db->fetch_object($resql)) + $ordered[$obj->fk_product] = $obj; + } + + $todispatch=0; + foreach ($ordered as $key => $val) + { + if ($ordered[$key] > $dispatched[$key]) $todispatch++; + } + + return ($todispatch ? true : false); + //return true; } /** * dispatchedOrders * - * @return Ambigous + * @return string Array of id of orders wit all dispathing already done or not required */ function dispatchedOrders() { global $db; + $sql = 'SELECT rowid FROM ' . MAIN_DB_PREFIX . 'commande_fournisseur'; $resql = $db->query($sql); - $res = array(); - if ($resql && $db->num_rows($resql) > 0) { - while ($obj = $db->fetch_object($resql)) { - if (dispatched($obj->rowid)) { - $res[] = $obj->rowid; + $resarray = array(); + if ($resql && $db->num_rows($resql) > 0) + { + while ($obj = $db->fetch_object($resql)) + { + if (! dolDispatchToDo($obj->rowid)) + { + $resarray[] = $obj->rowid; } } } - if ($res) { - $res = '(' . implode(',', $res) . ')'; + + if (count($resarray)) + { + $res = '(' . implode(',', $resarray) . ')'; } else { //hack to make sure ordered SQL request won't syntax error $res = '(0)'; diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 35835709ab8..efb008df4ff 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -336,6 +336,17 @@ $head[1][0] = DOL_URL_ROOT.'/product/stock/replenishorders.php'; $head[1][1] = $langs->trans("ReplenishmentOrders"); $head[1][2] = 'replenishorders'; + + +print '
'. + ''. + ''. + ''. + ''. + ''. + ''. + ''; + dol_fiche_head($head, 'replenish', $langs->trans('Replenishment'), 0, 'stock'); print $langs->trans("ReplenishmentStatusDesc").'
'."\n"; @@ -386,16 +397,7 @@ if ($sref || $snom || $sall || $salert || GETPOST('search', 'alpha')) { ); } -print ''. - ''. - ''. - ''. - ''. - ''. - ''. - ''. - - ''; +print '
'; $param = (isset($type)? '&type=' . $type : ''); $param .= '&fourn_id=' . $fourn_id . '&snom='. $snom . '&salert=' . $salert; @@ -467,7 +469,6 @@ while ($i < ($limit ? min($num, $limit) : $num)) if (!empty($objtp->label)) $objp->label = $objtp->label; } } - $form = new Form($db); $var =! $var; if ($usevirtualstock) @@ -480,7 +481,13 @@ while ($i < ($limit ? min($num, $limit) : $num)) $stock = $prod->stock_reel; } - $ordered = $prod->stats_commande_fournisseur['qty']-$prod->stats_reception['qty']; + // Force call prod->load_stats_xxx to choose status to count (otherwise it is loaded by load_stock function) + $result=$prod->load_stats_commande_fournisseur(0,'1,2,3,4'); + $result=$prod->load_stats_reception(0,'4'); + + //print $prod->stats_commande_fournisseur['qty'].'
'."\n"; + //print $prod->stats_reception['qty']; + $ordered = $prod->stats_commande_fournisseur['qty'] - $prod->stats_reception['qty']; $warning=''; if ($objp->alertstock && ($stock < $objp->alertstock)) @@ -555,12 +562,6 @@ while ($i < ($limit ? min($num, $limit) : $num)) print '
'; -$value=$langs->trans("CreateOrders"); -print '
'; - - -print '
'; - if ($num > $conf->liste_limit) { if ($sref || $snom || $sall || $salert || GETPOST('search', 'alpha')) @@ -569,36 +570,16 @@ if ($num > $conf->liste_limit) $filters .= '&sall=' . $sall; $filters .= '&salert=' . $salert; $filters .= '&mode=' . $mode; - print_barre_liste( - '', - $page, - 'replenish.php', - $filters, - $sortfield, - $sortorder, - '', - $num, - 0, - '' - ); - } else { + print_barre_liste('', $page, 'replenish.php', $filters, $sortfield, $sortorder, '', $num, 0, ''); + } + else + { $filters = '&sref=' . $sref . '&snom=' . $snom; $filters .= '&fourn_id=' . $fourn_id; $filters .= (isset($type)? '&type=' . $type : ''); $filters .= '&salert=' . $salert; $filters .= '&mode=' . $mode; - print_barre_liste( - '', - $page, - 'replenish.php', - $filters, - $sortfield, - $sortorder, - '', - $num, - 0, - '' - ); + print_barre_liste('', $page, 'replenish.php', $filters, $sortfield, $sortorder, '', $num, 0, ''); } } @@ -607,6 +588,13 @@ $db->free($resql); dol_fiche_end(); +$value=$langs->trans("CreateOrders"); +print '
'; + + +print ''; + + // TODO Replace this with jquery print '