From abb6b41f91bb2d309fd8e9697ff23266554329fa Mon Sep 17 00:00:00 2001 From: John BOTELLA Date: Wed, 7 Nov 2018 11:25:13 +0100 Subject: [PATCH 001/307] Fix screen size fall --- htdocs/comm/remx.php | 8 ++++---- htdocs/theme/eldy/style.css.php | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/htdocs/comm/remx.php b/htdocs/comm/remx.php index 3eec109e6b3..7e849279b95 100644 --- a/htdocs/comm/remx.php +++ b/htdocs/comm/remx.php @@ -407,7 +407,7 @@ if ($socid > 0) if($isCustomer) { if($isSupplier) { print '
'; - print '
'; + print '
'; print load_fiche_titre($langs->trans("CustomerDiscounts"), '', ''); } @@ -540,7 +540,7 @@ if ($socid > 0) if($isSupplier) { if($isCustomer) { print '
'; // class="fichehalfleft" - print '
'; + print '
'; print '
'; print load_fiche_titre($langs->trans("SupplierDiscounts"), '', ''); } @@ -691,7 +691,7 @@ if ($socid > 0) if($isCustomer) { if($isSupplier) { print '
'; - print '
'; + print '
'; print load_fiche_titre($langs->trans("CustomerDiscounts"), '', ''); } @@ -842,7 +842,7 @@ if ($socid > 0) if($isSupplier) { if($isCustomer) { print '
'; // class="fichehalfleft" - print '
'; + print '
'; print '
'; print load_fiche_titre($langs->trans("SupplierDiscounts"), '', ''); } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index e2b87857c95..63e23ac3fe2 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1357,6 +1357,23 @@ div.secondcolumn div.box { } } +/* Force values on one colum for small screen */ +@media only screen and (max-width: 1599px) +{ + div.fichehalfleft-lg { + float: none; + width: auto; + } + div.fichehalfright-lg { + float: none; + width: auto; + } + + .fichehalfright-lg .ficheaddleft{ + padding-left:0; + } +} + /* For table into table into card */ div.ficheaddleft tr.liste_titre:first-child td table.nobordernopadding td { padding: 0 0 0 0; From c422904b990cb329276a72e430c471a658c782aa Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Sat, 1 Dec 2018 16:51:40 +0100 Subject: [PATCH 002/307] fix #9964 --- htdocs/commande/list.php | 4 ++-- htdocs/core/class/extrafields.class.php | 5 ++++- .../core/tpl/extrafields_list_search_sql.tpl.php | 16 ++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 4841e9be410..bbdf59a295c 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -468,8 +468,8 @@ if ($resql) print ''; print ''; print ''; - - + + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_commercial.png', 0, $newcardbutton, '', $limit); $topicmail="SendOrderRef"; diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 1840f62ca5d..ee87426ddcb 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1927,7 +1927,10 @@ class ExtraFields // Get extra fields foreach ($extralabels as $key => $value) { - $key_type = $this->attributes[$object->table_element]['type'][$key]; + $key_type=$this->attribute_type[$key]; + if (! empty($object->table_element)) { + $key_type=$this->attributes[$extrafieldsobjectkey]['type'][$key]; + } if (in_array($key_type,array('date','datetime'))) { diff --git a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php index a8e43d6429f..8492160c185 100644 --- a/htdocs/core/tpl/extrafields_list_search_sql.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_sql.tpl.php @@ -17,13 +17,17 @@ if (! empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_ $crit=$val; $tmpkey=preg_replace('/search_options_/','',$key); $typ=$extrafields->attributes[$extrafieldsobjectkey]['type'][$tmpkey]; - - $mode_search=0; - if (in_array($typ, array('int','double','real'))) $mode_search=1; // Search on a numeric - if (in_array($typ, array('sellist','link')) && $crit != '0' && $crit != '-1') $mode_search=2; // Search on a foreign key int - if (in_array($typ, array('chkbxlst','checkbox'))) $mode_search=4; // Search on a multiselect field with sql type = text - if ($crit != '' && (! in_array($typ, array('select','sellist')) || $crit != '0') && (! in_array($typ, array('link')) || $crit != '-1')) + if ($crit != '' && in_array($typ, array('date', 'datetime', 'timestamp'))) { + $sql .= " AND ef.".$tmpkey." = '".$db->idate($crit)."'"; + } + elseif ($crit != '' && (! in_array($typ, array('select','sellist')) || $crit != '0') && (! in_array($typ, array('link')) || $crit != '-1')) + { + $mode_search=0; + if (in_array($typ, array('int','double','real'))) $mode_search=1; // Search on a numeric + if (in_array($typ, array('sellist','link')) && $crit != '0' && $crit != '-1') $mode_search=2; // Search on a foreign key int + if (in_array($typ, array('chkbxlst','checkbox'))) $mode_search=4; // Search on a multiselect field with sql type = text + $sql .= natural_search('ef.'.$tmpkey, $crit, $mode_search); } } From 642a86ba2556b55544684964aaabbb08ea145653 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 1 Dec 2018 16:55:45 +0100 Subject: [PATCH 003/307] Fix #8152 --- htdocs/core/actions_sendmails.inc.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index 67ac879ebf5..539306f3cb3 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -1,6 +1,7 @@ - * +* Copyright (C) 2013 Juanjo Menent +* * 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 @@ -192,7 +193,7 @@ if (($action == 'send' || $action == 'relance') && ! $_POST['addfile'] && ! $_PO // Recipient was provided from combo list if ($val == 'thirdparty') // Id of third party { - $tmparray[] = $thirdparty->name.' <'.$thirdparty->email.'>'; + $tmparray[] = str_replace(","," ",$thirdparty->name).' <'.$thirdparty->email.'>'; } elseif ($val) // Id du contact { From 42c97cf7d54b5953987c489b2b48dcaed470fdb6 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sun, 2 Dec 2018 17:59:11 +0100 Subject: [PATCH 004/307] Fix #6610 --- htdocs/user/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 5e83ee81fd0..79a85d4ca9c 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -1169,7 +1169,7 @@ else // Check if user has rights $object->getrights(); - if (empty($object->nb_rights) && $object->statut != 0) setEventMessages($langs->trans('UserHasNoPermissions'), null, 'warnings'); + if (empty($object->nb_rights) && $object->statut != 0 && empty($object->admin)) setEventMessages($langs->trans('UserHasNoPermissions'), null, 'warnings'); // Connexion ldap // pour recuperer passDoNotExpire et userChangePassNextLogon From 8fea6338e1b5ba078e64c005ec724228ac54c68c Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sun, 2 Dec 2018 18:51:49 +0100 Subject: [PATCH 005/307] Fix #6565 Fix pdf footer height for all documents --- htdocs/core/modules/bank/doc/pdf_ban.modules.php | 1 + htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php | 1 + htdocs/core/modules/cheque/doc/pdf_blochet.class.php | 1 + htdocs/core/modules/commande/doc/pdf_einstein.modules.php | 1 + htdocs/core/modules/contract/doc/pdf_strato.modules.php | 1 + htdocs/core/modules/expedition/doc/pdf_merou.modules.php | 1 + htdocs/core/modules/expedition/doc/pdf_rouget.modules.php | 1 + htdocs/core/modules/expensereport/doc/pdf_standard.modules.php | 1 + htdocs/core/modules/facture/doc/pdf_crabe.modules.php | 1 + htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php | 1 + htdocs/core/modules/livraison/doc/pdf_typhon.modules.php | 1 + htdocs/core/modules/product/doc/pdf_standard.modules.php | 1 + htdocs/core/modules/project/doc/pdf_baleine.modules.php | 1 + htdocs/core/modules/project/doc/pdf_beluga.modules.php | 1 + htdocs/core/modules/propale/doc/pdf_azur.modules.php | 1 + htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php | 1 + htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php | 1 + .../core/modules/supplier_payment/doc/pdf_standard.modules.php | 1 + htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php | 1 + 19 files changed, 19 insertions(+) diff --git a/htdocs/core/modules/bank/doc/pdf_ban.modules.php b/htdocs/core/modules/bank/doc/pdf_ban.modules.php index 699b186a9d2..9f8d675310a 100644 --- a/htdocs/core/modules/bank/doc/pdf_ban.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_ban.modules.php @@ -149,6 +149,7 @@ class pdf_ban extends ModeleBankAccountDoc $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php index 3dc615d9deb..46c7817c271 100644 --- a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php @@ -158,6 +158,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/cheque/doc/pdf_blochet.class.php b/htdocs/core/modules/cheque/doc/pdf_blochet.class.php index dc8681a85fd..58790f91ca3 100644 --- a/htdocs/core/modules/cheque/doc/pdf_blochet.class.php +++ b/htdocs/core/modules/cheque/doc/pdf_blochet.class.php @@ -129,6 +129,7 @@ class BordereauChequeBlochet extends ModeleChequeReceipts $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 9dc2b770222..8ab3407baa3 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -245,6 +245,7 @@ class pdf_einstein extends ModelePDFCommandes $heightforinfotot = 40; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; if (class_exists('TCPDF')) { diff --git a/htdocs/core/modules/contract/doc/pdf_strato.modules.php b/htdocs/core/modules/contract/doc/pdf_strato.modules.php index 77904beac0b..26417848762 100644 --- a/htdocs/core/modules/contract/doc/pdf_strato.modules.php +++ b/htdocs/core/modules/contract/doc/pdf_strato.modules.php @@ -175,6 +175,7 @@ class pdf_strato extends ModelePDFContract $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php index 72b9a7e6def..7cc382531fc 100644 --- a/htdocs/core/modules/expedition/doc/pdf_merou.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_merou.modules.php @@ -163,6 +163,7 @@ class pdf_merou extends ModelePdfExpedition $heightforinfotot = 0; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index 8f51e9b9e40..f37418688e7 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -225,6 +225,7 @@ class pdf_rouget extends ModelePdfExpedition $heightforinfotot = 8; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index e4ad7b7db36..c4828d32b74 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -205,6 +205,7 @@ class pdf_standard extends ModeleExpenseReport $heightforinfotot = 40; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 804eb8885db..f14ea701314 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -265,6 +265,7 @@ class pdf_crabe extends ModelePDFFactures $heightforinfotot = 50+(4*$nbpayments); // Height reserved to output the info and total part and payment part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; if (class_exists('TCPDF')) { diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index e88e9ad10c5..6f6cbbd6f91 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -166,6 +166,7 @@ class pdf_soleil extends ModelePDFFicheinter $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php index bbc74f3b6bb..1ef14478ebc 100644 --- a/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/doc/pdf_typhon.modules.php @@ -195,6 +195,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder $heightforinfotot = 30; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/product/doc/pdf_standard.modules.php b/htdocs/core/modules/product/doc/pdf_standard.modules.php index 2ceca5791a8..02ebe610dd7 100644 --- a/htdocs/core/modules/product/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/product/doc/pdf_standard.modules.php @@ -195,6 +195,7 @@ class pdf_standard extends ModelePDFProduct $heightforinfotot = 40; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; if (class_exists('TCPDF')) { diff --git a/htdocs/core/modules/project/doc/pdf_baleine.modules.php b/htdocs/core/modules/project/doc/pdf_baleine.modules.php index 334846ab69b..10a808e263a 100644 --- a/htdocs/core/modules/project/doc/pdf_baleine.modules.php +++ b/htdocs/core/modules/project/doc/pdf_baleine.modules.php @@ -141,6 +141,7 @@ class pdf_baleine extends ModelePDFProjects $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/project/doc/pdf_beluga.modules.php b/htdocs/core/modules/project/doc/pdf_beluga.modules.php index 15fd0e5f615..0409c0b9472 100644 --- a/htdocs/core/modules/project/doc/pdf_beluga.modules.php +++ b/htdocs/core/modules/project/doc/pdf_beluga.modules.php @@ -159,6 +159,7 @@ class pdf_beluga extends ModelePDFProjects $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 17b99fb8b36..f9816de1a03 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -328,6 +328,7 @@ class pdf_azur extends ModelePDFPropales $heightforsignature = empty($conf->global->PROPAL_DISABLE_SIGNATURE)?(pdfGetHeightForHtmlContent($pdf, $outputlangs->transnoentities("ProposalCustomerSignature"))+10):0; $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; //print $heightforinfotot + $heightforsignature + $heightforfreetext + $heightforfooter;exit; $top_shift = $this->_pagehead($pdf, $object, 1, $outputlangs); diff --git a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php index 9cfc1be320b..75a507d0546 100644 --- a/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/pdf/pdf_canelle.modules.php @@ -211,6 +211,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index 23a06264778..eabb045df66 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -223,6 +223,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php b/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php index 7d0772f272c..20dcad9c5c4 100644 --- a/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/supplier_payment/doc/pdf_standard.modules.php @@ -219,6 +219,7 @@ class pdf_standard extends ModelePDFSuppliersPayments $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) diff --git a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php index a6457dd7a2e..80152207ac0 100644 --- a/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/pdf_aurore.modules.php @@ -239,6 +239,7 @@ class pdf_aurore extends ModelePDFSupplierProposal $heightforinfotot = 50; // Height reserved to output the info and total part $heightforfreetext= (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT)?$conf->global->MAIN_PDF_FREETEXT_HEIGHT:5); // Height reserved to output the free text on last page $heightforfooter = $this->marge_basse + 8; // Height reserved to output the footer (value include bottom margin) + if ($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS >0) $heightforfooter+= 6; $pdf->SetAutoPageBreak(1,0); if (class_exists('TCPDF')) From f14223881785d883c5e00250993d69d5f9ef4f2a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 4 Dec 2018 21:25:59 +0100 Subject: [PATCH 006/307] Fix missing field canvas --- htdocs/core/modules/modSociete.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index c34705c887f..4a814954072 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -262,7 +262,7 @@ class modSociete extends DolibarrModules 's.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"AccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode", 's.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'d.nom'=>'State','c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax", 's.url'=>"Url",'s.email'=>"Email",'s.default_lang'=>"DefaultLang",'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.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'s.canvas'=>"Canvas", 't.libelle'=>"ThirdPartyType",'ce.code'=>"Staff","cfj.libelle"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel', 'st.code'=>'ProspectStatus','payterm.libelle'=>'PaymentConditions','paymode.libelle'=>'PaymentMode' ); @@ -289,7 +289,7 @@ class modSociete extends DolibarrModules 's.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.code_compta'=>"Text",'s.code_compta_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text", 's.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text", 's.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text", - 's.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text", + 's.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'s.canvas'=>"Text",'t.libelle'=>"Text", 'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code', 'st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text','payterm.libelle'=>'Text', 'paymode.libelle'=>'Text','s.entity'=>'Numeric' @@ -387,7 +387,7 @@ class modSociete extends DolibarrModules '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.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'s.canvas'=>"Canvas",'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" ); @@ -491,7 +491,7 @@ class modSociete extends DolibarrModules 'sr.cle_rib'=>"22",'sr.bic'=>"USHINGMMXXX",'sr.iban_prefix'=>"US00 0000 1111 22 3333 3333",'sr.domiciliation'=>"PARIS",'sr.proprio' => "Name of owner", 'sr.owner_address' => "15 paris street 75000 Paris", 'sr.default_rib' => '1 or 0' ); - // Import Company Salesman + // Import Company Sales representatives $r++; $this->import_code[$r]=$this->rights_class.'_'.$r; $this->import_label[$r]="ImportDataset_company_4"; // Translation key From 5ce26bae1b3c699a45e35a15a9497a3847443971 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 4 Dec 2018 22:01:35 +0100 Subject: [PATCH 007/307] Fix form of bank info for CH --- htdocs/compta/bank/class/account.class.php | 2 +- htdocs/core/lib/pdf.lib.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 6ba712f9ff2..364004ca3f4 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -1429,7 +1429,7 @@ class Account extends CommonObject { $country_code=$this->getCountryCode(); - if (in_array($country_code,array('CH','FR','ES','GA','IT','NC'))) return 1; // France, Spain, Gabon, ... + if (in_array($country_code,array('FR','ES','GA','IT','NC'))) return 1; // France, Spain, Gabon, ... - Not valid for CH if (in_array($country_code,array('AU','BE','CA','DE','DK','GR','GB','ID','IE','IR','KR','NL','NZ','UK','US'))) return 2; // Australia, England... return 0; } diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 73de27cafac..ffd19489d1b 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -727,7 +727,7 @@ function pdf_bank(&$pdf,$outputlangs,$curx,$cury,$account,$onlynumber=0,$default $cury+=3; } - if (empty($conf->global->PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN)) // Note that some countries still need bank number, BIC/IBAN not enought for them + if (empty($conf->global->PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN)) // Note that some countries still need bank number, BIC/IBAN not enougth for them { // Note: // bank = code_banque (FR), sort code (GB, IR. Example: 12-34-56) From e2727f6d91a1c110bf613a3cefdc102f25a648f5 Mon Sep 17 00:00:00 2001 From: fappels Date: Thu, 6 Dec 2018 21:43:10 +0100 Subject: [PATCH 008/307] Fix issue #10186 no display of stock per batch series. --- htdocs/expedition/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index cc54f7bed5b..d6b9c53b168 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -1376,7 +1376,7 @@ if ($action == 'create') $detail.= $langs->trans("Batch").': '.$dbatch->batch; $detail.= ' - '.$langs->trans("SellByDate").': '.dol_print_date($dbatch->sellby,"day"); $detail.= ' - '.$langs->trans("EatByDate").': '.dol_print_date($dbatch->eatby,"day"); - $detail.= ' - '.$langs->trans("Qty").': '.$dbatch->dluo_qty; + $detail.= ' - '.$langs->trans("Qty").': '.$dbatch->qty; $detail.= '
'; print $detail; From 550df138a652b612a1fbf238a0ea6da833162085 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 7 Dec 2018 12:19:50 +0100 Subject: [PATCH 009/307] Fix unexistant fields --- htdocs/core/modules/modSociete.class.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 4a814954072..34f4dca8510 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -477,14 +477,11 @@ class modSociete extends DolibarrModules $this->import_tables_array[$r]=array('sr'=>MAIN_DB_PREFIX.'societe_rib'); $this->import_fields_array[$r]=array('sr.fk_soc'=>"ThirdPartyName*",'sr.bank'=>"Bank", 'sr.code_banque'=>"BankCode",'sr.code_guichet'=>"DeskCode",'sr.number'=>"BankAccountNumber*", - 'sr.cle_rib'=>"BankAccountNumberKey",'sr.bic'=>"BIC",'sr.iban_prefix'=>"IBAN", 'sr.domiciliation'=>"BankAccountDomiciliation",'sr.proprio' => "BankAccountOwner", 'sr.owner_address' => "BankAccountOwnerAddress", 'sr.default_rib' => 'Default', - 'sr.fk_departement'=>"StateId",'sr.fk_pays'=>"CountryCode" + 'sr.cle_rib'=>"BankAccountNumberKey",'sr.bic'=>"BIC",'sr.iban_prefix'=>"IBAN", 'sr.domiciliation'=>"BankAccountDomiciliation",'sr.proprio' => "BankAccountOwner", 'sr.owner_address' => "BankAccountOwnerAddress", 'sr.default_rib' => 'Default' ); $this->import_convertvalue_array[$r]=array( - 'sr.fk_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty'), - 'sr.fk_departement'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/cstate.class.php','class'=>'Cstate','method'=>'fetch','dict'=>'DictionaryState'), - 'sr.fk_pays'=>array('rule'=>'fetchidfromcodeid','classfile'=>'/core/class/ccountry.class.php','class'=>'Ccountry','method'=>'fetch','dict'=>'DictionaryCountry'), + 'sr.fk_soc'=>array('rule'=>'fetchidfromref','classfile'=>'/societe/class/societe.class.php','class'=>'Societe','method'=>'fetch','element'=>'ThirdParty') ); $this->import_examplevalues_array[$r]=array('sr.fk_soc'=>"MyBigCompany",'sr.bank'=>"ING", 'sr.code_banque'=>"0000", 'sr.code_guichet'=>"1111",'sr.number'=>"3333333333", From 65d492efedc700689668fe8f3facab369add2e31 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Dec 2018 19:29:11 +0100 Subject: [PATCH 010/307] Minor fix --- htdocs/install/upgrade2.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 6ea7940d7a0..bbdc82b1b8b 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -4848,16 +4848,20 @@ function migrate_user_photospath() { while ($obj = $db->fetch_object($resql)) { + print '.'; + $fuser->fetch($obj->uid); //echo '
'.$fuser->id.' -> '.$fuser->entity; - $entity = (!empty($fuser->entity)) ? $fuser->entity : 1; + $entity = (empty($fuser->entity) ? 1 : $fuser->entity); if ($entity > 1) { $dir = DOL_DATA_ROOT . '/' . $entity . '/users'; } else { $dir = $conf->user->multidir_output[$entity]; // $conf->user->multidir_output[] for each entity is construct by the multicompany module } + if ($dir) + { $origin = $dir .'/'. get_exdir($fuser->id,2,0,0,$fuser,'user'); - $destin = $dir.'/'.$fuser->id; + $destin = $dir .'/'. $fuser->id; $error = 0; @@ -4895,6 +4899,7 @@ function migrate_user_photospath() } } } + } } } From 572366c6c22639cddc53f389e3b3e4e708eeddcd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Dec 2018 21:16:02 +0100 Subject: [PATCH 011/307] FIX status of user --- htdocs/projet/tasks/time.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index 4ac6f8a4621..bf293db9387 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -400,7 +400,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0) print ''; // Bill time - if (! empty($conf->global->PROJECT_BILL_TIME_SPENT)) + if (empty($conf->global->PROJECT_HIDE_TASKS) && ! empty($conf->global->PROJECT_BILL_TIME_SPENT)) { print ''.$langs->trans("BillTime").''; print yn($projectstatic->bill_time); @@ -661,7 +661,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0) $arrayfields['t.note']=array('label'=>$langs->trans("Note"), 'checked'=>1); $arrayfields['t.task_duration']=array('label'=>$langs->trans("Duration"), 'checked'=>1); $arrayfields['value'] =array('label'=>$langs->trans("Value"), 'checked'=>1, 'enabled'=>(empty($conf->salaries->enabled)?0:1)); - $arrayfields['valuebilled'] =array('label'=>$langs->trans("AmountInvoiced"), 'checked'=>1, 'enabled'=>(empty($conf->global->PROJECT_BILL_TIME_SPENT)?0:1)); + $arrayfields['valuebilled'] =array('label'=>$langs->trans("AmountInvoiced"), 'checked'=>1, 'enabled'=>((! empty($conf->global->PROJECT_HIDE_TASKS) || empty($conf->global->PROJECT_BILL_TIME_SPENT))?0:1)); // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -678,7 +678,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0) $sql = "SELECT t.rowid, t.fk_task, t.task_date, t.task_datehour, t.task_date_withhour, t.task_duration, t.fk_user, t.note, t.thm,"; $sql .= " pt.ref, pt.label,"; - $sql .= " u.lastname, u.firstname, u.login, u.photo,"; + $sql .= " u.lastname, u.firstname, u.login, u.photo, u.statut as user_status,"; $sql .= " il.fk_facture as invoice_id, il.total_ht"; $sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facturedet as il ON il.rowid = t.invoice_line_id"; @@ -1037,6 +1037,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0) $userstatic->lastname = $task_time->lastname; $userstatic->firstname = $task_time->firstname; $userstatic->photo = $task_time->photo; + $userstatic->statut = $task_time->user_status; print $userstatic->getNomUrl(-1); } print ''; From d3a6b160215add15daaa0a472391c780e5a6e881 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Dec 2018 21:25:04 +0100 Subject: [PATCH 012/307] FIX Show declared progress --- htdocs/projet/tasks/time.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index bf293db9387..48167edcc1d 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -515,7 +515,10 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0) // Planned workload print ''.$langs->trans("PlannedWorkload").''; - print convertSecondToTime($object->planned_workload,'allhourmin'); + if ($object->planned_workload) + { + print convertSecondToTime($object->planned_workload,'allhourmin'); + } print ''; print ''; @@ -528,7 +531,7 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0) // Progress declared print ''.$langs->trans("ProgressDeclared").''; - print $object->progress.' %'; + print $object->progress != '' ? $object->progress.' %' : ''; print ''; // Progress calculated @@ -960,7 +963,6 @@ if (($id > 0 || ! empty($ref)) || $projectidforalltimes > 0) $totalarray=array(); foreach ($tasks as $task_time) { - print ''; $date1=$db->jdate($task_time->task_date); From f7554572366807a440e9ec59a10fd9cf04f8fc85 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Dec 2018 21:40:51 +0100 Subject: [PATCH 013/307] Test imap available --- htdocs/admin/emailcollector_card.php | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index ff037f67aa1..2fb5013b4f9 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -380,11 +380,24 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $sourcedir = $object->source_directory; $targetdir = ($object->target_directory ? $object->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag' - $connectstringserver = $object->getConnectStringIMAP(); - $connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); - $connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); + $connection = null; + $connectstringserver = ''; + $connectstringsource = ''; + $connectstringtarget = ''; + + if (function_exists('imap_open')) + { + $connectstringserver = $object->getConnectStringIMAP(); + $connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); + $connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); - $connection = imap_open($connectstringsource, $object->user, $object->password); + $connection = imap_open($connectstringsource, $object->user, $object->password); + } + else + { + $morehtml .= 'IMAP functions not available on your PHP'; + } + if (! $connection) { $morehtml .= 'Failed to open IMAP connection '.$connectstringsource; @@ -395,8 +408,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $morehtml .= imap_num_msg($connection); } - imap_close($connection); - + if ($connection) + { + imap_close($connection); + } + dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref.'
'.$morehtml.'
', '', 0, '', '', 0, ''); print '
'; From 37fe8afea30226319876f92bad2d5244f682535d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Dec 2018 21:32:39 +0100 Subject: [PATCH 014/307] Code comment --- htdocs/install/mysql/migration/8.0.0-9.0.0.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index 20b0a874879..040739e8ce7 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -150,6 +150,9 @@ UPDATE llx_c_payment_term SET decalage = nbjour, nbjour = 0 where decalage IS NU UPDATE llx_holiday SET ref = rowid WHERE ref IS NULL; +-- DROP TABLE llx_emailcollector_emailcollectorfilter; +-- DROP TABLE llx_emailcollector_emailcollectoraction; +-- DROP TABLE llx_emailcollector_emailcollector; CREATE TABLE llx_emailcollector_emailcollector( -- BEGIN MODULEBUILDER FIELDS From 3538e9ab3b0d6dff057cd19573372d25afd5f25b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Dec 2018 19:05:24 +0100 Subject: [PATCH 015/307] Fix migration --- htdocs/install/upgrade2.php | 91 ++++++++++++++++++++----------------- 1 file changed, 49 insertions(+), 42 deletions(-) diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index bbdc82b1b8b..13d7d341961 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -2922,9 +2922,9 @@ function migrate_project_task_actors($db,$langs,$conf) * @param Conf $conf Object conf * @param string $table Table name * @param int $fk_source Id of element source - * @param type $sourcetype Type of element source + * @param string $sourcetype Type of element source * @param int $fk_target Id of element target - * @param type $targettype Type of element target + * @param string $targettype Type of element target * @return void */ function migrate_relationship_tables($db,$langs,$conf,$table,$fk_source,$sourcetype,$fk_target,$targettype) @@ -4833,7 +4833,7 @@ function migrate_reload_menu($db,$langs,$conf,$versionto) */ function migrate_user_photospath() { - global $conf, $db, $langs; + global $conf, $db, $langs, $user; print ''; @@ -4842,14 +4842,14 @@ function migrate_user_photospath() include_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; $fuser = new User($db); + if (! is_object($user)) $user = $fuser; // To avoid error during migration + $sql = "SELECT rowid as uid from ".MAIN_DB_PREFIX."user"; // Get list of all users $resql = $db->query($sql); if ($resql) { while ($obj = $db->fetch_object($resql)) { - print '.'; - $fuser->fetch($obj->uid); //echo '
'.$fuser->id.' -> '.$fuser->entity; $entity = (empty($fuser->entity) ? 1 : $fuser->entity); @@ -4860,45 +4860,52 @@ function migrate_user_photospath() } if ($dir) { - $origin = $dir .'/'. get_exdir($fuser->id,2,0,0,$fuser,'user'); - $destin = $dir .'/'. $fuser->id; + $origin = $dir .'/'. get_exdir($fuser->id,2,0,0,$fuser,'user'); + $destin = $dir .'/'. $fuser->id; - $error = 0; + $origin_osencoded=dol_osencode($origin); - $origin_osencoded=dol_osencode($origin); - $destin_osencoded=dol_osencode($destin); - dol_mkdir($destin); - //echo '
'.$origin.' -> '.$destin; - if (dol_is_dir($origin)) - { - $handle=opendir($origin_osencoded); - if (is_resource($handle)) - { - while (($file = readdir($handle)) !== false) - { - if ($file != '.' && $file != '..' && is_dir($origin_osencoded.'/'.$file)) - { - $thumbs = opendir($origin_osencoded.'/'.$file); - if (is_resource($thumbs)) - { - dol_mkdir($destin.'/'.$file); - while (($thumb = readdir($thumbs)) !== false) - { - dol_move($origin.'/'.$file.'/'.$thumb, $destin.'/'.$file.'/'.$thumb); - } - // dol_delete_dir($origin.'/'.$file); - } - } - else - { - if (dol_is_file($origin.'/'.$file) ) - { - dol_move($origin.'/'.$file, $destin.'/'.$file); - } - } - } - } - } + dol_mkdir($destin); + //echo '
'.$origin.' -> '.$destin; + if (dol_is_dir($origin)) + { + $handle=opendir($origin_osencoded); + if (is_resource($handle)) + { + while (($file = readdir($handle)) !== false) + { + if ($file == '.' || $file == '..') continue; + + if (dol_is_dir($origin.'/'.$file)) // it is a dir (like 'thumbs') + { + $thumbs = opendir($origin_osencoded.'/'.$file); + if (is_resource($thumbs)) + { + dol_mkdir($destin.'/'.$file); + while (($thumb = readdir($thumbs)) !== false) + { + if (! dol_is_file($destin.'/'.$file.'/'.$thumb)) + { + if ($thumb == '.' || $thumb == '..') continue; + + print '.'; + dol_move($origin.'/'.$file.'/'.$thumb, $destin.'/'.$file.'/'.$thumb, 0, 0, 0, 0); + } + } + // dol_delete_dir($origin.'/'.$file); + } + } + else // it is a file + { + if (! dol_is_file($destin.'/'.$file)) + { + print '.'; + dol_move($origin.'/'.$file, $destin.'/'.$file, 0, 0, 0, 1); + } + } + } + } + } } } } From d0a1c523ca9245384fe440d1661bdacbe7b91039 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Dec 2018 19:35:38 +0100 Subject: [PATCH 016/307] FIX several critical bugs in migration of directory of users --- htdocs/ecm/class/ecmfiles.class.php | 11 +++++++++-- htdocs/install/upgrade2.php | 11 ++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 42af7f92635..70e79a6a3e5 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -180,8 +180,15 @@ class EcmFiles extends CommonObject if (empty($this->date_m)) $this->date_m = dol_now(); // If ref not defined - $ref = dol_hash($this->filepath.'/'.$this->filename, 3); - if (! empty($this->ref)) $ref=$this->ref; + $ref = ''; + if (! empty($this->ref)) + { + $ref=$this->ref; + } + else { + include_once DOL_DOCUMENT_ROOT.'/lib/security.lib.php'; + $ref = dol_hash($this->filepath.'/'.$this->filename, 3); + } $maxposition=0; if (empty($this->position)) // Get max used diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 13d7d341961..9e5072ba211 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -4860,7 +4860,8 @@ function migrate_user_photospath() } if ($dir) { - $origin = $dir .'/'. get_exdir($fuser->id,2,0,0,$fuser,'user'); + //print "Process user id ".$fuser->id."
\n"; + $origin = $dir .'/'. get_exdir($fuser->id,2,0,1,$fuser,'user'); // Use old behaviour to get x/y path $destin = $dir .'/'. $fuser->id; $origin_osencoded=dol_osencode($origin); @@ -4888,8 +4889,10 @@ function migrate_user_photospath() { if ($thumb == '.' || $thumb == '..') continue; + //print $origin.'/'.$file.'/'.$thumb.' -> '.$destin.'/'.$file.'/'.$thumb.'
'."\n"; print '.'; - dol_move($origin.'/'.$file.'/'.$thumb, $destin.'/'.$file.'/'.$thumb, 0, 0, 0, 0); + dol_copy($origin.'/'.$file.'/'.$thumb, $destin.'/'.$file.'/'.$thumb, 0, 0); + //var_dump('aaa');exit; } } // dol_delete_dir($origin.'/'.$file); @@ -4899,8 +4902,10 @@ function migrate_user_photospath() { if (! dol_is_file($destin.'/'.$file)) { + //print $origin.'/'.$file.' -> '.$destin.'/'.$file.'
'."\n"; print '.'; - dol_move($origin.'/'.$file, $destin.'/'.$file, 0, 0, 0, 1); + dol_copy($origin.'/'.$file, $destin.'/'.$file, 0, 0); + //var_dump('eee');exit; } } } From a44dca7e718a849e4d2d68ac2fd96e370fc66bd6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Dec 2018 11:37:47 +0100 Subject: [PATCH 017/307] Removed deprecated table --- .../install/mysql/migration/8.0.0-9.0.0.sql | 1 + .../mysql/tables/llx_ticket_logs.key.sql | 17 - .../install/mysql/tables/llx_ticket_logs.sql | 25 -- htdocs/ticket/class/ticketlogs.class.php | 364 ------------------ 4 files changed, 1 insertion(+), 406 deletions(-) delete mode 100755 htdocs/install/mysql/tables/llx_ticket_logs.key.sql delete mode 100755 htdocs/install/mysql/tables/llx_ticket_logs.sql delete mode 100644 htdocs/ticket/class/ticketlogs.class.php diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index 040739e8ce7..98dc051e984 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -228,3 +228,4 @@ ALTER TABLE llx_emailcollector_emailcollectoraction ADD UNIQUE INDEX uk_emailcol ALTER TABLE llx_societe_rib ADD COLUMN comment varchar(255); ALTER TABLE llx_societe_rib ADD COLUMN ipaddress varchar(68); +DROP TABLE llx_ticket_logs; diff --git a/htdocs/install/mysql/tables/llx_ticket_logs.key.sql b/htdocs/install/mysql/tables/llx_ticket_logs.key.sql deleted file mode 100755 index 16bf0d9d977..00000000000 --- a/htdocs/install/mysql/tables/llx_ticket_logs.key.sql +++ /dev/null @@ -1,17 +0,0 @@ --- SQL definition for module ticket --- Copyright (C) 2013 Jean-François FERRY --- --- 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 . - -ALTER TABLE llx_ticket_logs ADD CONSTRAINT fk_ticket_logs_fk_track_id FOREIGN KEY (fk_track_id) REFERENCES llx_ticket (track_id); diff --git a/htdocs/install/mysql/tables/llx_ticket_logs.sql b/htdocs/install/mysql/tables/llx_ticket_logs.sql deleted file mode 100755 index 6efbb779f40..00000000000 --- a/htdocs/install/mysql/tables/llx_ticket_logs.sql +++ /dev/null @@ -1,25 +0,0 @@ --- SQL definition for module ticket --- Copyright (C) 2013 Jean-François FERRY --- --- 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 . - -CREATE TABLE llx_ticket_logs -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - entity integer DEFAULT 1, - fk_track_id varchar(128), - fk_user_create integer, - datec datetime, - message text -)ENGINE=innodb; diff --git a/htdocs/ticket/class/ticketlogs.class.php b/htdocs/ticket/class/ticketlogs.class.php deleted file mode 100644 index 66cecd6eb5e..00000000000 --- a/htdocs/ticket/class/ticketlogs.class.php +++ /dev/null @@ -1,364 +0,0 @@ - - * Copyright (C) 2018 Frédéric France - * - * 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 ticket/class/ticketlogs.class.php - * \ingroup ticket - * \brief This file CRUD class file (Create/Read/Update/Delete) for ticket logs - */ - -// Put here all includes required by your class file -require_once DOL_DOCUMENT_ROOT . "/core/class/commonobject.class.php"; -//require_once DOL_DOCUMENT_ROOT."/societe/class/societe.class.php"; -//require_once DOL_DOCUMENT_ROOT."/product/class/product.class.php"; - - -/** - * Class of log for ticket - */ -class Ticketlogs// extends CommonObject -{ - /** - * @var DoliDB Database handler. - */ - public $db; - - /** - * @var string Error code (or message) - */ - public $error; - - /** - * @var string[] Error codes (or messages) - */ - public $errors = array(); - - /** - * @var string ID to identify managed object - */ - public $element = 'ticketlogs'; - - /** - * @var string Name of table without prefix where object is stored - */ - public $table_element = 'ticketlogs'; //!< Name of table without prefix where object is stored - - /** - * @var int ID - */ - public $id; - - /** - * @var string trackid - */ - public $fk_track_id; - - /** - * @var int user create ID - */ - public $fk_user_create; - - public $datec = ''; - public $message; - - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - } - - /** - * Create object into database - * - * @param User $user User that creates - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, Id of created object if OK - */ - public function create($user, $notrigger = 0) - { - global $conf, $langs; - $error = 0; - - // Clean parameters - - if (isset($this->fk_track_id)) { - $this->fk_track_id = trim($this->fk_track_id); - } - - if (isset($this->fk_user_create)) { - $this->fk_user_create = (int) $this->fk_user_create; - } - - if (isset($this->message)) { - $this->message = trim($this->message); - } - - // Check parameters - // Put here code to add control on parameters values - - // Insert request - $sql = "INSERT INTO " . MAIN_DB_PREFIX . "ticket_logs("; - - $sql .= "fk_track_id,"; - $sql .= "fk_user_create,"; - $sql .= "datec,"; - $sql .= "message"; - - $sql .= ") VALUES ("; - - $sql .= " " . (!isset($this->fk_track_id) ? 'NULL' : "'" . $this->db->escape($this->fk_track_id) . "'") . ","; - $sql .= " " . (!isset($this->fk_user_create) ? 'NULL' : "'" . $this->db->escape($this->fk_user_create) . "'") . ","; - $sql .= " " . (!isset($this->datec) || dol_strlen($this->datec) == 0 ? 'NULL' : "'" . $this->db->idate($this->datec). "'") . ","; - $sql .= " " . (!isset($this->message) ? 'NULL' : "'" . $this->db->escape($this->message) . "'") . ""; - - $sql .= ")"; - - $this->db->begin(); - - dol_syslog(get_class($this) . "::create sql=" . $sql, 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 . "ticket_logs"); - - //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); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this) . "::create " . $errmsg, LOG_ERR); - $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return $this->id; - } - } - - /** - * Load object in memory from the database - * - * @param int $id Id object - * @return int <0 if KO, >0 if OK - */ - public function fetch($id) - { - global $langs; - $sql = "SELECT"; - $sql .= " t.rowid,"; - - $sql .= " t.fk_track_id,"; - $sql .= " t.fk_user_create,"; - $sql .= " t.datec,"; - $sql .= " t.message"; - - $sql .= " FROM " . MAIN_DB_PREFIX . "ticket_logs as t"; - $sql .= " WHERE t.rowid = " . $id; - - dol_syslog(get_class($this) . "::fetch sql=" . $sql, 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->fk_track_id = $obj->fk_track_id; - $this->fk_user_create = $obj->fk_user_create; - $this->datec = $this->db->jdate($obj->datec); - $this->message = $obj->message; - } - $this->db->free($resql); - - return 1; - } else { - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::fetch " . $this->error, LOG_ERR); - return -1; - } - } - - /** - * Update object into database - * - * @param User $user User that modifies - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function update($user = 0, $notrigger = 0) - { - global $conf, $langs; - $error = 0; - - // Clean parameters - - if (isset($this->fk_track_id)) { - $this->fk_track_id = trim($this->fk_track_id); - } - - if (isset($this->fk_user_create)) { - $this->fk_user_create = (int) $this->fk_user_create; - } - - if (isset($this->message)) { - $this->message = trim($this->message); - } - - // Check parameters - // Put here code to add a control on parameters values - - // Update request - $sql = "UPDATE " . MAIN_DB_PREFIX . "ticket_logs SET"; - - $sql .= " fk_track_id=" . (isset($this->fk_track_id) ? "'" . $this->db->escape($this->fk_track_id) . "'" : "null") . ","; - $sql .= " fk_user_create=" . ($this->fk_user_create > 0 ? $this->fk_user_create : "null") . ","; - $sql .= " datec=" . (dol_strlen($this->datec) != 0 ? "'" . $this->db->idate($this->datec) . "'" : 'null') . ","; - $sql .= " message=" . (isset($this->message) ? "'" . $this->db->escape($this->message) . "'" : "null") . ""; - - $sql .= " WHERE rowid=" . $this->id; - - $this->db->begin(); - - dol_syslog(get_class($this) . "::update sql=" . $sql, 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); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} - //} - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this) . "::update " . $errmsg, LOG_ERR); - $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return 1; - } - } - - /** - * Delete object in database - * - * @param User $user User that deletes - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function delete($user, $notrigger = 0) - { - 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); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - //} - //} - - if (!$error) { - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "ticket_logs"; - $sql .= " WHERE rowid=" . $this->id; - - dol_syslog(get_class($this) . "::delete sql=" . $sql); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = "Error " . $this->db->lasterror(); - } - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); - $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return 1; - } - } - - /** - * Initialise object with example values - * Id must be 0 if object instance is a specimen - * - * @return void - */ - public function initAsSpecimen() - { - global $user; - - $this->id = 0; - - $this->fk_track_id = ''; - $this->fk_user_create = $user->id; - $this->datec = ''; - $this->message = ''; - } -} From d2f0c87d8f1c410a656db9669fdcd317054aa58d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Dec 2018 11:41:08 +0100 Subject: [PATCH 018/307] FIX Removed not use table --- .../install/mysql/migration/7.0.0-8.0.0.sql | 1 + .../mysql/tables/llx_ticket_logs.key.sql | 17 ------------- .../install/mysql/tables/llx_ticket_logs.sql | 25 ------------------- 3 files changed, 1 insertion(+), 42 deletions(-) delete mode 100755 htdocs/install/mysql/tables/llx_ticket_logs.key.sql delete mode 100755 htdocs/install/mysql/tables/llx_ticket_logs.sql diff --git a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql index 1a7cfd58410..057d42f3d13 100644 --- a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql +++ b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql @@ -568,3 +568,4 @@ ALTER TABLE llx_advtargetemailing ADD COLUMN type_element varchar(180) NOT NULL; UPDATE llx_advtargetemailing SET fk_element = fk_mailing, type_element='mailing'; ALTER TABLE llx_advtargetemailing DROP COLUMN fk_mailing; +DROP TABLE llx_ticket_logs; diff --git a/htdocs/install/mysql/tables/llx_ticket_logs.key.sql b/htdocs/install/mysql/tables/llx_ticket_logs.key.sql deleted file mode 100755 index 16bf0d9d977..00000000000 --- a/htdocs/install/mysql/tables/llx_ticket_logs.key.sql +++ /dev/null @@ -1,17 +0,0 @@ --- SQL definition for module ticket --- Copyright (C) 2013 Jean-François FERRY --- --- 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 . - -ALTER TABLE llx_ticket_logs ADD CONSTRAINT fk_ticket_logs_fk_track_id FOREIGN KEY (fk_track_id) REFERENCES llx_ticket (track_id); diff --git a/htdocs/install/mysql/tables/llx_ticket_logs.sql b/htdocs/install/mysql/tables/llx_ticket_logs.sql deleted file mode 100755 index 6efbb779f40..00000000000 --- a/htdocs/install/mysql/tables/llx_ticket_logs.sql +++ /dev/null @@ -1,25 +0,0 @@ --- SQL definition for module ticket --- Copyright (C) 2013 Jean-François FERRY --- --- 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 . - -CREATE TABLE llx_ticket_logs -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - entity integer DEFAULT 1, - fk_track_id varchar(128), - fk_user_create integer, - datec datetime, - message text -)ENGINE=innodb; From eaa7fe5d143e02da4b46698a37cb5845388643d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Dec 2018 11:41:55 +0100 Subject: [PATCH 019/307] Removed deprecated code --- htdocs/ticket/class/ticketlogs.class.php | 332 ----------------------- 1 file changed, 332 deletions(-) delete mode 100644 htdocs/ticket/class/ticketlogs.class.php diff --git a/htdocs/ticket/class/ticketlogs.class.php b/htdocs/ticket/class/ticketlogs.class.php deleted file mode 100644 index ffa6a193415..00000000000 --- a/htdocs/ticket/class/ticketlogs.class.php +++ /dev/null @@ -1,332 +0,0 @@ - - * - * 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 ticket/class/ticketlogs.class.php - * \ingroup ticket - * \brief This file CRUD class file (Create/Read/Update/Delete) for ticket logs - */ - -// Put here all includes required by your class file -require_once DOL_DOCUMENT_ROOT . "/core/class/commonobject.class.php"; -//require_once(DOL_DOCUMENT_ROOT."/societe/class/societe.class.php"); -//require_once(DOL_DOCUMENT_ROOT."/product/class/product.class.php"); - - -/** - * Class of log for ticket - */ -class Ticketlogs// extends CommonObject -{ - public $db; //!< To store db handler - public $error; //!< To return error code (or message) - public $errors = array(); //!< To return several error codes (or messages) - public $element = 'ticketlogs'; //!< Id that identify managed objects - public $table_element = 'ticketlogs'; //!< Name of table without prefix where object is stored - - public $id; - - public $fk_track_id; - public $fk_user_create; - public $datec = ''; - public $message; - - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - return 1; - } - - /** - * Create object into database - * - * @param User $user User that creates - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, Id of created object if OK - */ - public function create($user, $notrigger = 0) - { - global $conf, $langs; - $error = 0; - - // Clean parameters - - if (isset($this->fk_track_id)) { - $this->fk_track_id = trim($this->fk_track_id); - } - - if (isset($this->fk_user_create)) { - $this->fk_user_create = trim($this->fk_user_create); - } - - if (isset($this->message)) { - $this->message = trim($this->message); - } - - // Check parameters - // Put here code to add control on parameters values - - // Insert request - $sql = "INSERT INTO " . MAIN_DB_PREFIX . "ticket_logs("; - - $sql .= "fk_track_id,"; - $sql .= "fk_user_create,"; - $sql .= "datec,"; - $sql .= "message"; - - $sql .= ") VALUES ("; - - $sql .= " " . (!isset($this->fk_track_id) ? 'NULL' : "'" . $this->db->escape($this->fk_track_id) . "'") . ","; - $sql .= " " . (!isset($this->fk_user_create) ? 'NULL' : "'" . $this->db->escape($this->fk_user_create) . "'") . ","; - $sql .= " " . (!isset($this->datec) || dol_strlen($this->datec) == 0 ? 'NULL' : "'" . $this->db->idate($this->datec). "'") . ","; - $sql .= " " . (!isset($this->message) ? 'NULL' : "'" . $this->db->escape($this->message) . "'") . ""; - - $sql .= ")"; - - $this->db->begin(); - - dol_syslog(get_class($this) . "::create sql=" . $sql, 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 . "ticket_logs"); - - 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); - //$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this) . "::create " . $errmsg, LOG_ERR); - $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return $this->id; - } - } - - /** - * Load object in memory from the database - * - * @param int $id Id object - * @return int <0 if KO, >0 if OK - */ - public function fetch($id) - { - global $langs; - $sql = "SELECT"; - $sql .= " t.rowid,"; - - $sql .= " t.fk_track_id,"; - $sql .= " t.fk_user_create,"; - $sql .= " t.datec,"; - $sql .= " t.message"; - - $sql .= " FROM " . MAIN_DB_PREFIX . "ticket_logs as t"; - $sql .= " WHERE t.rowid = " . $id; - - dol_syslog(get_class($this) . "::fetch sql=" . $sql, 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->fk_track_id = $obj->fk_track_id; - $this->fk_user_create = $obj->fk_user_create; - $this->datec = $this->db->jdate($obj->datec); - $this->message = $obj->message; - } - $this->db->free($resql); - - return 1; - } else { - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::fetch " . $this->error, LOG_ERR); - return -1; - } - } - - /** - * Update object into database - * - * @param User $user User that modifies - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function update($user = 0, $notrigger = 0) - { - global $conf, $langs; - $error = 0; - - // Clean parameters - - if (isset($this->fk_track_id)) { - $this->fk_track_id = trim($this->fk_track_id); - } - - if (isset($this->fk_user_create)) { - $this->fk_user_create = trim($this->fk_user_create); - } - - if (isset($this->message)) { - $this->message = trim($this->message); - } - - // Check parameters - // Put here code to add a control on parameters values - - // Update request - $sql = "UPDATE " . MAIN_DB_PREFIX . "ticket_logs SET"; - - $sql .= " fk_track_id=" . (isset($this->fk_track_id) ? "'" . $this->db->escape($this->fk_track_id) . "'" : "null") . ","; - $sql .= " fk_user_create=" . ($this->fk_user_create > 0 ? $this->fk_user_create : "null") . ","; - $sql .= " datec=" . (dol_strlen($this->datec) != 0 ? "'" . $this->db->idate($this->datec) . "'" : 'null') . ","; - $sql .= " message=" . (isset($this->message) ? "'" . $this->db->escape($this->message) . "'" : "null") . ""; - - $sql .= " WHERE rowid=" . $this->id; - - $this->db->begin(); - - dol_syslog(get_class($this) . "::update sql=" . $sql, 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); - //$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this) . "::update " . $errmsg, LOG_ERR); - $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return 1; - } - } - - /** - * Delete object in database - * - * @param User $user User that deletes - * @param int $notrigger 0=launch triggers after, 1=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function delete($user, $notrigger = 0) - { - 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); - //$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf); - //if ($result < 0) { $error++; $this->errors=$interface->errors; } - //// End call triggers - } - } - - if (!$error) { - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "ticket_logs"; - $sql .= " WHERE rowid=" . $this->id; - - dol_syslog(get_class($this) . "::delete sql=" . $sql); - $resql = $this->db->query($sql); - if (!$resql) { - $error++; - $this->errors[] = "Error " . $this->db->lasterror(); - } - } - - // Commit or rollback - if ($error) { - foreach ($this->errors as $errmsg) { - dol_syslog(get_class($this) . "::delete " . $errmsg, LOG_ERR); - $this->error .= ($this->error ? ', ' . $errmsg : $errmsg); - } - $this->db->rollback(); - return -1 * $error; - } else { - $this->db->commit(); - return 1; - } - } - - /** - * Initialise object with example values - * Id must be 0 if object instance is a specimen - * - * @return void - */ - public function initAsSpecimen() - { - $this->id = 0; - - $this->fk_track_id = ''; - $this->fk_user_create = ''; - $this->datec = ''; - $this->message = ''; - } -} From 9ed34e2b3541a3885f0c2de3879556199beeef9a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Dec 2018 11:51:01 +0100 Subject: [PATCH 020/307] FIX Can relaunch install on v8 --- htdocs/install/mysql/migration/7.0.0-8.0.0.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql index 057d42f3d13..3df1fb6266c 100644 --- a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql +++ b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql @@ -218,7 +218,9 @@ UPDATE llx_societe_rib set type = 'ban' where type = '' OR type IS NULL; -- VMYSQL4.3 ALTER TABLE llx_societe_rib MODIFY COLUMN type varchar(32) NOT NULL; -- VPGSQL8.2 ALTER TABLE llx_societe_rib ALTER COLUMN type SET NOT NULL; - + +ALTER TABLE llx_ticket_msg DROP FOREIGN KEY fk_ticket_msg_fk_track_id; + -- Module ticket CREATE TABLE llx_ticket ( From 930312b425a74f5c936181ff71b7ec4c2f6d0739 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Dec 2018 11:51:46 +0100 Subject: [PATCH 021/307] FIX Migration do not create not used table --- htdocs/install/mysql/migration/7.0.0-8.0.0.sql | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql index 3df1fb6266c..cee3a17e061 100644 --- a/htdocs/install/mysql/migration/7.0.0-8.0.0.sql +++ b/htdocs/install/mysql/migration/7.0.0-8.0.0.sql @@ -267,17 +267,6 @@ CREATE TABLE llx_ticket_msg ALTER TABLE llx_ticket_msg ADD CONSTRAINT fk_ticket_msg_fk_track_id FOREIGN KEY (fk_track_id) REFERENCES llx_ticket (track_id); -CREATE TABLE llx_ticket_logs -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - entity integer DEFAULT 1, - fk_track_id varchar(128), - fk_user_create integer, - datec datetime, - message text -)ENGINE=innodb; - -ALTER TABLE llx_ticket_logs ADD CONSTRAINT fk_ticket_logs_fk_track_id FOREIGN KEY (fk_track_id) REFERENCES llx_ticket (track_id); CREATE TABLE llx_ticket_extrafields ( From 25f66bd024f49ccce675f79d009fe659faca5818 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Dec 2018 14:44:52 +0100 Subject: [PATCH 022/307] Code comment --- .../core/triggers/interface_50_modAgenda_ActionsAuto.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index 09725355f43..bd96128a3d7 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -757,7 +757,7 @@ class InterfaceActionsAuto extends DolibarrTriggers $object->sendtoid=0; } // TODO Merge all previous cases into this generic one - else + else // $action = TICKET_CREATE, TICKET_MODIFY, TICKET_DELETE, ... { // Note: We are here only if $conf->global->MAIN_AGENDA_ACTIONAUTO_action is on (tested at begining of this function) // Load translation files required by the page From be7e424862bd183db49e216ffd79c2627bfbf256 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 9 Dec 2018 00:16:59 +0100 Subject: [PATCH 023/307] FIX thirdparty not set on some events --- .../core/triggers/interface_50_modAgenda_ActionsAuto.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index bd96128a3d7..43c3f7a15e4 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -799,7 +799,8 @@ class InterfaceActionsAuto extends DolibarrTriggers if ($object->sendtoid > 0) $contactforaction->fetch($object->sendtoid); } // Set societeforaction. - if ($object->socid > 0) $societeforaction->fetch($object->socid); + if ($object->socid > 0) $societeforaction->fetch($object->socid); + elseif ($object->fk_soc > 0) $societeforaction->fetch($object->fk_soc); $projectid = isset($object->fk_project)?$object->fk_project:0; if ($object->element == 'project') $projectid = $object->id; From 9c68e29773779e7d799114789f43ac147cf7b63a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 9 Dec 2018 00:24:30 +0100 Subject: [PATCH 024/307] Typo --- ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d609b7a347a..ad6a71f4531 100644 --- a/ChangeLog +++ b/ChangeLog @@ -37,7 +37,7 @@ NEW: add option PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT NEW: Add option to display thirdparty adress in combolist NEW: Add option to swap sender/recipient address on PDF NEW: Add option to display thirdparty adress in combolist -NEW: Add project on pament of salaries +NEW: Add project on payment of salaries NEW: Add SHIPPING_PDF_HIDE_WEIGHT_AND_VOLUME and NEW: Add somes hooks in bank planned entries NEW: Add supplier ref in item reception page From 541c978a68dfaa7b6bd8e0f87f34e270e7671b88 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 9 Dec 2018 00:39:21 +0100 Subject: [PATCH 025/307] Update doc --- ChangeLog | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad6a71f4531..ef4ee57b6f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -36,10 +36,8 @@ NEW: Add option PDF_DISABLE_MYCOMPANY_LOGO to disable logo on PDF NEW: add option PROPOSAL_AUTO_ADD_AUTHOR_AS_CONTACT NEW: Add option to display thirdparty adress in combolist NEW: Add option to swap sender/recipient address on PDF -NEW: Add option to display thirdparty adress in combolist NEW: Add project on payment of salaries NEW: Add SHIPPING_PDF_HIDE_WEIGHT_AND_VOLUME and -NEW: Add somes hooks in bank planned entries NEW: Add supplier ref in item reception page NEW: Advanced permission to ignore price min NEW: Allow to enter a timespent with a numeric value @@ -85,6 +83,7 @@ NEW: Withdraw request massaction can include already partially paid invoices For developers: NEW: Add lib for multiselect with checkboxes NEW: Add function isValidMXRecord +NEW: Add somes hooks in bank planned entries NEW: Add hook changeRoundingMode in update_price NEW: Add hook formconfirm to contractcard NEW: Add hook for virtual stock From 03aef5005fc8f73f2ae559ed06a7950466c1eaaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 9 Dec 2018 11:22:19 +0100 Subject: [PATCH 026/307] add badge for 9.0 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c38d0ca7dd1..fd7491b0cc6 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ ![Downloads per day](https://img.shields.io/sourceforge/dm/dolibarr.svg) [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) -|6|7|8|develop| +|6|7|8|9|develop| |----------|----------|----------|----------| -|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/6.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/7.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/8.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/develop.svg)| +|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/6.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/7.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/8.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/9.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/develop.svg)| Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…). From 3218f8d40426060286101a8df3515002686c8acf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Sun, 9 Dec 2018 11:23:51 +0100 Subject: [PATCH 027/307] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd7491b0cc6..bcff409035f 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com) |6|7|8|9|develop| -|----------|----------|----------|----------| +|----------|----------|----------|----------|----------| |![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/6.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/7.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/8.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/9.0.svg)|![Build status](https://img.shields.io/travis/Dolibarr/dolibarr/develop.svg)| Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…). From ac48996bd37ce35ade4d48e3308b1e5df96f7f8c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 9 Dec 2018 23:41:36 +0100 Subject: [PATCH 028/307] FIX Look and feel v8 --- htdocs/adherents/list.php | 47 +- htdocs/adherents/subscription/list.php | 616 +++++++++++++++++-------- 2 files changed, 458 insertions(+), 205 deletions(-) diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 39d0069ac7c..8eb7109d9ed 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -79,8 +79,9 @@ $pagenext = $page + 1; if (! $sortorder) { $sortorder=($filter=='outofdate'?"DESC":"ASC"); } if (! $sortfield) { $sortfield=($filter=='outofdate'?"d.datefin":"d.lastname"); } -// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $object = new Adherent($db); + +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('memberlist')); $extrafields = new ExtraFields($db); @@ -348,8 +349,8 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available $arrayofmassactions = array( -// 'presend'=>$langs->trans("SendByMail"), -// 'builddoc'=>$langs->trans("PDFMerge"), + //'presend'=>$langs->trans("SendByMail"), + //'builddoc'=>$langs->trans("PDFMerge"), ); if ($user->rights->adherent->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete"); if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); @@ -603,6 +604,7 @@ print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="c print "\n"; $i = 0; +$totalarray=array(); while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); @@ -631,6 +633,7 @@ while ($i < min($num, $limit)) if (! empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) { print ''.$obj->rowid.''; + if (! $i) $totalarray['nbfield']++; } // Ref @@ -639,6 +642,7 @@ while ($i < min($num, $limit)) print ""; print $memberstatic->getNomUrl(-1, 0, 'card', 'ref'); print "\n"; + if (! $i) $totalarray['nbfield']++; } // Civility if (! empty($arrayfields['d.civility']['checked'])) @@ -646,6 +650,7 @@ while ($i < min($num, $limit)) print ""; print $obj->civility; print "\n"; + if (! $i) $totalarray['nbfield']++; } // Firstname if (! empty($arrayfields['d.firstname']['checked'])) @@ -653,6 +658,7 @@ while ($i < min($num, $limit)) print ""; print $obj->firstname; print "\n"; + if (! $i) $totalarray['nbfield']++; } // Lastname if (! empty($arrayfields['d.lastname']['checked'])) @@ -660,6 +666,7 @@ while ($i < min($num, $limit)) print ""; print $obj->lastname; print "\n"; + if (! $i) $totalarray['nbfield']++; } // Company if (! empty($arrayfields['d.company']['checked'])) @@ -672,11 +679,13 @@ while ($i < min($num, $limit)) if (! empty($arrayfields['d.login']['checked'])) { print "".$obj->login."\n"; + if (! $i) $totalarray['nbfield']++; } // Moral/Physique if (! empty($arrayfields['d.morphy']['checked'])) { print "".$memberstatic->getmorphylib($obj->morphy)."\n"; + if (! $i) $totalarray['nbfield']++; } // Type label if (! empty($arrayfields['t.libelle']['checked'])) @@ -686,6 +695,7 @@ while ($i < min($num, $limit)) print ''; print $membertypestatic->getNomUrl(1,32); print ''; + if (! $i) $totalarray['nbfield']++; } // Address if (! empty($arrayfields['d.address']['checked'])) @@ -693,6 +703,7 @@ while ($i < min($num, $limit)) print ''; print $obj->address; print ''; + if (! $i) $totalarray['nbfield']++; } // Zip if (! empty($arrayfields['d.zip']['checked'])) @@ -828,6 +839,36 @@ while ($i < min($num, $limit)) $i++; } +// Show total line +if (isset($totalarray['pos'])) +{ + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if (! empty($totalarray['pos'][$i])) print ''.price($totalarray['val'][$totalarray['pos'][$i]]).''; + else + { + if ($i == 1) + { + if ($num < $limit) print ''.$langs->trans("Total").''; + else print ''.$langs->trans("Totalforthispage").''; + } + else print ''; + } + } + print ''; +} + +// If no record found +if ($num == 0) +{ + $colspan=1; + foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; } + print ''.$langs->trans("NoRecordFound").''; +} + $db->free($resql); $parameters=array('sql' => $sql); diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index 4ef43e8f316..9eed2238f80 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -28,12 +28,18 @@ require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; -$langs->load("members"); +$langs->load(array("members","companies")); -$filter=$_GET["filter"]; -$statut=isset($_GET["statut"])?$_GET["statut"]:1; +$action=GETPOST('action','aZ09'); +$massaction=GETPOST('massaction','alpha'); +$confirm=GETPOST('confirm','alpha'); +$toselect = GETPOST('toselect', 'array'); + +$filter=GETPOST("filter","alpha"); +$statut=(GETPOSTISSET("statut")?GETPOST("statut","alpha"):1); $search_ref=GETPOST('search_ref','alpha'); $search_lastname=GETPOST('search_lastname','alpha'); +$search_firstname=GETPOST('search_firstname','alpha'); $search_login=GETPOST('search_login','alpha'); $search_note=GETPOST('search_note','alpha'); $search_account=GETPOST('search_account','int'); @@ -67,6 +73,20 @@ $search_array_options=$extrafields->getOptionalsFromPost($object->table_element, $fieldstosearchall = array( ); $arrayfields=array( + 'd.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'd.lastname'=>array('label'=>$langs->trans("Lastname"), 'checked'=>1), + 'd.firstname'=>array('label'=>$langs->trans("Firstname"), 'checked'=>1), + 'd.login'=>array('label'=>$langs->trans("Login"), 'checked'=>1), + 't.libelle'=>array('label'=>$langs->trans("Type"), 'checked'=>1), + 'd.bank'=>array('label'=>$langs->trans("BankAccount"), 'checked'=>1, 'enabled'=>(! empty($conf->banque->enabled))), + /*'d.note_public'=>array('label'=>$langs->trans("NotePublic"), 'checked'=>0), + 'd.note_private'=>array('label'=>$langs->trans("NotePrivate"), 'checked'=>0),*/ + 'd.datedebut'=>array('label'=>$langs->trans("DateSubscription"), 'checked'=>1, 'position'=>100), + 'd.datefin'=>array('label'=>$langs->trans("EndSubscription"), 'checked'=>1, 'position'=>101), + 'd.amount'=>array('label'=>$langs->trans("Amount"), 'checked'=>1, 'position'=>102), + 'd.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), + 'd.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), +// 'd.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000) ); // Security check @@ -74,7 +94,7 @@ $result=restrictedArea($user,'adherent','','','cotisation'); /* - * Actions + * Actions */ if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; } @@ -111,15 +131,16 @@ if (empty($reshook)) */ $form=new Form($db); +$subscription=new Subscription($db); +$adherent=new Adherent($db); +$accountstatic=new Account($db); -llxHeader('',$langs->trans("ListOfSubscriptions"),'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros'); - +$now=dol_now(); // List of subscriptions $sql = "SELECT d.rowid, d.login, d.firstname, d.lastname, d.societe, d.photo,"; $sql.= " c.rowid as crowid, c.subscription,"; -$sql.= " c.dateadh,"; -$sql.= " c.datef,"; +$sql.= " c.dateadh, c.datef, c.datec as date_creation, c.tms as date_update,"; $sql.= " c.fk_bank as bank, c.note,"; $sql.= " b.fk_account"; $sql.= " FROM ".MAIN_DB_PREFIX."adherent as d, ".MAIN_DB_PREFIX."subscription as c"; @@ -136,253 +157,444 @@ if ($search_ref) if (is_numeric($search_ref)) $sql.= " AND (c.rowid = ".$db->escape($search_ref).")"; else $sql.=" AND 1 = 2"; // Always wrong } -if ($search_lastname) $sql.= natural_search(array('d.firstname','d.lastname','d.societe'), $search_lastname); +if ($search_lastname) $sql.= natural_search(array('d.lastname','d.societe'), $search_lastname); +if ($search_firstname) $sql.= natural_search(array('d.firstname'), $search_firstname); if ($search_login) $sql.= natural_search('c.subscription', $search_login); if ($search_note) $sql.= natural_search('c.note', $search_note); -if ($search_account > 0) $sql.= " AND b.fk_account = ".$search_account; +if ($search_account > 0) $sql.= " AND b.fk_account = ".urldecode($search_account); if ($search_amount) $sql.= natural_search('c.subscription', $search_amount, 1); + +// Add where from extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; + +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + $sql.= $db->order($sortfield,$sortorder); +// Count total nb of records with no order and no limits $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $result = $db->query($sql); - $nbtotalofrecords = $db->num_rows($result); + $resql = $db->query($sql); + if ($resql) $nbtotalofrecords = $db->num_rows($resql); + else dol_print_error($db); if (($page * $limit) > $nbtotalofrecords) // if total resultset is smaller then paging size (filtering), goto and load page 0 { $page = 0; $offset = 0; } } - +// Add limit $sql.= $db->plimit($limit+1, $offset); $result = $db->query($sql); -if ($result) +if (! $result) { - $num = $db->num_rows($result); + dol_print_error($db); + exit; +} - $arrayofselected=is_array($toselect)?$toselect:array(); +$num = $db->num_rows($result); - $i = 0; +$arrayofselected=is_array($toselect)?$toselect:array(); - $title=$langs->trans("ListOfSubscriptions"); - if (! empty($date_select)) $title.=' ('.$langs->trans("Year").' '.$date_select.')'; +if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $sall) +{ + $obj = $db->fetch_object($resql); + $id = $obj->rowid; + header("Location: ".DOL_URL_ROOT.'/adherents/subscription/card.php?id='.$id); + exit; +} - $param=''; - if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; - if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; - if ($statut != '') $param.="&statut=".$statut; - if ($date_select) $param.="&date_select=".$date_select; - if ($search_lastname) $param.="&search_lastname=".$search_lastname; - if ($search_login) $param.="&search_login=".$search_login; - if ($search_acount) $param.="&search_account=".$search_account; - if ($search_amount) $param.="&search_amount=".$search_amount; - if ($optioncss != '') $param.='&optioncss='.$optioncss; +llxHeader('',$langs->trans("ListOfSubscriptions"),'EN:Module_Foundations|FR:Module_Adhérents|ES:Módulo_Miembros'); - // List of mass actions available - $arrayofmassactions = array( - //'presend'=>$langs->trans("SendByMail"), - //'builddoc'=>$langs->trans("PDFMerge"), - ); - if ($user->rights->adherent->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete"); - if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); - $massactionbutton=$form->selectMassAction('', $arrayofmassactions); +$i = 0; - $newcardbutton=''; - if ($user->rights->adherent->cotisation->creer) - { - $newcardbutton=''.$langs->trans('NewSubscription').''; - $newcardbutton.= ''; - $newcardbutton.= ''; - } +$title=$langs->trans("ListOfSubscriptions"); +if (! empty($date_select)) $title.=' ('.$langs->trans("Year").' '.$date_select.')'; - print '
'; - if ($optioncss != '') print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; - print ''; +$param=''; +if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); +if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); +if ($statut != '') $param.="&statut=".urlencode($statut); +if ($date_select) $param.="&date_select=".urlencode($date_select); +if ($search_lastname) $param.="&search_lastname=".urlencode($search_lastname); +if ($search_login) $param.="&search_login=".urlencode($search_login); +if ($search_acount) $param.="&search_account=".urlencode($search_account); +if ($search_amount) $param.="&search_amount=".urlencode($search_amount); +if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); +// Add $param from extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; - print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, $newcardbutton, '', $limit); +// List of mass actions available +$arrayofmassactions = array( + //'presend'=>$langs->trans("SendByMail"), + //'builddoc'=>$langs->trans("PDFMerge"), +); +if ($user->rights->adherent->supprimer) $arrayofmassactions['predelete']=$langs->trans("Delete"); +if (in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); +$massactionbutton=$form->selectMassAction('', $arrayofmassactions); - $topicmail="Information"; - $modelmail="subscription"; - $objecttmp=new Subscription($db); - $trackid='sub'.$object->id; - include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; +$newcardbutton=''; +if ($user->rights->adherent->cotisation->creer) +{ + $newcardbutton=''.$langs->trans('NewSubscription').''; + $newcardbutton.= ''; + $newcardbutton.= ''; +} - if ($sall) - { - print $langs->trans("Filter")." (".$langs->trans("Ref").", ".$langs->trans("Lastname").", ".$langs->trans("Firstname").", ".$langs->trans("EMail").", ".$langs->trans("Address")." ".$langs->trans("or")." ".$langs->trans("Town")."): ".$sall; - } +print ''; +if ($optioncss != '') print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; - $moreforfilter = ''; +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, $newcardbutton, '', $limit); - $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; - $selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields - if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1); +$topicmail="Information"; +$modelmail="subscription"; +$objecttmp=new Subscription($db); +$trackid='sub'.$object->id; +include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; - print '
'; - print ''."\n"; +if ($sall) +{ + foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); + print '
'.$langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall).'
'; +} - // Line for filters fields - print ''; +$moreforfilter = ''; +$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; +$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +if ($massactionbutton) $selectedfields.=$form->showCheckAddButtons('checkforselect', 1); + +print '
'; +print '
'."\n"; + + +// Line for filters fields +print ''; + +// Line numbering +if (! empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) +{ + print ''; +} + +// Ref +if (! empty($arrayfields['d.ref']['checked'])) +{ print ''; +} +if (! empty($arrayfields['d.lastname']['checked'])) +{ print ''; + print ''; +} +if (! empty($arrayfields['d.firstname']['checked'])) +{ + print ''; +} + +if (! empty($arrayfields['d.login']['checked'])) +{ print ''; +} - print ''; +if (! empty($arrayfields['t.libelle']['checked'])) +{ + print ''; +} - if (! empty($conf->banque->enabled)) - { - print ''; - } +if (! empty($arrayfields['d.bank']['checked'])) +{ + print ''; +} +if (! empty($arrayfields['d.date_debut']['checked'])) +{ print ''; +} +if (! empty($arrayfields['d.date_fin']['checked'])) +{ print ''; +} +if (! empty($arrayfields['d.amount']['checked'])) +{ print ''; - - // Action column - print ''; - - print "\n"; - - - print ''; - print_liste_field_titre("Ref",$_SERVER["PHP_SELF"],"c.rowid",$param,"","",$sortfield,$sortorder); - print_liste_field_titre("Name",$_SERVER["PHP_SELF"],"d.lastname",$param,"","",$sortfield,$sortorder); - print_liste_field_titre("Login",$_SERVER["PHP_SELF"],"d.login",$param,"","",$sortfield,$sortorder); - print_liste_field_titre("Label",$_SERVER["PHP_SELF"],"c.note",$param,"",'align="left"',$sortfield,$sortorder); - if (! empty($conf->banque->enabled)) - { - print_liste_field_titre("Account",$_SERVER["PHP_SELF"],"b.fk_account",$pram,"","",$sortfield,$sortorder); - } - print_liste_field_titre("Date",$_SERVER["PHP_SELF"],"c.dateadh",$param,"",'align="center"',$sortfield,$sortorder); - print_liste_field_titre("DateEnd",$_SERVER["PHP_SELF"],"c.datef",$param,"",'align="center"',$sortfield,$sortorder); - print_liste_field_titre("Amount",$_SERVER["PHP_SELF"],"c.subscription",$param,"",'align="right"',$sortfield,$sortorder); - //print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch '); - print_liste_field_titre('', $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch '); - print "\n"; - - - // Static objects - $subscription=new Subscription($db); - $adherent=new Adherent($db); - $accountstatic=new Account($db); - - $total=0; - while ($i < min($num, $limit)) - { - $obj = $db->fetch_object($result); - $total+=$obj->subscription; - - $subscription->ref=$obj->crowid; - $subscription->id=$obj->crowid; - - $adherent->lastname=$obj->lastname; - $adherent->firstname=$obj->firstname; - $adherent->ref=$obj->rowid; - $adherent->id=$obj->rowid; - $adherent->statut=$obj->statut; - $adherent->login=$obj->login; - $adherent->photo=$obj->photo; - - - - print ''; - - // Ref - print ''; - - // Lastname - print ''; - - // Login - print ''; - - // Libelle - print ''; - - // Banque - if (! empty($conf->banque->enabled)) - { - if ($obj->fk_account > 0) - { - $accountstatic->id=$obj->fk_account; - $accountstatic->fetch($obj->fk_account); - //$accountstatic->label=$obj->label; - print ''; - } - else - { - print "\n"; - } - } - - // Date start - print '\n"; - - // Date end - print '\n"; - - // Price - print ''; - - print ''; - - print ""; - - $i++; - } - - // Total - - print ''; - print "\n"; - print "\n"; - print "\n"; - print "\n"; - if (! empty($conf->banque->enabled)) - { - print ''; - } - print ''; - print ''; - print '\n"; - print ''; - print "\n"; - - print "
 '; print ''; - print ''; + print ''; print ''; - print ''; + print ''; + print ''; - print $form->select_comptes($search_account, 'search_account', 0, '', 1); - print ''; + print $form->select_comptes($search_account, 'search_account', 0, '', 1); + print '  '; print ''; print ''; - $searchpicto=$form->showFilterButtons(); - print $searchpicto; - print '
'.$subscription->getNomUrl(1).''.$adherent->getNomUrl(-1).''.$adherent->login.''; - print dol_trunc($obj->note,32); - print ''.$accountstatic->getNomUrl(1).'"; - print "'.dol_print_date($db->jdate($obj->dateadh),'day')."'.dol_print_date($db->jdate($obj->datef),'day')."'.price($obj->subscription).'
".$langs->trans("Total")."      '.price($total)."
"; - print '
'; - print '
'; } -else +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; + +// Fields from hook +$parameters=array('arrayfields'=>$arrayfields); +$reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; +// Date creation +if (! empty($arrayfields['d.datec']['checked'])) { - dol_print_error($db); + print ''; + print ''; } +// Date modification +if (! empty($arrayfields['d.tms']['checked'])) +{ + print ''; + print ''; +} + +// Action column +print ''; +$searchpicto=$form->showFilterButtons(); +print $searchpicto; +print ''; + +print "\n"; + + +print ''; +if (! empty($arrayfields['d.ref']['checked'])) +{ + print_liste_field_titre("Ref",$_SERVER["PHP_SELF"],"c.rowid",$param,"","",$sortfield,$sortorder); +} +if (! empty($arrayfields['d.lastname']['checked'])) +{ + print_liste_field_titre("LastName",$_SERVER["PHP_SELF"],"d.lastname",$param,"","",$sortfield,$sortorder); +} +if (! empty($arrayfields['d.firstname']['checked'])) +{ + print_liste_field_titre("FirstName",$_SERVER["PHP_SELF"],"d.firstname",$param,"","",$sortfield,$sortorder); +} +if (! empty($arrayfields['d.login']['checked'])) +{ + print_liste_field_titre("Login",$_SERVER["PHP_SELF"],"d.login",$param,"","",$sortfield,$sortorder); +} +if (! empty($arrayfields['t.libelle']['checked'])) +{ + print_liste_field_titre("Label",$_SERVER["PHP_SELF"],"c.note",$param,"",'align="left"',$sortfield,$sortorder); +} +if (! empty($arrayfields['d.bank']['checked'])) +{ + print_liste_field_titre("Account",$_SERVER["PHP_SELF"],"b.fk_account",$pram,"","",$sortfield,$sortorder); +} +if (! empty($arrayfields['d.date_debut']['checked'])) +{ + print_liste_field_titre("Date",$_SERVER["PHP_SELF"],"c.dateadh",$param,"",'align="center"',$sortfield,$sortorder); +} +if (! empty($arrayfields['d.date_fin']['checked'])) +{ + print_liste_field_titre("DateEnd",$_SERVER["PHP_SELF"],"c.datef",$param,"",'align="center"',$sortfield,$sortorder); +} +if (! empty($arrayfields['d.amount']['checked'])) +{ + print_liste_field_titre("Amount",$_SERVER["PHP_SELF"],"c.subscription",$param,"",'align="right"',$sortfield,$sortorder); +} +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; + +// Hook fields +$parameters=array('arrayfields'=>$arrayfields,'param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder); +$reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; +if (! empty($arrayfields['d.datec']['checked'])) print_liste_field_titre($arrayfields['d.datec']['label'],$_SERVER["PHP_SELF"],"d.datec","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); +if (! empty($arrayfields['d.tms']['checked'])) print_liste_field_titre($arrayfields['d.tms']['label'],$_SERVER["PHP_SELF"],"d.tms","",$param,'align="center" class="nowrap"',$sortfield,$sortorder); +print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"],"",'','','align="center"',$sortfield,$sortorder,'maxwidthsearch '); +print "\n"; + + +$total=0; +$totalarray=array(); +while ($i < min($num, $limit)) +{ + $obj = $db->fetch_object($result); + $total+=$obj->subscription; + + $subscription->ref=$obj->crowid; + $subscription->id=$obj->crowid; + + $adherent->lastname=$obj->lastname; + $adherent->firstname=$obj->firstname; + $adherent->ref=$obj->rowid; + $adherent->id=$obj->rowid; + $adherent->statut=$obj->statut; + $adherent->login=$obj->login; + $adherent->photo=$obj->photo; + + + print ''; + + // Ref + if (! empty($arrayfields['d.ref']['checked'])) + { + print ''.$subscription->getNomUrl(1).''; + if (! $i) $totalarray['nbfield']++; + } + + // Lastname + if (! empty($arrayfields['d.lastname']['checked'])) + { + $adherent->firstname = ''; + print ''.$adherent->getNomUrl(-1).''; + $adherent->firstname = $obj->firstname; + if (! $i) $totalarray['nbfield']++; + } + // Firstname + if (! empty($arrayfields['d.firstname']['checked'])) + { + print ''.$adherent->firstname.''; + if (! $i) $totalarray['nbfield']++; + } + + // Login + if (! empty($arrayfields['d.login']['checked'])) + { + print ''.$adherent->login.''; + if (! $i) $totalarray['nbfield']++; + } + + // Label + if (! empty($arrayfields['t.libelle']['checked'])) + { + print ''; + print dol_trunc($obj->note,128); + print ''; + if (! $i) $totalarray['nbfield']++; + } + + // Banque + if (! empty($arrayfields['d.bank']['checked'])) + { + print ""; + if ($obj->fk_account > 0) + { + $accountstatic->id=$obj->fk_account; + $accountstatic->fetch($obj->fk_account); + //$accountstatic->label=$obj->label; + print $accountstatic->getNomUrl(1); + } + print "\n"; + if (! $i) $totalarray['nbfield']++; + } + + // Date start + if (! empty($arrayfields['d.date_start']['checked'])) + { + print ''.dol_print_date($db->jdate($obj->dateadh),'day')."\n"; + if (! $i) $totalarray['nbfield']++; + } + // Date end + if (! empty($arrayfields['d.date_end']['checked'])) + { + print ''.dol_print_date($db->jdate($obj->datef),'day')."\n"; + if (! $i) $totalarray['nbfield']++; + } + // Price + if (! empty($arrayfields['d.amount']['checked'])) + { + print ''.price($obj->subscription).''; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['pos'][$totalarray['nbfield']]='d.amount'; + $totalarray['val']['d.amount'] += $obj->subscription; + } + // Extra fields + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Date creation + if (! empty($arrayfields['d.datec']['checked'])) + { + print ''; + print dol_print_date($db->jdate($obj->date_creation), 'dayhour', 'tzuser'); + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Date modification + if (! empty($arrayfields['d.tms']['checked'])) + { + print ''; + print dol_print_date($db->jdate($obj->date_update), 'dayhour', 'tzuser'); + print ''; + if (! $i) $totalarray['nbfield']++; + } + // Action column + print ''; + if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + { + $selected=0; + if (in_array($obj->rowid, $arrayofselected)) $selected=1; + print ''; + } + print ''; + if (! $i) $totalarray['nbfield']++; + + print "\n"; + $i++; +} + +// Show total line +if (isset($totalarray['pos'])) +{ + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if (! empty($totalarray['pos'][$i])) print ''.price($totalarray['val'][$totalarray['pos'][$i]]).''; + else + { + if ($i == 1) + { + if ($num < $limit) print ''.$langs->trans("Total").''; + else print ''.$langs->trans("Totalforthispage").''; + } + else print ''; + } + } + print ''; +} + +// If no record found +if ($num == 0) +{ + $colspan=1; + foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; } + print ''.$langs->trans("NoRecordFound").''; +} + +$db->free($resql); + +$parameters=array('sql' => $sql); +$reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; + +print ""; +print '
'; +print ''; + // End of page llxFooter(); From ff8f235b7ef97d3e96299eefce5a29b53a860182 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 00:15:22 +0100 Subject: [PATCH 029/307] Fix regression when disabling table --- htdocs/ticket/class/ticket.class.php | 65 +++++++++++----------------- 1 file changed, 26 insertions(+), 39 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 76c9eb8856e..e904adfdb81 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -898,11 +898,6 @@ class Ticket extends CommonObject if ($res < 0) $error++; } - if (!$error) { - $sql = "DELETE FROM " . MAIN_DB_PREFIX . "ticket_logs"; - $sql .= " WHERE fk_track_id = '" . $this->db->escape($this->track_id) . "'"; - $resql = $this->db->query($sql); - } if (!$error) { $sql = "DELETE FROM " . MAIN_DB_PREFIX . "ticket_msg"; $sql .= " WHERE fk_track_id = '" . $this->db->escape($this->track_id) . "'"; @@ -1487,15 +1482,17 @@ class Ticket extends CommonObject * 1- create entry into database for message storage * 2- if trigger, send an email to ticket contacts * - * @param User $user User that create - * @param string $message Log message - * @param int $noemail 0=send email after, 1=disable emails - * @return int <0 if KO, >0 if OK + * @param User $user User that create + * @param string $message Log message + * @param int $noemail 0=send email after, 1=disable emails + * @return int <0 if KO, >0 if OK */ public function createTicketLog(User $user, $message, $noemail = 0) { global $conf, $langs; + $error = 0; + $this->db->begin(); // Clean parameters @@ -1507,37 +1504,23 @@ class Ticket extends CommonObject return -1; } - // Insert request - $sql = "INSERT INTO " . MAIN_DB_PREFIX . "ticket_logs("; - $sql .= "entity,"; - $sql .= "datec,"; - $sql .= "fk_track_id,"; - $sql .= "fk_user_create,"; - $sql .= "message"; - $sql .= ") VALUES ("; - $sql .= " " . $conf->entity . ","; - $sql .= " '" . $this->db->idate(dol_now()) . "',"; - $sql .= " '" . $this->db->escape($this->track_id) . "',"; - $sql .= " " . ($user->id > 0 ? $user->id : 'NULL') . ","; - $sql .= " '" . $this->db->escape($message) . "'"; - $sql .= ")"; + // TODO Should call the trigger TICKET_MODIFY with $this->context with all data to record event + // so the event is stored by the agenda/event trigger - dol_syslog(get_class($this) . "::create_ticket_log sql=" . $sql, LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - if ($conf->global->TICKET_ACTIVATE_LOG_BY_EMAIL && !$noemail) { - $this->sendLogByEmail($user, $message); - } + if (!$error) { + $this->db->commit(); - if (!$error) { - $this->db->commit(); - return 1; - } - } else { - $this->db->rollback(); - $this->error = "Error " . $this->db->lasterror(); - dol_syslog(get_class($this) . "::create_ticket_log " . $this->error, LOG_ERR); - return -1; + if ($conf->global->TICKET_ACTIVATE_LOG_BY_EMAIL && !$noemail) { + $this->sendLogByEmail($user, $message); + } + + return 1; + } + else + { + $this->db->rollback(); + + return -1; } } @@ -1647,6 +1630,8 @@ class Ticket extends CommonObject } // Cache deja charge + // TODO Read the table llx_actioncomm + /* $sql = "SELECT rowid, fk_user_create, datec, message"; $sql .= " FROM " . MAIN_DB_PREFIX . "ticket_logs"; $sql .= " WHERE fk_track_id ='" . $this->db->escape($this->track_id) . "'"; @@ -1669,7 +1654,9 @@ class Ticket extends CommonObject $this->error = "Error " . $this->db->lasterror(); dol_syslog(get_class($this) . "::loadCacheLogsTicket " . $this->error, LOG_ERR); return -1; - } + }*/ + + return 0; } /** From 91b190506ba49b25977c180343252cf3eaba7b3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 00:19:46 +0100 Subject: [PATCH 030/307] Fix bad path --- htdocs/ecm/class/ecmfiles.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 70e79a6a3e5..781833169dd 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -186,7 +186,7 @@ class EcmFiles extends CommonObject $ref=$this->ref; } else { - include_once DOL_DOCUMENT_ROOT.'/lib/security.lib.php'; + include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; $ref = dol_hash($this->filepath.'/'.$this->filename, 3); } From cf74e5b9a8e36f18cdb70e131a36d2ab349ac628 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 00:25:10 +0100 Subject: [PATCH 031/307] Change order of tabs --- htdocs/core/lib/project.lib.php | 76 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php index 84d32725682..8b6ca6a5ca3 100644 --- a/htdocs/core/lib/project.lib.php +++ b/htdocs/core/lib/project.lib.php @@ -52,9 +52,44 @@ function project_prepare_head($object) $head[$h][2] = 'contact'; $h++; + if (empty($conf->global->PROJECT_HIDE_TASKS)) + { + // Then tab for sub level of projet, i mean tasks + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id; + $head[$h][1] = $langs->trans("Tasks"); + + require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; + $taskstatic=new Task($db); + $nbTasks=count($taskstatic->getTasksArray(0, 0, $object->id, 0, 0)); + if ($nbTasks > 0) $head[$h][1].= ' '.($nbTasks).''; + $head[$h][2] = 'tasks'; + $h++; + + $nbTimeSpent=0; + $sql = "SELECT t.rowid"; + //$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u"; + //$sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid"; + $sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt"; + $sql .= " WHERE t.fk_task = pt.rowid"; + $sql .= " AND pt.fk_projet =".$object->id; + $resql = $db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + if ($obj) $nbTimeSpent=1; + } + else dol_print_error($db); + + $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/time.php?withproject=1&projectid='.$object->id; + $head[$h][1] = $langs->trans("TimeSpent"); + if ($nbTimeSpent > 0) $head[$h][1].= ' ...'; + $head[$h][2] = 'timespent'; + $h++; + } + if (! empty($conf->fournisseur->enabled) || ! empty($conf->propal->enabled) || ! empty($conf->commande->enabled) - || ! empty($conf->facture->enabled) || ! empty($conf->contrat->enabled) - || ! empty($conf->ficheinter->enabled) || ! empty($conf->agenda->enabled) || ! empty($conf->deplacement->enabled)) + || ! empty($conf->facture->enabled) || ! empty($conf->contrat->enabled) + || ! empty($conf->ficheinter->enabled) || ! empty($conf->agenda->enabled) || ! empty($conf->deplacement->enabled)) { $head[$h][0] = DOL_URL_ROOT.'/projet/element.php?id='.$object->id; $head[$h][1] = $langs->trans("ProjectOverview"); @@ -92,41 +127,6 @@ function project_prepare_head($object) $head[$h][2] = 'document'; $h++; - if (empty($conf->global->PROJECT_HIDE_TASKS)) - { - // Then tab for sub level of projet, i mean tasks - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id; - $head[$h][1] = $langs->trans("Tasks"); - - require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; - $taskstatic=new Task($db); - $nbTasks=count($taskstatic->getTasksArray(0, 0, $object->id, 0, 0)); - if ($nbTasks > 0) $head[$h][1].= ' '.($nbTasks).''; - $head[$h][2] = 'tasks'; - $h++; - - $nbTimeSpent=0; - $sql = "SELECT t.rowid"; - //$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u"; - //$sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid"; - $sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t, ".MAIN_DB_PREFIX."projet_task as pt"; - $sql .= " WHERE t.fk_task = pt.rowid"; - $sql .= " AND pt.fk_projet =".$object->id; - $resql = $db->query($sql); - if ($resql) - { - $obj = $db->fetch_object($resql); - if ($obj) $nbTimeSpent=1; - } - else dol_print_error($db); - - $head[$h][0] = DOL_URL_ROOT.'/projet/tasks/time.php?withproject=1&projectid='.$object->id; - $head[$h][1] = $langs->trans("TimeSpent"); - if ($nbTimeSpent > 0) $head[$h][1].= ' ...'; - $head[$h][2] = 'timespent'; - $h++; - } - // Manage discussion if (!empty($conf->global->PROJECT_ALLOW_COMMENT_ON_PROJECT)) { @@ -1205,7 +1205,7 @@ function projectLinesPerWeek(&$inc, $firstdaytoshow, $fuser, $parent, $lines, &$ { continue; } - + // Break on a new project if ($parent == 0 && $lines[$i]->fk_project != $lastprojectid) { From 42d4cf99926c24e2dc98f537196ffb5de72a4e68 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 10:17:54 +0100 Subject: [PATCH 032/307] Fix sql --- htdocs/install/mysql/migration/6.0.0-7.0.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql index 9b5243b181b..8037c988f03 100644 --- a/htdocs/install/mysql/migration/6.0.0-7.0.0.sql +++ b/htdocs/install/mysql/migration/6.0.0-7.0.0.sql @@ -468,7 +468,7 @@ ALTER TABLE llx_extrafields ADD COLUMN tms timestamp; -- We fix value of 'list' from 0 to 1 for all extrafields created before this migration UPDATE llx_extrafields SET list = 1 WHERE list = 0 AND fk_user_author IS NULL and fk_user_modif IS NULL and datec IS NULL; -UPDATE llx_extrafields SET list = 3 WHERE type = 'separate' AND list != 3; +UPDATE llx_extrafields SET list = 3 WHERE type = 'separate' AND list <> 3; ALTER TABLE llx_extrafields MODIFY COLUMN list integer DEFAULT 1; --VPGSQL8.2 ALTER TABLE llx_extrafields ALTER COLUMN list SET DEFAULT 1; From 3f912ebfff954d60d49105aa3ced23e1865fd80e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 11:19:52 +0100 Subject: [PATCH 033/307] FIX restore security event login/logout --- htdocs/core/class/events.class.php | 4 +- .../interface_20_all_Logevents.class.php | 4 +- htdocs/main.inc.php | 61 ++++++++++++++++++- htdocs/user/logout.php | 13 ++-- 4 files changed, 70 insertions(+), 12 deletions(-) diff --git a/htdocs/core/class/events.class.php b/htdocs/core/class/events.class.php index 78439af1134..68e029dae4b 100644 --- a/htdocs/core/class/events.class.php +++ b/htdocs/core/class/events.class.php @@ -76,9 +76,9 @@ class Events // extends CommonObject // List of all Audit/Security events supported by triggers public $eventstolog=array( - /*array('id'=>'USER_LOGIN', 'test'=>1), + array('id'=>'USER_LOGIN', 'test'=>1), array('id'=>'USER_LOGIN_FAILED', 'test'=>1), - array('id'=>'USER_LOGOUT', 'test'=>1),*/ + array('id'=>'USER_LOGOUT', 'test'=>1), array('id'=>'USER_CREATE', 'test'=>1), array('id'=>'USER_MODIFY', 'test'=>1), array('id'=>'USER_NEW_PASSWORD', 'test'=>1), diff --git a/htdocs/core/triggers/interface_20_all_Logevents.class.php b/htdocs/core/triggers/interface_20_all_Logevents.class.php index 4d5d7e74280..b2100b806fb 100644 --- a/htdocs/core/triggers/interface_20_all_Logevents.class.php +++ b/htdocs/core/triggers/interface_20_all_Logevents.class.php @@ -70,7 +70,7 @@ class InterfaceLogevents extends DolibarrTriggers $date = dol_now(); // Actions - /*if ($action == 'USER_LOGIN') + if ($action == 'USER_LOGIN') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); @@ -97,7 +97,7 @@ class InterfaceLogevents extends DolibarrTriggers // Initialisation donnees (date,duree,texte,desc) $text="(UserLogoff,".$object->login.")"; $desc="(UserLogoff,".$object->login.")"; - }*/ + } if ($action == 'USER_CREATE') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 06f67a9b79f..438fff1eb15 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -500,6 +500,17 @@ if (! defined('NOLOGIN')) $_SESSION["dol_loginmesg"]=$langs->trans("ErrorBadValueForCode"); $test=false; + // Call trigger for the "security events" log + $user->trigger_mesg='ErrorBadValueForCode - login='.GETPOST("username","alpha",2); + // Call of triggers + include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + $interface=new Interfaces($db); + $result=$interface->run_triggers('USER_LOGIN_FAILED',$user,$user,$langs,$conf); + if ($result < 0) { + $error++; + } + // End Call of triggers + // Hooks on failed login $action=''; $hookmanager->initHooks(array('login')); @@ -568,6 +579,17 @@ if (! defined('NOLOGIN')) // We set a generic message if not defined inside function checkLoginPassEntity or subfunctions if (empty($_SESSION["dol_loginmesg"])) $_SESSION["dol_loginmesg"]=$langs->trans("ErrorBadLoginPassword"); + // Call trigger for the "security events" log + $user->trigger_mesg=$langs->trans("ErrorBadLoginPassword").' - login='.GETPOST("username","alpha",2); + // Call of triggers + include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; + $interface=new Interfaces($db); + $result=$interface->run_triggers('USER_LOGIN_FAILED',$user,$user,$langs,$conf,GETPOST("username","alpha",2)); + if ($result < 0) { + $error++; + } + // End Call of triggers + // Hooks on failed login $action=''; $hookmanager->initHooks(array('login')); @@ -604,12 +626,25 @@ if (! defined('NOLOGIN')) $langs->loadLangs(array('main', 'errors')); $_SESSION["dol_loginmesg"]=$langs->trans("ErrorCantLoadUserFromDolibarrDatabase",$login); + + $user->trigger_mesg='ErrorCantLoadUserFromDolibarrDatabase - login='.$login; } if ($resultFetchUser < 0) { $_SESSION["dol_loginmesg"]=$user->error; + + $user->trigger_mesg=$user->error; } + // Call triggers for the "security events" log + include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + $interface=new Interfaces($db); + $result=$interface->run_triggers('USER_LOGIN_FAILED',$user,$user,$langs,$conf); + if ($result < 0) { + $error++; + } + // End call triggers + // Hooks on failed login $action=''; $hookmanager->initHooks(array('login')); @@ -648,12 +683,25 @@ if (! defined('NOLOGIN')) $langs->loadLangs(array('main', 'errors')); $_SESSION["dol_loginmesg"]=$langs->trans("ErrorCantLoadUserFromDolibarrDatabase",$login); + + $user->trigger_mesg='ErrorCantLoadUserFromDolibarrDatabase - login='.$login; } if ($resultFetchUser < 0) { $_SESSION["dol_loginmesg"]=$user->error; + + $user->trigger_mesg=$user->error; } + // Call triggers for the "security events" log + include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + $interface=new Interfaces($db); + $result=$interface->run_triggers('USER_LOGIN_FAILED',$user,$user,$langs,$conf); + if ($result < 0) { + $error++; + } + // End call triggers + // Hooks on failed login $action=''; $hookmanager->initHooks(array('login')); @@ -741,6 +789,17 @@ if (! defined('NOLOGIN')) $loginfo = 'TZ='.$_SESSION["dol_tz"].';TZString='.$_SESSION["dol_tz_string"].';Screen='.$_SESSION["dol_screenwidth"].'x'.$_SESSION["dol_screenheight"]; + // Call triggers for the "security events" log + $user->trigger_mesg = $loginfo; + // Call triggers + include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + $interface=new Interfaces($db); + $result=$interface->run_triggers('USER_LOGIN',$user,$user,$langs,$conf); + if ($result < 0) { + $error++; + } + // End call triggers + // Hooks on successfull login $action=''; $hookmanager->initHooks(array('login')); @@ -752,7 +811,7 @@ if (! defined('NOLOGIN')) { $db->rollback(); session_destroy(); - dol_print_error($db,'Error in some hooks afterLogin'); + dol_print_error($db,'Error in some triggers USER_LOGIN or in some hooks afterLogin'); exit; } else diff --git a/htdocs/user/logout.php b/htdocs/user/logout.php index 3f53a4c67dd..668ca6fa4db 100644 --- a/htdocs/user/logout.php +++ b/htdocs/user/logout.php @@ -41,13 +41,12 @@ if (!empty($_SESSION["dol_authmode"]) && ($_SESSION["dol_authmode"] == 'forceuse global $conf, $langs, $user; -// Appel des triggers -// TODO @deprecated Remove this. Hook must be used, not this trigger. -//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; -//$interface=new Interfaces($db); -//$result=$interface->run_triggers('USER_LOGOUT',$user,$user,$langs,$conf); -//if ($result < 0) { $error++; } -// Fin appel triggers +// Call triggers for the "security events" log +include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; +$interface=new Interfaces($db); +$result=$interface->run_triggers('USER_LOGOUT',$user,$user,$langs,$conf); +if ($result < 0) { $error++; } +// End call triggers // Hooks on logout $action=''; From 188cda7902fab5b92735dac9c109cb2a9b2810b0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 12:32:26 +0100 Subject: [PATCH 034/307] Fix look and feel v9 --- htdocs/projet/tasks/contact.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php index 82c722f2485..e6de0743d66 100644 --- a/htdocs/projet/tasks/contact.php +++ b/htdocs/projet/tasks/contact.php @@ -326,7 +326,7 @@ if ($id > 0 || ! empty($ref)) dol_fiche_end(); /* - * Lignes de contacts + * Lines of contacts */ /* // Contacts lines (modules that overwrite templates must declare this into descriptor) @@ -340,16 +340,15 @@ if ($id > 0 || ! empty($ref)) /* * Add a new contact line - * Non affiche en mode modification de ligne */ print ''; if ($action != 'editline' && $user->rights->projet->creer) { print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; print ''; print "\n"; @@ -507,7 +506,7 @@ if ($id > 0 || ! empty($ref)) { print ' '; print ''; - print img_delete(); + print img_picto($langs->trans('Unlink'), 'unlink'); print ''; } print ''; From af5b63954ad13635658b3ceeeaf333a4d921e56f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 12:49:20 +0100 Subject: [PATCH 035/307] Clean code --- htdocs/core/class/html.formprojet.class.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/html.formprojet.class.php b/htdocs/core/class/html.formprojet.class.php index 1b6efe56820..35b3e52d154 100644 --- a/htdocs/core/class/html.formprojet.class.php +++ b/htdocs/core/class/html.formprojet.class.php @@ -334,7 +334,7 @@ class FormProjets $out=''; $hideunselectables = false; - if (! empty($conf->global->CONTRACT_HIDE_UNSELECTABLES)) $hideunselectables = true; + if (! empty($conf->global->PROJECT_HIDE_UNSELECTABLES)) $hideunselectables = true; if (empty($projectsListId)) { @@ -346,11 +346,11 @@ class FormProjets } // Search all projects - $sql = 'SELECT t.rowid, t.ref as tref, t.label as tlabel, p.ref, p.title, p.fk_soc, p.fk_statut, p.public,'; + $sql = 'SELECT t.rowid, t.ref as tref, t.label as tlabel, p.rowid as pid, p.ref, p.title, p.fk_soc, p.fk_statut, p.public,'; $sql.= ' s.nom as name'; $sql.= ' FROM '.MAIN_DB_PREFIX .'projet as p'; - $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON s.rowid = p.fk_soc'; - $sql.= ', '.MAIN_DB_PREFIX.'projet_task as t'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON s.rowid = p.fk_soc,'; + $sql.= ' '.MAIN_DB_PREFIX.'projet_task as t'; $sql.= " WHERE p.entity IN (".getEntity('project').")"; $sql.= " AND t.fk_projet = p.rowid"; if ($projectsListId) $sql.= " AND p.rowid IN (".$projectsListId.")"; @@ -393,7 +393,7 @@ class FormProjets } else { - if ($discard_closed == 1 && $obj->fk_statut == 2) + if ($discard_closed == 1 && $obj->fk_statut == Project::STATUS_CLOSED) { $i++; continue; @@ -411,12 +411,12 @@ class FormProjets if ($obj->name) $labeltoshow.=' ('.$obj->name.')'; $disabled=0; - if ($obj->fk_statut == 0) + if ($obj->fk_statut == Project::STATUS_DRAFT) { $disabled=1; $labeltoshow.=' - '.$langs->trans("Draft"); } - else if ($obj->fk_statut == 2) + else if ($obj->fk_statut == Project::STATUS_CLOSED) { if ($discard_closed == 2) $disabled=1; $labeltoshow.=' - '.$langs->trans("Closed"); From dbee87aa9d5382aca24092effabe66d56dbe3570 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 13:10:28 +0100 Subject: [PATCH 036/307] Trans --- htdocs/langs/en_US/projects.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 75987cc621e..1e1f8bb2d08 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -224,7 +224,7 @@ AllowToLinkFromOtherCompany=Allow to link project from other company

S LatestProjects=Latest %s projects LatestModifiedProjects=Latest %s modified projects OtherFilteredTasks=Other filtered tasks -NoAssignedTasks=No assigned tasks (assign project/tasks the current user from the top select box to enter time on it) +NoAssignedTasks=No assigned tasks found (assign project/tasks the current user from the top select box to enter time on it) # Comments trans AllowCommentOnTask=Allow user comments on tasks AllowCommentOnProject=Allow user comments on projects From e2e22f95d1fada0ad21dace47c6bede1620d16ba Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 13:18:34 +0100 Subject: [PATCH 037/307] FIX Workaround for flex bug --- htdocs/theme/eldy/style.css.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 4afac8ac2cc..05fd488e948 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -907,8 +907,9 @@ div.fiche { min-width: 150px; } .thumbstat150 { - /* min-width: 170px; */ - width: 170px; + min-width: 170px; + max-wdith: 171px; + /* width: 170px; If I use with, there is trouble on size of flex boxes solved with min+max that is a little bit higer than min */ } .thumbstat, .thumbstat150 { browser->name == 'ie') { ?> From 853566cc28cbbffe587671574e8cda34f8699298 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 14:40:42 +0100 Subject: [PATCH 038/307] Fix bold chars in tooltips --- htdocs/exports/export.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index 7cb69ee9a3f..b715ba853b7 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -623,11 +623,11 @@ if ($step == 2 && $datatoexport) } if (! empty($objexport->array_export_examplevalues[0][$code])) { - $htmltext.=$langs->trans("SourceExample").': '.$objexport->array_export_examplevalues[0][$code].'
'; + $htmltext.=''.$langs->trans("SourceExample").': '.$objexport->array_export_examplevalues[0][$code].'
'; } if (! empty($objexport->array_export_TypeFields[0][$code])) { - $htmltext.=$langs->trans("Type").': '.$objexport->array_export_TypeFields[0][$code].'
'; + $htmltext.=''.$langs->trans("Type").': '.$objexport->array_export_TypeFields[0][$code].'
'; } if (isset($array_selected[$code]) && $array_selected[$code]) From f3a67d6c3f72b33eade7380f45865d30903d505a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 15:06:54 +0100 Subject: [PATCH 039/307] FIX Show warning when trying to create task on closed project --- htdocs/langs/en_US/errors.lang | 1 + htdocs/projet/tasks.php | 204 +++++++++++++++++---------------- 2 files changed, 108 insertions(+), 97 deletions(-) diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index a5555f85c82..4bb9fcf2dec 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -235,3 +235,4 @@ WarningYourLoginWasModifiedPleaseLogin=Your login was modified. For security pur WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to %s when using the mass actions on lists WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report +WarningProjectClosed=Project is closed. You must re-open it before. \ No newline at end of file diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index 2f06f698b14..e8e40dba814 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -450,108 +450,118 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third print load_fiche_titre($langs->trans("NewTask"), '', 'title_project'); - print '
'; - print ''; - print ''; - print ''; - if (! empty($object->id)) print ''; - - dol_fiche_head(''); - - print '
'.$langs->trans("Source").''.$langs->trans("Nature").''.$langs->trans("ThirdParty").''.$langs->trans("TaskContact").''.$langs->trans("Users").''.$langs->trans("ContactType").' 
'; - - $defaultref=''; - $obj = empty($conf->global->PROJECT_TASK_ADDON)?'mod_task_simple':$conf->global->PROJECT_TASK_ADDON; - if (! empty($conf->global->PROJECT_TASK_ADDON) && is_readable(DOL_DOCUMENT_ROOT ."/core/modules/project/task/".$conf->global->PROJECT_TASK_ADDON.".php")) + if ($object->statut == Project::STATUS_CLOSED) { - require_once DOL_DOCUMENT_ROOT ."/core/modules/project/task/".$conf->global->PROJECT_TASK_ADDON.'.php'; - $modTask = new $obj; - $defaultref = $modTask->getNextValue($object->thirdparty,null); - } - - if (is_numeric($defaultref) && $defaultref <= 0) $defaultref=''; - - // Ref - print ''; - - print ''; - - // List of projects - print ''; - - print ''; - - // Date start - print ''; - - // Date end - print ''; - - // Planned workload - print ''; - - // Progress - print ''; - - // Description - print ''; - print ''; - - // Other options - $parameters=array(); - $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$taskstatic,$action); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - - if (empty($reshook) && ! empty($extrafields_task->attribute_label)) - { - print $taskstatic->showOptionals($extrafields_task,'edit'); // Do not use $object here that is object of project - } - - print '
'.$langs->trans("Ref").''; - if (empty($duplicate_code_error)) - { - print (GETPOSTISSET("ref")?GETPOST("ref",'alpha'):$defaultref); + print '
'; + $langs->load("errors"); + print $langs->trans("WarningProjectClosed"); + print '
'; } else { - print $defaultref; + print ''; + print ''; + print ''; + print ''; + if (! empty($object->id)) print ''; + + dol_fiche_head(''); + + print ''; + + $defaultref=''; + $obj = empty($conf->global->PROJECT_TASK_ADDON)?'mod_task_simple':$conf->global->PROJECT_TASK_ADDON; + if (! empty($conf->global->PROJECT_TASK_ADDON) && is_readable(DOL_DOCUMENT_ROOT ."/core/modules/project/task/".$conf->global->PROJECT_TASK_ADDON.".php")) + { + require_once DOL_DOCUMENT_ROOT ."/core/modules/project/task/".$conf->global->PROJECT_TASK_ADDON.'.php'; + $modTask = new $obj; + $defaultref = $modTask->getNextValue($object->thirdparty,null); + } + + if (is_numeric($defaultref) && $defaultref <= 0) $defaultref=''; + + // Ref + print ''; + + print ''; + + // List of projects + print ''; + + print ''; + + // Date start + print ''; + + // Date end + print ''; + + // Planned workload + print ''; + + // Progress + print ''; + + // Description + print ''; + print ''; + + // Other options + $parameters=array(); + $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$taskstatic,$action); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + + if (empty($reshook) && ! empty($extrafields_task->attribute_label)) + { + print $taskstatic->showOptionals($extrafields_task,'edit'); // Do not use $object here that is object of project + } + + print '
'.$langs->trans("Ref").''; + if (empty($duplicate_code_error)) + { + print (GETPOSTISSET("ref")?GETPOST("ref",'alpha'):$defaultref); + } + else + { + print $defaultref; + } + print ''; + print '
'.$langs->trans("Label").''; + print ''; + print '
'.$langs->trans("ChildOfProjectTask").''; + print $formother->selectProjectTasks(GETPOST('task_parent'), $projectid?$projectid:$object->id, 'task_parent', 0, 0, 1, 1, 0, '0,1', 'maxwidth500'); + print '
'.$langs->trans("AffectedTo").''; + $contactsofproject=(! empty($object->id)?$object->getListContactId('internal'):''); + if (is_array($contactsofproject) && count($contactsofproject)) + { + print $form->select_dolusers($user->id, 'userid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 0, '', 'maxwidth300'); + } + else + { + print $langs->trans("NoUserAssignedToTheProject"); + } + print '
'.$langs->trans("DateStart").''; + print $form->selectDate(($date_start?$date_start:''), 'dateo', 1, 1, 0, '', 1, 1); + print '
'.$langs->trans("DateEnd").''; + print $form->selectDate(($date_end?$date_end:-1),'datee', -1, 1, 0, '', 1, 1); + print '
'.$langs->trans("PlannedWorkload").''; + print $form->select_duration('planned_workload', $planned_workload?$planned_workload : 0, 0, 'text'); + print '
'.$langs->trans("ProgressDeclared").''; + print $formother->select_percent($progress,'progress',0,5,0,100,1); + print '
'.$langs->trans("Description").''; + print ''; + print '
'; + + dol_fiche_end(); + + print '
'; + print ''; + print '     '; + print ''; + print '
'; + + print ''; } - print ''; - print '
'.$langs->trans("Label").''; - print ''; - print '
'.$langs->trans("ChildOfProjectTask").''; - print $formother->selectProjectTasks(GETPOST('task_parent'), $projectid?$projectid:$object->id, 'task_parent', 0, 0, 1, 1, 0, '0,1', 'maxwidth500'); - print '
'.$langs->trans("AffectedTo").''; - $contactsofproject=(! empty($object->id)?$object->getListContactId('internal'):''); - if (is_array($contactsofproject) && count($contactsofproject)) - { - print $form->select_dolusers($user->id, 'userid', 0, '', 0, '', $contactsofproject, 0, 0, 0, '', 0, '', 'maxwidth300'); - } - else - { - print $langs->trans("NoUserAssignedToTheProject"); - } - print '
'.$langs->trans("DateStart").''; - print $form->selectDate(($date_start?$date_start:''), 'dateo', 1, 1, 0, '', 1, 1); - print '
'.$langs->trans("DateEnd").''; - print $form->selectDate(($date_end?$date_end:-1),'datee', -1, 1, 0, '', 1, 1); - print '
'.$langs->trans("PlannedWorkload").''; - print $form->select_duration('planned_workload', $planned_workload?$planned_workload : 0, 0, 'text'); - print '
'.$langs->trans("ProgressDeclared").''; - print $formother->select_percent($progress,'progress',0,5,0,100,1); - print '
'.$langs->trans("Description").''; - print ''; - print '
'; - - dol_fiche_end(); - - print '
'; - print ''; - print '     '; - print ''; - print '
'; - - print ''; } else if ($id > 0 || ! empty($ref)) { From 3da96500032b9f6b3ceca4692e24fc264a98ddea Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Mon, 10 Dec 2018 16:06:11 +0100 Subject: [PATCH 040/307] FIX if qty is 0 --- htdocs/fourn/class/fournisseur.facture.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 72bd20fc25c..1e408c697f7 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -3035,7 +3035,7 @@ class SupplierInvoiceLine extends CommonObjectLine $sql.= " ".$this->product_type.","; $sql.= " ".price2num($this->remise_percent).","; $sql.= " ".price2num($this->subprice).","; - $sql.= " ".price2num($this->total_ttc/$this->qty).","; + $sql.= " ".!empty($this->qty)?price2num($this->total_ttc/$this->qty):price2num($this->total_ttc).","; $sql.= " ".(! empty($this->date_start)?"'".$this->db->idate($this->date_start)."'":"null").","; $sql.= " ".(! empty($this->date_end)?"'".$this->db->idate($this->date_end)."'":"null").","; $sql.= ' '.(!empty($this->fk_code_ventilation)?$this->fk_code_ventilation:0).','; From b35a9c0e64a7be63b4f96dadf9084002685ea96a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 17:50:58 +0100 Subject: [PATCH 041/307] FIX Edition of menu fails (mainmenu required for top menu) --- htdocs/admin/menus/edit.php | 66 +++++++++++++++++------- htdocs/core/class/menubase.class.php | 1 - htdocs/core/menus/standard/eldy.lib.php | 7 ++- htdocs/core/menus/standard/eldy_menu.php | 7 ++- htdocs/langs/en_US/admin.lang | 1 + htdocs/main.inc.php | 16 +++--- 6 files changed, 66 insertions(+), 32 deletions(-) diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index 4d5cc2be274..21a085257b8 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -96,6 +96,7 @@ if ($action == 'update') $menu->perms=GETPOST('perms','alpha'); $menu->target=GETPOST('target','alpha'); $menu->user=GETPOST('user','alpha'); + $menu->mainmenu=GETPOST('propertymainmenu','alpha'); if (is_numeric(GETPOST('menuIdParent','alpha'))) { $menu->fk_menu=GETPOST('menuIdParent','alpha'); @@ -123,14 +124,11 @@ if ($action == 'update') setEventMessages($menu->error, $menu->errors, 'errors'); } $action = "edit"; - } - else - { + header("Location: ".DOL_URL_ROOT."/admin/menus/index.php?menu_handler=".$menu_handler); exit; } - - if ($_GET['return']) + else { header("Location: ".DOL_URL_ROOT."/admin/menus/index.php?menu_handler=".$menu_handler); exit; @@ -215,6 +213,7 @@ if ($action == 'add') $menu->perms=GETPOST('perms','alpha'); $menu->target=GETPOST('target','alpha'); $menu->user=GETPOST('user','alpha'); + $menu->mainmenu=GETPOST('propertymainmenu','alpha'); if (is_numeric(GETPOST('menuId','int'))) { $menu->fk_menu=GETPOST('menuId','int'); @@ -338,7 +337,7 @@ if ($action == 'create') print ''; print ''.$langs->trans('DetailMenuHandler').''; - //User + // User print ''.$langs->trans('MenuForUsers').''; print ''; } - // print ''; print ''.$langs->trans('DetailType').''; + // Mainmenu code + print ''.$langs->trans('MainMenuCode').''; + /*if ($parent_rowid) + { + print ''.$parent_rowid.''; + } + else + {*/ + print ''; + //} + print ''; + print $langs->trans("Example").': mytopmenukey'; + print ''; + // MenuId Parent print ''.$langs->trans('MenuIdParent').''; if ($parent_rowid) @@ -373,23 +385,23 @@ if ($action == 'create') } else { - print ''; + print ''; } print ''.$langs->trans('DetailMenuIdParent'); print ', '.$langs->trans("Example").': fk_mainmenu=abc&fk_leftmenu=def'; print ''; // Title - print ''.$langs->trans('Title').''.$langs->trans('DetailTitre').''; + print ''.$langs->trans('Title').''.$langs->trans('DetailTitre').''; // URL - print ''.$langs->trans('URL').''.$langs->trans('DetailUrl').''; + print ''.$langs->trans('URL').''.$langs->trans('DetailUrl').''; // Langs - print ''.$langs->trans('LangFile').''.$langs->trans('DetailLangs').''; + print ''.$langs->trans('LangFile').''.$langs->trans('DetailLangs').''; // Position - print ''.$langs->trans('Position').''.$langs->trans('DetailPosition').''; + print ''.$langs->trans('Position').''.$langs->trans('DetailPosition').''; // Target print ''.$langs->trans('Target').''.$langs->trans('DetailTarget').''; // Enabled - print ''.$langs->trans('Enabled').''.$langs->trans('DetailEnabled').''; + print ''.$langs->trans('Enabled').''.$langs->trans('DetailEnabled').''; // Perms - print ''.$langs->trans('Rights').''.$langs->trans('DetailRight').''; + print ''.$langs->trans('Rights').''.$langs->trans('DetailRight').''; print ''; @@ -455,13 +467,27 @@ elseif ($action == 'edit') // Type print ''.$langs->trans('Type').''.$langs->trans(ucfirst($menu->type)).''.$langs->trans('DetailType').''; + // Mainmenu code + print ''.$langs->trans('MainMenuCode').''; + /*if ($parent_rowid) + { + print ''.$parent_rowid.''; + } + else + {*/ + print 'mainmenu).'">'; + //} + print ''; + print $langs->trans("Example").': mytopmenukey'; + print ''; + // MenuId Parent print ''.$langs->trans('MenuIdParent'); print ''; $valtouse=$menu->fk_menu; if ($menu->fk_mainmenu) $valtouse='fk_mainmenu='.$menu->fk_mainmenu; if ($menu->fk_leftmenu) $valtouse.='&fk_leftmenu='.$menu->fk_leftmenu; - print ''; + print ''; print ''.$langs->trans('DetailMenuIdParent'); print ', '.$langs->trans("Example").': fk_mainmenu=abc&fk_leftmenu=def'; print ''; @@ -470,16 +496,16 @@ elseif ($action == 'edit') //print ''.$langs->trans('Level').''.$menu->level.''.$langs->trans('DetailLevel').''; // Title - print ''.$langs->trans('Title').''.$langs->trans('DetailTitre').''; + print ''.$langs->trans('Title').''.$langs->trans('DetailTitre').''; // Url print ''.$langs->trans('URL').''.$langs->trans('DetailUrl').''; // Langs - print ''.$langs->trans('LangFile').''.$langs->trans('DetailLangs').''; + print ''.$langs->trans('LangFile').''.$langs->trans('DetailLangs').''; // Position - print ''.$langs->trans('Position').''.$langs->trans('DetailPosition').''; + print ''.$langs->trans('Position').''.$langs->trans('DetailPosition').''; // Target print ''.$langs->trans('Target').''.$langs->trans('DetailTarget').''; // Enabled - print ''.$langs->trans('Enabled').''.$langs->trans('DetailEnabled'); + print ''.$langs->trans('Enabled').''.$langs->trans('DetailEnabled'); if (! empty($menu->enabled)) print ' ('.$langs->trans("ConditionIsCurrently").': '.yn(dol_eval($menu->enabled,1)).')'; print ''; // Perms - print ''.$langs->trans('Rights').''.$langs->trans('DetailRight'); + print ''.$langs->trans('Rights').''.$langs->trans('DetailRight'); if (! empty($menu->perms)) print ' ('.$langs->trans("ConditionIsCurrently").': '.yn(dol_eval($menu->perms,1)).')'; print ''; diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index 7f4ab7c6d4a..86b27948389 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -589,7 +589,6 @@ class Menubase $a = 0; $b = 0; - $oldrowid=0; while ($a < $numa) { //$objm = $this->db->fetch_object($resql); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 2bf4671504f..ce2145d3986 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -468,6 +468,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu { global $user,$conf,$langs,$dolibarr_main_db_name,$mysoc; + //var_dump($tabMenu); + $newmenu = $menu; $mainmenu=($forcemainmenu?$forcemainmenu:$_SESSION["mainmenu"]); @@ -523,7 +525,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu * We update newmenu with entries found into database * -------------------------------------------------- */ - if ($mainmenu) + if ($mainmenu) // If this is empty, loading hard coded menu and loading personalised menu will fail { /* * Menu HOME @@ -1628,6 +1630,9 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu } } + //var_dump($tabMenu); // + //var_dump($newmenu->liste); + // Build final $menu_array = $menu_array_before +$newmenu->liste + $menu_array_after //var_dump($menu_array_before);exit; //var_dump($menu_array_after);exit; diff --git a/htdocs/core/menus/standard/eldy_menu.php b/htdocs/core/menus/standard/eldy_menu.php index 049956e82e2..4992fc6d11c 100644 --- a/htdocs/core/menus/standard/eldy_menu.php +++ b/htdocs/core/menus/standard/eldy_menu.php @@ -31,7 +31,7 @@ class MenuManager * @var DoliDB Database handler. */ public $db; - + var $type_user; // Put 0 for internal users, 1 for external users var $atarget=""; // To store default target to use onto links var $name="eldy"; @@ -109,6 +109,7 @@ class MenuManager $menuArbo = new Menubase($this->db,'eldy'); $menuArbo->menuLoad($mainmenu, $leftmenu, $this->type_user, 'eldy', $tabMenu); $this->tabMenu=$tabMenu; + //var_dump($tabMenu); //if ($forcemainmenu == 'all') { var_dump($this->tabMenu); exit; } } @@ -116,7 +117,7 @@ class MenuManager /** * Show menu. - * Module defined in sql tables are stored into this->tabMenu BEFORE this is called. + * Module defined in sql tables were stored into $this->tabMenu BEFORE this is called. * * @param string $mode 'top', 'topnb', 'left', 'jmobile' (used to get full xml ul/li menu) * @param array $moredata An array with more data to output @@ -126,6 +127,8 @@ class MenuManager { global $conf, $langs, $user; + //var_dump($this->tabMenu); + require_once DOL_DOCUMENT_ROOT.'/core/menus/standard/eldy.lib.php'; if ($this->type_user == 1) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8d6e8e39b04..d580fa90809 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1844,6 +1844,7 @@ LoadThirdPartyFromNameOrCreate=Load thirdparty from name (create if not found) WithDolTrackingID=Dolibarr Tracking ID found WithoutDolTrackingID=Dolibarr Tracking ID not found FormatZip=Zip +MainMenuCode=Menu entry code (mainmenu) ##### Resource #### ResourceSetup=Configuration du module Resource UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 438fff1eb15..0f2f8af452e 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -510,7 +510,7 @@ if (! defined('NOLOGIN')) $error++; } // End Call of triggers - + // Hooks on failed login $action=''; $hookmanager->initHooks(array('login')); @@ -626,13 +626,13 @@ if (! defined('NOLOGIN')) $langs->loadLangs(array('main', 'errors')); $_SESSION["dol_loginmesg"]=$langs->trans("ErrorCantLoadUserFromDolibarrDatabase",$login); - + $user->trigger_mesg='ErrorCantLoadUserFromDolibarrDatabase - login='.$login; } if ($resultFetchUser < 0) { $_SESSION["dol_loginmesg"]=$user->error; - + $user->trigger_mesg=$user->error; } @@ -644,7 +644,7 @@ if (! defined('NOLOGIN')) $error++; } // End call triggers - + // Hooks on failed login $action=''; $hookmanager->initHooks(array('login')); @@ -689,7 +689,7 @@ if (! defined('NOLOGIN')) if ($resultFetchUser < 0) { $_SESSION["dol_loginmesg"]=$user->error; - + $user->trigger_mesg=$user->error; } @@ -701,7 +701,7 @@ if (! defined('NOLOGIN')) $error++; } // End call triggers - + // Hooks on failed login $action=''; $hookmanager->initHooks(array('login')); @@ -799,7 +799,7 @@ if (! defined('NOLOGIN')) $error++; } // End call triggers - + // Hooks on successfull login $action=''; $hookmanager->initHooks(array('login')); @@ -1074,7 +1074,7 @@ if (! function_exists("llxHeader")) if (empty($conf->dol_hide_leftmenu)) { - left_menu('', $help_url, '', '', 1, $title, 1); + left_menu('', $help_url, '', '', 1, $title, 1); // $menumanager is retreived with a global $menumanager inside this function } // main area From 6105bb2bb62d0129fd4975cfa84ac03ea36812d4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 18:10:57 +0100 Subject: [PATCH 042/307] Fix: difference between text and url into external web site module --- htdocs/externalsite/frames.php | 47 +++++++++++++++++++++++++++++++--- htdocs/langs/en_US/errors.lang | 1 + 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/htdocs/externalsite/frames.php b/htdocs/externalsite/frames.php index 611e84fe9c3..714b7b3e037 100644 --- a/htdocs/externalsite/frames.php +++ b/htdocs/externalsite/frames.php @@ -22,7 +22,8 @@ * \brief Page that build two frames: One for menu, the other for the target page to show * Usage: * mydomain.com/externalsite/frames.php to show URL set into setup - * mydomain.com/externalsite/frames.php?keyforcontent to show content defined into conf->global->$keyforcontent + * mydomain.com/externalsite/frames.php?keyforcontent=EXTERNAL_SITE_CONTENT_abc to show html text defined into $conf->global->EXTERNAL_SITE_CONTENT_abc + * mydomain.com/externalsite/frames.php?keyforcontent=EXTERNAL_SITE_URL_abc to show URL defined into $conf->global->EXTERNAL_SITE_URL_abc */ require '../main.inc.php'; @@ -56,10 +57,11 @@ if (! empty($keyforcontent)) print '
'; - if (! preg_match('/EXTERNAL_SITE_CONTENT_/', $keyforcontent)) + if (! preg_match('/EXTERNAL_SITE_CONTENT_/', $keyforcontent) + && ! preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) { $langs->load("errors"); - print $langs->trans("Variablekeyforcontentmustbenamed", 'EXTERNAL_SITE_CONTENT_'); + print $langs->trans("ErrorVariableKeyForContentMustBeSet", 'EXTERNAL_SITE_CONTENT_'.$keyforcontent, 'EXTERNAL_SITE_URL_'.$keyforcontent); } else if (empty($conf->global->$keyforcontent)) { @@ -68,7 +70,44 @@ if (! empty($keyforcontent)) } else { - print $conf->global->$keyforcontent; + if (preg_match('/EXTERNAL_SITE_CONTENT_/', $keyforcontent)) + { + print $conf->global->$keyforcontent; + } + elseif (preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) + { + print " + + + Dolibarr frame for external web site + + + global->MAIN_MENU_INVERT)?"rows":"cols")."=\"".$heightforframes.",*\" border=0 framespacing=0 frameborder=0> + + "; + print ''; + print " + + <body> + + </body> + + + + + <body> + <br><div class=\"center\"> + Sorry, your browser is too old or not correctly configured to view this area.<br> + Your browser must support frames.<br> + </div> + </body> + + + + "; + } } print '
'; diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 4bb9fcf2dec..79da7ef45f8 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -213,6 +213,7 @@ ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using virtual prod ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use ErrorDuringChartLoad=Error when loading chart of account. If few accounts were not loaded, you can still enter them manually. +ErrorVariableKeyForContentMustBeSet=Error, the constant with name %s (with text content to show) or %s (with external url to show) must be set. # Warnings WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined From bdb42953793c6356b51e0c6bb099ed925fe9f52b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 18:24:05 +0100 Subject: [PATCH 043/307] Fix menu editor --- htdocs/admin/menus/edit.php | 41 +++++++++++++++++----------------- htdocs/externalsite/frames.php | 6 ++--- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index 21a085257b8..b16e9047b26 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -288,10 +288,13 @@ if ($action == 'create') { jQuery("#menuId").prop("disabled", true); jQuery("#menuId").val(\'\'); + jQuery("#propertymainmenu").removeAttr("disabled"); + jQuery("#propertymainmenu").val(\'\'); } - else + if (jQuery("#topleft").val() == \'left\') { jQuery("#menuId").removeAttr("disabled"); + jQuery("#propertymainmenu").prop("disabled", true); } } init_topleft(); @@ -365,14 +368,7 @@ if ($action == 'create') // Mainmenu code print ''.$langs->trans('MainMenuCode').''; - /*if ($parent_rowid) - { - print ''.$parent_rowid.''; - } - else - {*/ - print ''; - //} + print ''; print ''; print $langs->trans("Example").': mytopmenukey'; print ''; @@ -468,18 +464,21 @@ elseif ($action == 'edit') print ''.$langs->trans('Type').''.$langs->trans(ucfirst($menu->type)).''.$langs->trans('DetailType').''; // Mainmenu code - print ''.$langs->trans('MainMenuCode').''; - /*if ($parent_rowid) - { - print ''.$parent_rowid.''; - } - else - {*/ - print 'mainmenu).'">'; - //} - print ''; - print $langs->trans("Example").': mytopmenukey'; - print ''; + if ($menu->type == 'top') + { + print ''.$langs->trans('MainMenuCode').''; + /*if ($parent_rowid) + { + print ''.$parent_rowid.''; + } + else + {*/ + print 'mainmenu).'">'; + //} + print ''; + print $langs->trans("Example").': mytopmenukey'; + print ''; + } // MenuId Parent print ''.$langs->trans('MenuIdParent'); diff --git a/htdocs/externalsite/frames.php b/htdocs/externalsite/frames.php index 714b7b3e037..26e6e65b7a4 100644 --- a/htdocs/externalsite/frames.php +++ b/htdocs/externalsite/frames.php @@ -21,9 +21,9 @@ * \ingroup externalsite * \brief Page that build two frames: One for menu, the other for the target page to show * Usage: - * mydomain.com/externalsite/frames.php to show URL set into setup - * mydomain.com/externalsite/frames.php?keyforcontent=EXTERNAL_SITE_CONTENT_abc to show html text defined into $conf->global->EXTERNAL_SITE_CONTENT_abc - * mydomain.com/externalsite/frames.php?keyforcontent=EXTERNAL_SITE_URL_abc to show URL defined into $conf->global->EXTERNAL_SITE_URL_abc + * /externalsite/frames.php to show URL set into setup + * /externalsite/frames.php?keyforcontent=EXTERNAL_SITE_CONTENT_abc to show html text defined into $conf->global->EXTERNAL_SITE_CONTENT_abc + * /externalsite/frames.php?keyforcontent=EXTERNAL_SITE_URL_abc to show URL defined into $conf->global->EXTERNAL_SITE_URL_abc */ require '../main.inc.php'; From e2a575e54799d2f8da872a8e8f8b725b8ae099b0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 18:44:45 +0100 Subject: [PATCH 044/307] Fix use of external url in iframes --- htdocs/externalsite/frames.php | 4 ++-- htdocs/langs/en_US/errors.lang | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/externalsite/frames.php b/htdocs/externalsite/frames.php index 26e6e65b7a4..ab26b74b3b2 100644 --- a/htdocs/externalsite/frames.php +++ b/htdocs/externalsite/frames.php @@ -61,12 +61,12 @@ if (! empty($keyforcontent)) && ! preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) { $langs->load("errors"); - print $langs->trans("ErrorVariableKeyForContentMustBeSet", 'EXTERNAL_SITE_CONTENT_'.$keyforcontent, 'EXTERNAL_SITE_URL_'.$keyforcontent); + print $langs->trans("ErrorBadSyntaxForParamKeyForContent", 'EXTERNAL_SITE_CONTENT_', 'EXTERNAL_SITE_URL_'); } else if (empty($conf->global->$keyforcontent)) { $langs->load("errors"); - print $langs->trans("ErrorNoContentDefinedIntoVar", $keyforcontent); + print $langs->trans("ErrorVariableKeyForContentMustBeSet", 'EXTERNAL_SITE_CONTENT_'.$keyforcontent, 'EXTERNAL_SITE_URL_'.$keyforcontent); } else { diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 79da7ef45f8..cb183d12ce2 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -213,6 +213,7 @@ ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using virtual prod ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use ErrorDuringChartLoad=Error when loading chart of account. If few accounts were not loaded, you can still enter them manually. +ErrorBadSyntaxForParamKeyForContent=Bad syntax for param keyforcontent. Must have a value starting with %s or %s ErrorVariableKeyForContentMustBeSet=Error, the constant with name %s (with text content to show) or %s (with external url to show) must be set. # Warnings WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. From 3c8aa38bf7e71b4b4f0091035977832748c6553b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Dec 2018 19:06:34 +0100 Subject: [PATCH 045/307] Fix use iframe to embed content --- htdocs/externalsite/frames.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/externalsite/frames.php b/htdocs/externalsite/frames.php index ab26b74b3b2..c7f92142381 100644 --- a/htdocs/externalsite/frames.php +++ b/htdocs/externalsite/frames.php @@ -76,7 +76,7 @@ if (! empty($keyforcontent)) } elseif (preg_match('/EXTERNAL_SITE_URL_/', $keyforcontent)) { - print " + /*print " Dolibarr frame for external web site @@ -106,7 +106,8 @@ if (! empty($keyforcontent)) - "; + ";*/ + print ''; } } From a107d16338d3d5c2d0710832d037eb26952563ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 09:52:00 +0100 Subject: [PATCH 046/307] Revert "clean and update code" This reverts commit 68de0ba93b0a0efc86640c7d08540b7dfe7bd014. --- htdocs/comm/mailing/cibles.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php index 57d6adc1ba9..cc920e3d124 100644 --- a/htdocs/comm/mailing/cibles.php +++ b/htdocs/comm/mailing/cibles.php @@ -329,14 +329,16 @@ if ($object->fetch($id) >= 0) // Si le module mailing est qualifie if ($qualified) { + $var = ! $var; + if ($allowaddtarget) { - print '
'; + print ''; print ''; } else { - print '
'; + print '
'; } print '
'; From 4aff0b6471752cd753587dd5f9c89f29f8203a11 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 10:52:59 +0100 Subject: [PATCH 047/307] Fix opensurvey --- htdocs/opensurvey/results.php | 16 +++++++++------- htdocs/public/opensurvey/studs.php | 9 ++++++--- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index f3fd135f16d..34945504943 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -1050,18 +1050,20 @@ $toutsujet = explode(",", $object->sujet); // With old versions, this field was $compteursujet = 0; $meilleursujet = ''; -for ($i = 0; $i < $nbcolonnes; $i++) { - if (isset($sumfor[$i]) === true && isset($meilleurecolonne) === true && $sumfor[$i] == $meilleurecolonne) { +for ($i = 0; $i < $nbcolonnes; $i++) +{ + if (isset($sumfor[$i]) === true && isset($meilleurecolonne) === true && $sumfor[$i] == $meilleurecolonne) + { $meilleursujet.=", "; if ($object->format == "D") { $meilleursujetexport = $toutsujet[$i]; - + //var_dump($toutsujet); if (strpos($toutsujet[$i], '@') !== false) { $toutsujetdate = explode("@", $toutsujet[$i]); - $meilleursujet .= dol_print_date($toutsujetdate[0],'daytext'). ' ('.dol_print_date($toutsujetdate[0],'%A').')' . ' - ' . $toutsujetdate[1]; + $meilleursujet .= dol_print_date($toutsujetdate[0],'daytext'). ($toutsujetdate[0] ? ' ('.dol_print_date($toutsujetdate[0],'%A').')' : '') . ' - ' . $toutsujetdate[1]; } else { - $meilleursujet .= dol_print_date($toutsujet[$i],'daytext'). ' ('.dol_print_date($toutsujet[$i],'%A').')'; + $meilleursujet .= dol_print_date($toutsujet[$i],'daytext'). ($toutsujet[$i] ? ' ('.dol_print_date($toutsujet[$i],'%A').')' : ''); } } else @@ -1083,9 +1085,9 @@ if ($nbofcheckbox >= 2) print '

'."\n"; if (isset($meilleurecolonne) && $compteursujet == "1") { - print " " . $langs->trans('TheBestChoice') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne."" . $vote_str . ".\n"; + print " " . $langs->trans('TheBestChoice') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne." " . $vote_str . ".\n"; } elseif (isset($meilleurecolonne)) { - print " " . $langs->trans('TheBestChoices') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne."" . $vote_str . ".\n"; + print " " . $langs->trans('TheBestChoices') . ": ".$meilleursujet." " . $langs->trans("with") . " ".$meilleurecolonne." " . $vote_str . ".\n"; } print '


'."\n"; } diff --git a/htdocs/public/opensurvey/studs.php b/htdocs/public/opensurvey/studs.php index a9bd8a0fb70..acf986bb226 100644 --- a/htdocs/public/opensurvey/studs.php +++ b/htdocs/public/opensurvey/studs.php @@ -95,7 +95,7 @@ if (GETPOST('ajoutcomment','alpha')) } // Add vote -if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // boutonp for chrom, boutonp_x for firefox +if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // boutonp for chrome, boutonp_x for firefox { if (!$canbemodified) accessforbidden(); @@ -160,9 +160,12 @@ if (GETPOST("boutonp") || GETPOST("boutonp.x") || GETPOST("boutonp_x")) // bout if ($email) { include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $body = $langs->trans('EmailSomeoneVoted', $nom, getUrlSondage($numsondage, true)); + $application = ($conf->global->MAIN_APPLICATION_TITLE ? $conf->global->MAIN_APPLICATION_TITLE : 'Dolibarr ERP/CRM'); - $cmailfile=new CMailFile("[".MAIN_APPLICATION_TITLE."] ".$langs->trans("Poll").': '.$object->titre, $email, $conf->global->MAIN_MAIL_EMAIL_FROM, $body); + $body = str_replace('\n', '
', $langs->transnoentities('EmailSomeoneVoted', $nom, getUrlSondage($numsondage, true))); + //var_dump($body);exit; + + $cmailfile=new CMailFile("[".$application."] ".$langs->trans("Poll").': '.$object->titre, $email, $conf->global->MAIN_MAIL_EMAIL_FROM, $body, null, null, null, '', '', 0, -1); $result=$cmailfile->sendfile(); } } From 4a61c1b6ed3643b4c87dec1e3710f1ae107e014f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 13:25:09 +0100 Subject: [PATCH 048/307] FIX lang not loaded --- htdocs/comm/propal/list.php | 2 +- htdocs/compta/facture/list.php | 4 ++-- htdocs/contact/list.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 980615828a5..e48175bf148 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -45,7 +45,7 @@ require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; // Load translation files required by the page -$langs->loadLangs(array('companies','propal','compta','bills','orders','products','deliveries')); +$langs->loadLangs(array('companies', 'propal', 'compta', 'bills', 'orders', 'products', 'deliveries', 'categories')); $socid=GETPOST('socid','int'); diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 8e4ddc2a3eb..3bec9bbebcb 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -50,7 +50,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; // Load translation files required by the page -$langs->loadLangs(array('bills', 'companies', 'products')); +$langs->loadLangs(array('bills', 'companies', 'products', 'categories')); $sall=trim((GETPOST('search_all', 'alphanohtml')!='')?GETPOST('search_all', 'alphanohtml'):GETPOST('sall', 'alphanohtml')); $projectid=(GETPOST('projectid')?GETPOST('projectid','int'):0); @@ -910,7 +910,7 @@ if ($resql) $projectstatic=new Project($db); $discount = new DiscountAbsolute($db); - + if ($num > 0) { $i=0; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index 841fb9d0c3a..905b2a680b0 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -36,7 +36,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Load translation files required by the page -$langs->loadLangs(array("companies", "suppliers")); +$langs->loadLangs(array("companies", "suppliers", "categories")); $action=GETPOST('action','alpha'); $massaction=GETPOST('massaction','alpha'); From d1eed144889d2a60be57eecfdd027738ee33f504 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Tue, 11 Dec 2018 13:25:33 +0100 Subject: [PATCH 049/307] FIX: #10218 Bad redirection after deleting a user or group --- htdocs/user/card.php | 4 ++-- htdocs/user/group/card.php | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index a7282783166..6dfcf3ae7c0 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -6,7 +6,7 @@ * Copyright (C) 2005-2018 Regis Houssin * Copyright (C) 2005 Lionel Cousteix * Copyright (C) 2011 Herve Prot - * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2012-2018 Juanjo Menent * Copyright (C) 2013 Florian Henry * Copyright (C) 2013-2016 Alexandre Spangaro * Copyright (C) 2015-2017 Jean-François Ferry @@ -152,7 +152,7 @@ if (empty($reshook)) { $langs->load("errors"); setEventMessages($langs->trans("ErrorUserCannotBeDelete"), null, 'errors'); } else { - header("Location: index.php?restore_lastsearch_values=1"); + header("Location: ".DOL_URL_ROOT."/user/list.php?restore_lastsearch_values=1"); exit; } } diff --git a/htdocs/user/group/card.php b/htdocs/user/group/card.php index 47a5a5df9eb..d5f7a5b8570 100644 --- a/htdocs/user/group/card.php +++ b/htdocs/user/group/card.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2017 Regis Houssin * Copyright (C) 2011 Herve Prot * Copyright (C) 2012 Florian Henry + * Copyright (C) 2018 Juanjo Menent * * 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 @@ -110,7 +111,7 @@ if (empty($reshook)) { { $object->fetch($id); $object->delete(); - header("Location: index.php?restore_lastsearch_values=1"); + header("Location: ".DOL_URL_ROOT."/user/group/list.php?restore_lastsearch_values=1"); exit; } else From 250725663d705b0e1cadc3f543b424bd33edfa9f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 13:47:39 +0100 Subject: [PATCH 050/307] FIX Missing generic css --- htdocs/theme/eldy/style.css.php | 8 ++++++++ htdocs/theme/md/style.css.php | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 05fd488e948..4a36fa4a197 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1823,6 +1823,14 @@ foreach($mainmenuusedarray as $val) print "}\n"; } } +$j=0; +while ($j++ < 4) +{ + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$j."_over.png",1); + print "div.mainmenu.generic".$j." {\n"; + print " background-image: url(".$url.");\n"; + print "}\n"; +} // End of part to add more div class css ?> diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3422135628c..7e4d8ec11d2 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1828,6 +1828,14 @@ foreach($mainmenuusedarray as $val) print "}\n"; } } +$j=0; +while ($j++ < 4) +{ + $url=dol_buildpath($path.'/theme/'.$theme.'/img/menus/generic'.$j."_over.png",1); + print "div.mainmenu.generic".$j." {\n"; + print " background-image: url(".$url.");\n"; + print "}\n"; +} // End of part to add more div class css ?> From 98c14efa78ef9e1c8fdc3629dbd6d9835cae8cfd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Dec 2018 14:10:20 +0100 Subject: [PATCH 051/307] Fix missing picto --- htdocs/theme/md/img/menus/generic1.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic1_over.png | Bin 0 -> 486 bytes htdocs/theme/md/img/menus/generic2.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic2_over.png | Bin 0 -> 548 bytes htdocs/theme/md/img/menus/generic3.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic3_over.png | Bin 0 -> 486 bytes htdocs/theme/md/img/menus/generic4.png | Bin 133 -> 570 bytes htdocs/theme/md/img/menus/generic4_over.png | Bin 0 -> 486 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 htdocs/theme/md/img/menus/generic1_over.png create mode 100644 htdocs/theme/md/img/menus/generic2_over.png create mode 100644 htdocs/theme/md/img/menus/generic3_over.png create mode 100644 htdocs/theme/md/img/menus/generic4_over.png diff --git a/htdocs/theme/md/img/menus/generic1.png b/htdocs/theme/md/img/menus/generic1.png index b51ce3ed95a437af48d672cb4b8494807587c080..39f808bed32f27c7d591d2e68e170ee96468356b 100644 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?`XeJfkzEgKWroxlsyxRP*3bOO7PRLHVh5B4-HKdZBWO-EYDbZd43|BdSh)=a+78s?*nvSYh+ zU}C;r_LJ=m#t*JspB8eYAv1UOst3<6w%?Jr``y57dsb_9$Bcwvmpqr0XqTk6}LjodY}Ekti%cR>yn?%_pxT%nIX%f*6>cC^FE{avej=wKQ5T|;QOML@*NQhbFNQ4 z%Ovl}R%N=6&8<;SS2<+gW__moeV>+2J8AoU%F7emC4b5vbQIsgZ7L84igiy{KbLh* G2~7Z_uj}Ff literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1A5Ry@5R21q&u~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic1_over.png b/htdocs/theme/md/img/menus/generic1_over.png new file mode 100644 index 0000000000000000000000000000000000000000..adfa8c1599b9c2b74e15d0b86e5cba6dfbe8587a GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?if!v#l>^8Umr0u{387!;VsMgq7~=$b(UP6Ti&X<-Ic9C+F;Y{zHhH(ZWm89 z3enS95<2PAi4Rh%W-jU7DjcHrP2JRVZR673pv%RM+l|9#&F@dre(}3~uc2+(y|q>o zSN=@hJ%Ks=`L^vZfBl~OUQ71gLp0RRbAQf+%&Ag!oIW1&b8c-9S29YA>}TFO(=_0c za_q<6wLg6p+6d2FexA>UH^(@QHU6@+edKJh%=KRtd(-Qty!`N==O6Q5>Ds50%W@q- OG34p$=d#Wzp$PyNUC@aD literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/menus/generic2.png b/htdocs/theme/md/img/menus/generic2.png index b51ce3ed95a437af48d672cb4b8494807587c080..f4dfc5f360a87341fd9e6a59f10bc733c68028ee 100644 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?&`c`6eW&h%Oob=M$&=N7_nyQF`MYFDKH7{u|d1teJeDHOzV1N9zqM z4n`>NXMA%dQ{Ijt+067mm&j|Ef2Y5-*|JPJP<7%+vEws?slG9?#~Vd9FdWgDWXE>t zz{GsL>?hkBj2~RNJ}u-(LuT&mRS%wDY`-IK_q&1F_N>WTt$*DX8t25R&EpBcJeij|| z+0P6F^*;N7S&0+s*Cjuj?_K+O=Y2-;WvkzWeq1o^!S_Wg~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic2_over.png b/htdocs/theme/md/img/menus/generic2_over.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e58fc222091713ae13ff57f13fef53b96a4511 GIT binary patch literal 548 zcmV+<0^9wGP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UbDk&Ws2E00E>)L_t(o!|j>dO~Wu0hQ9z(ctC0e0}#XjWCOYZY*5&s8_*398)SsC zLD?YPpnV2J5lH2JcsZ3Kgo>RwH|irDwY3`iv;F(G>jol1TVsP3hlj5#wo0nE3&i?< zs@W*`o@S&O1093sCcqpRYp2G!J0~JG*%OgOMCRf)QV|)5NY{oZu&~Mm=$9?%k4V-H`#&hw(Pdav@NjFJB>LX}>qKPkgMI`gT3 mU;4Tz(s%A_P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2i^=8 z0UsIsk^a;G00Fv5L_t(o!|jQgSZP0byDzW z=znlk2M2#a9qg*8pt#sU1S<#%R*Q?Z9tY2GDPnWm+qP#`_J%zKlE8Y%#B)LBFqKVQ9mjzb zumHp?l0F8~z>#k*Yvi|pGvL(MmQ=)mX>FUT;OEhY+#f#sfCD|vDw~LyU{geHL}Xh; zVuoXaVnsyKI*-v9Q_X+thFwx*ffL{yxCIJTNM%GZ3CsgM+FrE1VM}FBhZHGa+ohHT z4bE@9z_8W_6y+B9Gz*&f|7_G(pQ+H-%CQ?H^PjEyS6Qm#N2(#RY3j^7**Mv>Q|4P* z^G-HSHcmD!^G@?lHcmESkbkaY=ATSE2DxY*1SWv)5Q*Ob7pAN1Rq>#f;P;}bABb2W zoY$4j0v|yJdNsZVMu9FZBUHY#F9L7A@}-u^J@=I9$hR5!AHhKvxC=E9UH||907*qo IM6N<$f;5xuNdN!< literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1A5Ry@5R21q&u~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic3_over.png b/htdocs/theme/md/img/menus/generic3_over.png new file mode 100644 index 0000000000000000000000000000000000000000..0672d20bce4bb1776f71dc8038e32a8382f5ae87 GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?5iL3@)IZ1~;#a?Jzp;5@B{K!=^C8I!mt3EpOG_?#fmmZLn!}-?!H?w~Hql zh3M%l37z!m#0RNWGne#k6%JARrfzDwwsC21(B)#s?Z)A==JzLQzxdt0*U+}?-dd}P zD}Sc$p1>UbeB1VyzkbhsuO)l$AsTAuxj$z@=2WRVP9Kl?Ik&clD;cFl_A_stX&P`z zIrd}k+MhlPZG>koKhI~wn`4~D8h=^ZK618L=K8OSz3FvRUViw`^N;zjbnVm0Wx0-^ O81i)Wb6Mw<&;$S`U(e_O literal 0 HcmV?d00001 diff --git a/htdocs/theme/md/img/menus/generic4.png b/htdocs/theme/md/img/menus/generic4.png index b51ce3ed95a437af48d672cb4b8494807587c080..5f9240240da3f037ca1918367f6b6489b972c260 100644 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?&`c`6eW&h%Oob=M$&=N7_nyQF`MYFDKH7{u|d1teJeDHOzV1N9zqM z4n`>NXMA%dQ{Ijt+067mm&j|Ef2Y5-*|JPJP<7%+vEws?slG9?#~Vd9FdWgDWXE>t zz{GsL>?hkBj2~RNJ}u-(LuT&mRS%wDY`-IK_q&1F_N>WTt$*DX8t25R&EpBcJeij|| z+0P6F^*;N7S&0+s*Cjuj?_K+O=Y2-;WvkzWeq1o^!S_Wg~5;q+UmdnXs1e(j>>FVdQ&MBb@07N}3VE_OC diff --git a/htdocs/theme/md/img/menus/generic4_over.png b/htdocs/theme/md/img/menus/generic4_over.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4d7b1acce5db322cde66f1e2fad71876449e3f GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^`arDB!3HE>Y`eG%NHG=%xjQkeJ16rJ$YD$Jc6R~N zK=9LfcRi5eEbxddW?5iL3@)IZ1~;#a?Jzp;5@B{K!=^C8I!mt3EpOG_?#fmmZLn!}-?!H?w~Hql zh3M%l37z!m#0RNWGne#k6%JARrfzDwwsC21(B)#s?Z)A==JzLQzxdt0*U+}?-dd}P zD}Sc$p1>UbeB1VyzkbhsuO)l$AsTAuxj$z@=2WRVP9Kl?Ik&clD;cFl_A_stX&P`z zIrd}k+MhlPZG>koKhI~wn`4~D8h=^ZK618L=K8OSz3FvRUViw`^N;zjbnVm0Wx0-^ O81i)Wb6Mw<&;$Tu*w1GG literal 0 HcmV?d00001 From 13f54766781cd961651a0d0314249ba69d75c71f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 11:50:10 +0100 Subject: [PATCH 052/307] Responsive --- htdocs/admin/mails_templates.php | 82 ++++++++++++++++---------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index a9068544e35..79614cbd3a0 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -448,8 +448,6 @@ $sql.=$db->plimit($listlimit+1,$offset); $fieldlist=explode(',',$tabfield[$id]); // Form to add a new line -$alabelisused=0; - print ''; print ''; print ''; @@ -461,38 +459,37 @@ print ''; print ''; foreach ($fieldlist as $field => $value) { - // Determine le nom du champ par rapport aux noms possibles - // dans les dictionnaires de donnees - $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut - $valuetoshow=$langs->trans($valuetoshow); // try to translate - $align="left"; - if ($fieldlist[$field]=='fk_user') { $valuetoshow=$langs->trans("Owner");} - if ($fieldlist[$field]=='lang') { $valuetoshow=(empty($conf->global->MAIN_MULTILANGS) ? ' ' : $langs->trans("Language")); } - if ($fieldlist[$field]=='type') { $valuetoshow=$langs->trans("Type"); } - if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); } - if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') { $valuetoshow=$langs->trans("Code"); } - if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } - if ($fieldlist[$field]=='private') { $align='center'; } - if ($fieldlist[$field]=='position') { $align='center'; } + // Determine le nom du champ par rapport aux noms possibles + // dans les dictionnaires de donnees + $valuetoshow=ucfirst($fieldlist[$field]); // Par defaut + $valuetoshow=$langs->trans($valuetoshow); // try to translate + $align="left"; + if ($fieldlist[$field]=='fk_user') { $valuetoshow=$langs->trans("Owner");} + if ($fieldlist[$field]=='lang') { $valuetoshow=(empty($conf->global->MAIN_MULTILANGS) ? ' ' : $langs->trans("Language")); } + if ($fieldlist[$field]=='type') { $valuetoshow=$langs->trans("Type"); } + if ($fieldlist[$field]=='code') { $valuetoshow=$langs->trans("Code"); } + if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') { $valuetoshow=$langs->trans("Code"); } + if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } + if ($fieldlist[$field]=='private') { $align='center'; } + if ($fieldlist[$field]=='position') { $align='center'; } - if ($fieldlist[$field]=='topic') { $valuetoshow=''; } - if ($fieldlist[$field]=='joinfiles') { $valuetoshow=''; } - if ($fieldlist[$field]=='content') { $valuetoshow=''; } - if ($fieldlist[$field]=='content_lines') { $valuetoshow=''; } + if ($fieldlist[$field]=='topic') { $valuetoshow=''; } + if ($fieldlist[$field]=='joinfiles') { $valuetoshow=''; } + if ($fieldlist[$field]=='content') { $valuetoshow=''; } + if ($fieldlist[$field]=='content_lines') { $valuetoshow=''; } - if ($valuetoshow != '') - { - print ''; - } - if ($fieldlist[$field]=='libelle' || $fieldlist[$field]=='label') $alabelisused=1; + if ($valuetoshow != '') + { + print ''; + } } print ''; print ""; +// Show fields for topic, join files and body $fieldsforcontent = array('topic', 'joinfiles', 'content'); if (! empty($conf->global->MAIN_EMAIL_TEMPLATES_FOR_OBJECT_LINES)) { $fieldsforcontent = array('content','content_lines'); } foreach ($fieldsforcontent as $tmpfieldlist) @@ -631,11 +629,11 @@ if ($resql) $filterfound=0; foreach ($fieldlist as $field => $value) { - if ($value == 'label') print ''; + if ($value == 'label') print ''; elseif ($value == 'lang') { print ''; } elseif ($value == 'fk_user') @@ -644,13 +642,13 @@ if ($resql) $restrictid=array(); if (! $user->admin) $restrictid=array($user->id); //var_dump($restrictid); - print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, 'hierarchyme', null, 0, 0, 1, '', 0, '', 'maxwidth200'); + print $form->select_dolusers($search_fk_user, 'search_fk_user', 1, null, 0, 'hierarchyme', null, 0, 0, 1, '', 0, '', 'maxwidth100'); print ''; } elseif ($value == 'topic') print ''; elseif ($value == 'type_template') { - print ''; + print ''; } elseif (! in_array($value, array('content', 'content_lines'))) print ''; } @@ -672,6 +670,7 @@ if ($resql) $align="left"; $sortable=1; $valuetoshow=''; + $forcenowrap=1; /* $tmparray=getLabelOfField($fieldlist[$field]); $showfield=$tmp['showfield']; @@ -689,7 +688,7 @@ if ($resql) if ($fieldlist[$field]=='private') { $align='center'; } if ($fieldlist[$field]=='position') { $align='center'; } - if ($fieldlist[$field]=='joinfiles') { $valuetoshow=$langs->trans("FilesAttachedToEmail"); $align='center'; } + if ($fieldlist[$field]=='joinfiles') { $valuetoshow=$langs->trans("FilesAttachedToEmail"); $align='center'; $forcenowrap=0; } if ($fieldlist[$field]=='content') { $valuetoshow=$langs->trans("Content"); $showfield=0;} if ($fieldlist[$field]=='content_lines') { $valuetoshow=$langs->trans("ContentLines"); $showfield=0; } @@ -698,8 +697,8 @@ if ($resql) { if (! empty($tabhelp[$id][$value])) { - if (in_array($value, array('topic'))) $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, 'tooltip'.$value); // Tooltip on click - else $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, '', 1); // Tooltip on hover + if (in_array($value, array('topic'))) $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, 'tooltip'.$value, $forcenowrap); // Tooltip on click + else $valuetoshow = $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, '', $forcenowrap); // Tooltip on hover } print getTitleFieldOfList($valuetoshow, 0, $_SERVER["PHP_SELF"], ($sortable?$fieldlist[$field]:''), ($page?'page='.$page.'&':''), $param, "align=".$align, $sortfield, $sortorder); } @@ -1024,17 +1023,18 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='') } else { - print $form->selectarray('type_template', $elementList, (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''), 1, 0, 0, '', 0, 0, 0, '', 'maxwidth200'); + print $form->selectarray('type_template', $elementList, (! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''), 1, 0, 0, '', 0, 0, 0, '', 'maxwidth150 maxwidth100onsmartphone'); } print ''; } - elseif ($context == 'add' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; + elseif ($context == 'add' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; elseif ($context == 'edit' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; elseif ($context == 'hide' && in_array($fieldlist[$field], array('topic', 'joinfiles', 'content', 'content_lines'))) continue; else { $size=''; $class=''; $classtd=''; if ($fieldlist[$field]=='code') $class='maxwidth100'; + if ($fieldlist[$field]=='label') $class='maxwidth100'; if ($fieldlist[$field]=='private') { $class='maxwidth50'; $classtd='center'; } if ($fieldlist[$field]=='position') { $class='maxwidth50'; $classtd='center'; } if ($fieldlist[$field]=='libelle') $class='quatrevingtpercent'; From 22c34bd656f86a1223cf2138385e9ae9d72044be Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Wed, 12 Dec 2018 12:09:07 +0100 Subject: [PATCH 053/307] Fix: MenuBankCash Translation is in english in es_ES --- htdocs/langs/es_ES/banks.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/es_ES/banks.lang b/htdocs/langs/es_ES/banks.lang index 8add13345b2..e5e289f0c4b 100644 --- a/htdocs/langs/es_ES/banks.lang +++ b/htdocs/langs/es_ES/banks.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - banks Bank=Banco -MenuBankCash=Bank | Cash +MenuBankCash=Bancos | Cajas MenuVariousPayment=Pagos varios MenuNewVariousPayment=Nuevo pago varios BankName=Nombre del banco From ad3c679d284cb7c8c0b5fbd2223c50279d7f3bf8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 12:16:57 +0100 Subject: [PATCH 054/307] Fix status in cron task list --- htdocs/cron/list.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index 2ddfbee5e8c..c89cfe1895d 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -230,6 +230,7 @@ $sql.= " t.params,"; $sql.= " t.md5params,"; $sql.= " t.module_name,"; $sql.= " t.priority,"; +$sql.= " t.processing,"; $sql.= " t.datelastrun,"; $sql.= " t.datenextrun,"; $sql.= " t.dateend,"; @@ -418,10 +419,9 @@ print "\n"; if ($num > 0) { // Loop on each job - $style='pair'; $now = dol_now(); $i=0; - $totalarray=array(); + while ($i < min($num,$limit)) { $obj = $db->fetch_object($result); @@ -434,6 +434,7 @@ if ($num > 0) $object->label = $obj->label; $object->status = $obj->status; $object->priority = $obj->priority; + $object->processing = $obj->processing; print ''; From 61503bdaa96151a483ebdf00572b57940fcc2b33 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 12:21:02 +0100 Subject: [PATCH 055/307] Fix picto for status of cron task --- htdocs/cron/class/cronjob.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index df640576d9a..6873bff157e 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -1338,22 +1338,22 @@ class Cronjob extends CommonObject } elseif ($mode == 2) { - if ($status == 1) return img_picto($langs->trans('Enabled'),'statut4','class="pictostatus"').' '.$langs->trans('Enabled').$moretext; + if ($status == 1) return img_picto($langs->trans('Enabled'),'statut'.($processing?'1':'4'),'class="pictostatus"').' '.$langs->trans('Enabled').$moretext; elseif ($status == 0) return img_picto($langs->trans('Disabled'),'statut5','class="pictostatus"').' '.$langs->trans('Disabled').$moretext; } elseif ($mode == 3) { - if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut4','class="pictostatus"'); + if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut'.($processing?'1':'4'),'class="pictostatus"'); elseif ($status == 0) return img_picto($langs->trans('Disabled').$moretext,'statut5','class="pictostatus"'); } elseif ($mode == 4) { - if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut4','class="pictostatus"').' '.$langs->trans('Enabled').$moretext; + if ($status == 1) return img_picto($langs->trans('Enabled').$moretext,'statut'.($processing?'1':'4'),'class="pictostatus"').' '.$langs->trans('Enabled').$moretext; elseif ($status == 0) return img_picto($langs->trans('Disabled').$moretext,'statut5','class="pictostatus"').' '.$langs->trans('Disabled').$moretext; } elseif ($mode == 5) { - if ($status == 1) return $langs->trans('Enabled').$moretext.' '.img_picto($langs->trans('Enabled').$moretext,'statut4','class="pictostatus"'); + if ($status == 1) return $langs->trans('Enabled').$moretext.' '.img_picto($langs->trans('Enabled').$moretext,'statut'.($processing?'1':'4'),'class="pictostatus"'); elseif ($status == 0) return $langs->trans('Disabled').$moretext.' '.img_picto($langs->trans('Disabled').$moretext,'statut5','class="pictostatus"'); } } From 0ecdb0f3bbc93c07b7e7926dfb61b2764d8928d5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 12:54:10 +0100 Subject: [PATCH 056/307] Code comment --- htdocs/install/mysql/tables/llx_links.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_links.sql b/htdocs/install/mysql/tables/llx_links.sql index 4d4ab401ba4..7e9fba8e2c5 100644 --- a/htdocs/install/mysql/tables/llx_links.sql +++ b/htdocs/install/mysql/tables/llx_links.sql @@ -15,7 +15,7 @@ -- along with this program. If not, see . -- -- --- Actions commerciales +-- Table to store external URL links to documents -- ======================================================================== create table llx_links From 446dbb49f6fa5b76939d20ddb17a056e45b324ec Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 13:01:15 +0100 Subject: [PATCH 057/307] Update Dolibarr schema --- dev/resources/dbmodel/dolibarr_schema.mwb | Bin 296494 -> 279274 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dev/resources/dbmodel/dolibarr_schema.mwb b/dev/resources/dbmodel/dolibarr_schema.mwb index aec0f2d22990c878c2492245549c35213b42d7a5..80d1d612d6555a603e2e33aa7782871e618ba5ef 100644 GIT binary patch literal 279274 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 Km|yf*H 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'; print ''; print "\n"; - + $sql = "SELECT *"; $sql.= " FROM "; $sql.= MAIN_DB_PREFIX."pos_cash_fence order by rowid DESC"; @@ -126,7 +125,7 @@ llxHeader(); } else { //no hay } - + print '
'; - if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print ''.$valuetoshow.' '.img_help(1,$valuetoshow).''; - else if (! empty($tabhelp[$id][$value])) - { - if (in_array($value, array('topic'))) print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, $value); // Tooltip on click - else print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2); // Tooltip on hover - } - else print $valuetoshow; - print ''; + if (! empty($tabhelp[$id][$value]) && preg_match('/^http(s*):/i',$tabhelp[$id][$value])) print ''.$valuetoshow.' '.img_help(1,$valuetoshow).''; + else if (! empty($tabhelp[$id][$value])) + { + if (in_array($value, array('topic'))) print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2, $value); // Tooltip on click + else print $form->textwithpicto($valuetoshow, $tabhelp[$id][$value], 1, 'help', '', 0, 2); // Tooltip on hover + } + else print $valuetoshow; + print ''; print ''; @@ -535,6 +532,7 @@ print ''; print '
'; - print $formadmin->select_language($search_lang, 'search_lang', 0, null, 1, 0, 0, 'maxwidth150'); + print $formadmin->select_language($search_lang, 'search_lang', 0, null, 1, 0, 0, 'maxwidth100'); print ''.$form->selectarray('search_type_template', $elementList, $search_type_template, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth200 maxwidth100onsmartphone').''.$form->selectarray('search_type_template', $elementList, $search_type_template, 1, 0, 0, '', 0, 0, 0, '', 'maxwidth100 maxwidth100onsmartphone').'
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

_i6TRN6(6iWUvh0n9v)eslf~S^NX0 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 From a81d7e53380b434a85cbfe660752b9ec47179861 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 13:01:34 +0100 Subject: [PATCH 058/307] Removed deprecated files --- dev/resources/dbmodel/dolibarr.uml | 12 ------- dev/resources/dbmodel/dolibarr.umldi | 53 ---------------------------- 2 files changed, 65 deletions(-) delete mode 100644 dev/resources/dbmodel/dolibarr.uml delete mode 100644 dev/resources/dbmodel/dolibarr.umldi diff --git a/dev/resources/dbmodel/dolibarr.uml b/dev/resources/dbmodel/dolibarr.uml deleted file mode 100644 index 57078d6668b..00000000000 --- a/dev/resources/dbmodel/dolibarr.uml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/dev/resources/dbmodel/dolibarr.umldi b/dev/resources/dbmodel/dolibarr.umldi deleted file mode 100644 index ff97a2a25b1..00000000000 --- a/dev/resources/dbmodel/dolibarr.umldi +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From f48cc46763cdc79fc6165dd879e5ff2345e0d42f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Dec 2018 21:18:55 +0100 Subject: [PATCH 059/307] Update doc schema --- dev/resources/dbmodel/dolibarr_schema.mwb | Bin 279274 -> 280743 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dev/resources/dbmodel/dolibarr_schema.mwb b/dev/resources/dbmodel/dolibarr_schema.mwb index 80d1d612d6555a603e2e33aa7782871e618ba5ef..27bc4ab2403e60425f75595c6c0d4246e88d7653 100644 GIT binary patch literal 280743 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

<&r~Q8PU^Lri1lwU0wkDR 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 literal 279274 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 Km|yf*H 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

q}-vUm~U|1a9Zoj|#fmh-(b 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%0D>6a3QB1ZenaNs=3^2!u0=IFY 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%0D8YcZaaPll``@L2&X9dw!MuX0gfT`=6| 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 Date: Thu, 13 Dec 2018 12:13:28 +0100 Subject: [PATCH 060/307] Fix sort of email templates --- htdocs/admin/mails_templates.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index 79614cbd3a0..40daa521989 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -75,7 +75,7 @@ $offset = $listlimit * $page ; $pageprev = $page - 1; $pagenext = $page + 1; -if (empty($sortfield)) $sortfield='label, lang, position'; +if (empty($sortfield)) $sortfield='type_template, lang, position, label'; if (empty($sortorder)) $sortorder='ASC'; // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context @@ -85,10 +85,6 @@ $hookmanager->initHooks(array('emailtemplates')); $tabname=array(); $tabname[25]= MAIN_DB_PREFIX."c_email_templates"; -// Criteria to sort dictionaries -$tabsqlsort=array(); -$tabsqlsort[25]="label ASC, lang ASC, position ASC"; - // Nom des champs en resultat de select pour affichage du dictionnaire $tabfield=array(); $tabfield[25]= "label,lang,type_template,fk_user,private,position,topic,joinfiles,content"; From 2e57a8be51625f80e8240f1aa0b288abc760834f Mon Sep 17 00:00:00 2001 From: florian HENRY Date: Thu, 13 Dec 2018 12:37:40 +0100 Subject: [PATCH 061/307] better fix --- htdocs/core/class/extrafields.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index ee87426ddcb..8ecae833805 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1928,8 +1928,8 @@ class ExtraFields foreach ($extralabels as $key => $value) { $key_type=$this->attribute_type[$key]; - if (! empty($object->table_element)) { - $key_type=$this->attributes[$extrafieldsobjectkey]['type'][$key]; + if (! empty($object->table_element) && is_array($this->attributes) && array_key_exists($object->table_element, $this->attributes)) { + $key_type=$this->attributes[$object->table_element]['type'][$key]; } if (in_array($key_type,array('date','datetime'))) From 6ad106d14a3b1db17ee3c096e747d48541202474 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Dec 2018 19:56:22 +0100 Subject: [PATCH 062/307] Update fournisseur.facture.class.php --- htdocs/fourn/class/fournisseur.facture.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 1e408c697f7..086f154184d 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -3035,10 +3035,10 @@ class SupplierInvoiceLine extends CommonObjectLine $sql.= " ".$this->product_type.","; $sql.= " ".price2num($this->remise_percent).","; $sql.= " ".price2num($this->subprice).","; - $sql.= " ".!empty($this->qty)?price2num($this->total_ttc/$this->qty):price2num($this->total_ttc).","; + $sql.= " ".(! empty($this->qty)?price2num($this->total_ttc / $this->qty):price2num($this->total_ttc)).","; $sql.= " ".(! empty($this->date_start)?"'".$this->db->idate($this->date_start)."'":"null").","; $sql.= " ".(! empty($this->date_end)?"'".$this->db->idate($this->date_end)."'":"null").","; - $sql.= ' '.(!empty($this->fk_code_ventilation)?$this->fk_code_ventilation:0).','; + $sql.= ' '.(! empty($this->fk_code_ventilation)?$this->fk_code_ventilation:0).','; $sql.= ' '.$this->rang.','; $sql.= ' '.$this->special_code.','; $sql.= " '".$this->db->escape($this->info_bits)."',"; From 7a3ab13196abb475fc654f35e878a25b7b4aac1b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Dec 2018 20:45:51 +0100 Subject: [PATCH 063/307] FIX #10183 using backport of fix done in 9.0 --- htdocs/core/class/extrafields.class.php | 33 ++++++++++++++++--------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 1840f62ca5d..48eabbefe9e 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -1910,24 +1910,36 @@ class ExtraFields /** * return array_options array of data of extrafields value of object sent by a search form * - * @param array $extralabels $array of extrafields (@deprecated) - * @param string $keyprefix Prefix string to add into name and id of field (can be used to avoid duplicate names) - * @param string $keysuffix Suffix string to add into name and id of field (can be used to avoid duplicate names) - * @return array|int array_options set or 0 if no value + * @param array|string $extrafieldsobjectkey array of extrafields (old usage) or value of object->table_element (new usage) + * @param string $keyprefix Prefix string to add into name and id of field (can be used to avoid duplicate names) + * @param string $keysuffix Suffix string to add into name and id of field (can be used to avoid duplicate names) + * @return array|int array_options set or 0 if no value */ - function getOptionalsFromPost($extralabels,$keyprefix='',$keysuffix='') + function getOptionalsFromPost($extrafieldsobjectkey, $keyprefix='', $keysuffix='') { global $_POST; - if (is_array($this->attributes[$object->table_element]['label'])) $extralabels=$this->attributes[$object->table_element]['label']; + if (is_string($extrafieldsobjectkey) && is_array($this->attributes[$extrafieldsobjectkey]['label'])) + { + $extralabels = $this->attributes[$extrafieldsobjectkey]['label']; + } + else + { + $extralabels = $extrafieldsobjectkey; + } - $array_options = array(); if (is_array($extralabels)) { + $array_options = array(); + // Get extra fields foreach ($extralabels as $key => $value) { - $key_type = $this->attributes[$object->table_element]['type'][$key]; + $key_type = ''; + if (is_string($extrafieldsobjectkey)) + { + $key_type = $this->attributes[$extrafieldsobjectkey]['type'][$key]; + } if (in_array($key_type,array('date','datetime'))) { @@ -1956,8 +1968,7 @@ class ExtraFields return $array_options; } - else { - return 0; - } + + return 0; } } From c1ce902f91d15b5b625265726bee4ff6b3100de5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 10:31:09 +0100 Subject: [PATCH 064/307] FIX #9629 #9625 --- htdocs/accountancy/bookkeeping/list.php | 1 - htdocs/core/lib/functions.lib.php | 17 ++++++++++------ htdocs/main.inc.php | 26 +++++++++++++++++++++---- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 5613e42b4c4..c8df00f6cdc 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -641,7 +641,6 @@ if ($num > 0) $object->id = $line->id; $object->piece_num = $line->piece_num; print $object->getNomUrl(1,'',0,'',1); - //print '' . $line->piece_num . ''; print ''; if (! $i) $totalarray['nbfield']++; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9cc9f315e82..e903777211d 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -321,13 +321,18 @@ function GETPOST($paramname, $check='none', $method=0, $filter=null, $options=nu } } } - if (! empty($_SESSION['lastsearch_contextpage_'.$relativepathstring])) // If there is saved contextpage + // If there is saved contextpage, page or limit + if ($paramname == 'contextpage' && ! empty($_SESSION['lastsearch_contextpage_'.$relativepathstring])) { - if ($paramname == 'contextpage') - { - $out = $_SESSION['lastsearch_contextpage_'.$relativepathstring]; - //var_dump($paramname.' '.$out); - } + $out = $_SESSION['lastsearch_contextpage_'.$relativepathstring]; + } + elseif ($paramname == 'page' && ! empty($_SESSION['lastsearch_page_'.$relativepathstring])) + { + $out = $_SESSION['lastsearch_page_'.$relativepathstring]; + } + elseif ($paramname == 'limit' && ! empty($_SESSION['lastsearch_limit_'.$relativepathstring])) + { + $out = $_SESSION['lastsearch_limit_'.$relativepathstring]; } } // Else, retreive default values if we are not doing a sort diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 0f2f8af452e..2579b870bcd 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -732,18 +732,27 @@ if (! defined('NOLOGIN')) $relativepathstring = preg_replace('/^custom\//', '', $relativepathstring); //var_dump($relativepathstring); - // We click on a link that leave a page we have to save search criteria. We save them from tmp to no tmp + // We click on a link that leave a page we have to save search criteria, contextpage, limit and page. We save them from tmp to no tmp if (! empty($_SESSION['lastsearch_values_tmp_'.$relativepathstring])) { $_SESSION['lastsearch_values_'.$relativepathstring]=$_SESSION['lastsearch_values_tmp_'.$relativepathstring]; unset($_SESSION['lastsearch_values_tmp_'.$relativepathstring]); } - // We also save contextpage if (! empty($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring])) { $_SESSION['lastsearch_contextpage_'.$relativepathstring]=$_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]; unset($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]); } + if (! empty($_SESSION['lastsearch_page_tmp_'.$relativepathstring]) && $_SESSION['lastsearch_page_tmp_'.$relativepathstring] > 1) + { + $_SESSION['lastsearch_page_'.$relativepathstring]=$_SESSION['lastsearch_page_tmp_'.$relativepathstring]; + unset($_SESSION['lastsearch_page_tmp_'.$relativepathstring]); + } + if (! empty($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]) && $_SESSION['lastsearch_limit_tmp_'.$relativepathstring] != $conf->liste_limit) + { + $_SESSION['lastsearch_limit_'.$relativepathstring]=$_SESSION['lastsearch_limit_tmp_'.$relativepathstring]; + unset($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]); + } } $action = ''; @@ -1967,7 +1976,8 @@ if (! function_exists("llxFooter")) function llxFooter($comment='',$zone='private', $disabledoutputofmessages=0) { global $conf, $langs, $user, $object; - global $delayedhtmlcontent, $contextpage; + global $delayedhtmlcontent; + global $contextpage, $page, $limit; $ext='layout='.$conf->browser->layout.'&version='.urlencode(DOL_VERSION); @@ -2002,8 +2012,16 @@ if (! function_exists("llxFooter")) if (preg_match('/list\.php$/', $relativepathstring)) { unset($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]); - if (! empty($contextpage)) $_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]=$contextpage; + unset($_SESSION['lastsearch_page_tmp_'.$relativepathstring]); + unset($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]); + + if (! empty($contextpage)) $_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]=$contextpage; + if (! empty($page) && $page > 1) $_SESSION['lastsearch_page_tmp_'.$relativepathstring]=$page; + if (! empty($limit) && $limit != $conf->limit) $_SESSION['lastsearch_limit_tmp_'.$relativepathstring]=$limit; + unset($_SESSION['lastsearch_contextpage_'.$relativepathstring]); + unset($_SESSION['lastsearch_page_'.$relativepathstring]); + unset($_SESSION['lastsearch_limit_'.$relativepathstring]); } // Core error message From 539e2c55cdc4245514bfd6eca1469372c5126772 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Dec 2018 10:31:09 +0100 Subject: [PATCH 065/307] FIX #9629 #9625 --- htdocs/accountancy/bookkeeping/list.php | 1 - htdocs/core/lib/functions.lib.php | 17 ++++++++++------ htdocs/main.inc.php | 26 +++++++++++++++++++++---- 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index b0a91f7ce36..476df6d3cab 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -621,7 +621,6 @@ if ($num > 0) $object->id = $line->id; $object->piece_num = $line->piece_num; print $object->getNomUrl(1,'',0,'',1); - //print '' . $line->piece_num . ''; print ''; if (! $i) $totalarray['nbfield']++; } diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 90167504f3f..b9685a043d0 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -321,13 +321,18 @@ function GETPOST($paramname, $check='none', $method=0, $filter=null, $options=nu } } } - if (! empty($_SESSION['lastsearch_contextpage_'.$relativepathstring])) // If there is saved contextpage + // If there is saved contextpage, page or limit + if ($paramname == 'contextpage' && ! empty($_SESSION['lastsearch_contextpage_'.$relativepathstring])) { - if ($paramname == 'contextpage') - { - $out = $_SESSION['lastsearch_contextpage_'.$relativepathstring]; - //var_dump($paramname.' '.$out); - } + $out = $_SESSION['lastsearch_contextpage_'.$relativepathstring]; + } + elseif ($paramname == 'page' && ! empty($_SESSION['lastsearch_page_'.$relativepathstring])) + { + $out = $_SESSION['lastsearch_page_'.$relativepathstring]; + } + elseif ($paramname == 'limit' && ! empty($_SESSION['lastsearch_limit_'.$relativepathstring])) + { + $out = $_SESSION['lastsearch_limit_'.$relativepathstring]; } } // Else, retreive default values if we are not doing a sort diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 826f83356c4..0e586e6f4a4 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -723,18 +723,27 @@ if (! defined('NOLOGIN')) $relativepathstring = preg_replace('/^custom\//', '', $relativepathstring); //var_dump($relativepathstring); - // We click on a link that leave a page we have to save search criteria. We save them from tmp to no tmp + // We click on a link that leave a page we have to save search criteria, contextpage, limit and page. We save them from tmp to no tmp if (! empty($_SESSION['lastsearch_values_tmp_'.$relativepathstring])) { $_SESSION['lastsearch_values_'.$relativepathstring]=$_SESSION['lastsearch_values_tmp_'.$relativepathstring]; unset($_SESSION['lastsearch_values_tmp_'.$relativepathstring]); } - // We also save contextpage if (! empty($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring])) { $_SESSION['lastsearch_contextpage_'.$relativepathstring]=$_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]; unset($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]); } + if (! empty($_SESSION['lastsearch_page_tmp_'.$relativepathstring]) && $_SESSION['lastsearch_page_tmp_'.$relativepathstring] > 1) + { + $_SESSION['lastsearch_page_'.$relativepathstring]=$_SESSION['lastsearch_page_tmp_'.$relativepathstring]; + unset($_SESSION['lastsearch_page_tmp_'.$relativepathstring]); + } + if (! empty($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]) && $_SESSION['lastsearch_limit_tmp_'.$relativepathstring] != $conf->liste_limit) + { + $_SESSION['lastsearch_limit_'.$relativepathstring]=$_SESSION['lastsearch_limit_tmp_'.$relativepathstring]; + unset($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]); + } } $action = ''; @@ -1951,7 +1960,8 @@ if (! function_exists("llxFooter")) function llxFooter($comment='',$zone='private', $disabledoutputofmessages=0) { global $conf, $langs, $user, $object; - global $delayedhtmlcontent, $contextpage; + global $delayedhtmlcontent; + global $contextpage, $page, $limit; $ext='layout='.$conf->browser->layout.'&version='.urlencode(DOL_VERSION); @@ -1986,8 +1996,16 @@ if (! function_exists("llxFooter")) if (preg_match('/list\.php$/', $relativepathstring)) { unset($_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]); - if (! empty($contextpage)) $_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]=$contextpage; + unset($_SESSION['lastsearch_page_tmp_'.$relativepathstring]); + unset($_SESSION['lastsearch_limit_tmp_'.$relativepathstring]); + + if (! empty($contextpage)) $_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring]=$contextpage; + if (! empty($page) && $page > 1) $_SESSION['lastsearch_page_tmp_'.$relativepathstring]=$page; + if (! empty($limit) && $limit != $conf->limit) $_SESSION['lastsearch_limit_tmp_'.$relativepathstring]=$limit; + unset($_SESSION['lastsearch_contextpage_'.$relativepathstring]); + unset($_SESSION['lastsearch_page_'.$relativepathstring]); + unset($_SESSION['lastsearch_limit_'.$relativepathstring]); } // Core error message From 37daface196feb545a13a7ddcbded2d8fe915155 Mon Sep 17 00:00:00 2001 From: PMickael Date: Fri, 14 Dec 2018 16:17:25 +0100 Subject: [PATCH 066/307] [Accounting][VAT] Fix balance should be based on period [Accounting][VAT] Fix balance should be based on period --- htdocs/compta/tva/index.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php index 7c4912411f6..2fdd1591ead 100644 --- a/htdocs/compta/tva/index.php +++ b/htdocs/compta/tva/index.php @@ -561,12 +561,11 @@ if (! empty($conf->global->MAIN_FEATURES_LEVEL)) print load_fiche_titre($langs->trans("VATBalance"), '', ''); // need to add translation - $sql1 = "SELECT SUM(amount) as mm, date_format(f.datev,'%Y') as dm"; + $sql1 = "SELECT SUM(amount) as mm"; $sql1 .= " FROM " . MAIN_DB_PREFIX . "tva as f"; $sql1 .= " WHERE f.entity = " . $conf->entity; $sql1 .= " AND f.datev >= '" . $db->idate($date_start) . "'"; $sql1 .= " AND f.datev <= '" . $db->idate($date_end) . "'"; - $sql1 .= " GROUP BY dm ORDER BY dm ASC"; $result = $db->query($sql1); if ($result) { From e069da69ba2777639898ae641a265183de77933f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 12:35:37 +0100 Subject: [PATCH 067/307] Revert "Fix screen size fall" This reverts commit abb6b41f91bb2d309fd8e9697ff23266554329fa. --- htdocs/comm/remx.php | 8 ++++---- htdocs/theme/eldy/style.css.php | 17 ----------------- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/htdocs/comm/remx.php b/htdocs/comm/remx.php index 9c5f4bc53d8..a66e8e66500 100644 --- a/htdocs/comm/remx.php +++ b/htdocs/comm/remx.php @@ -407,7 +407,7 @@ if ($socid > 0) if($isCustomer) { if($isSupplier) { print '
'; - print '
'; + print '
'; print load_fiche_titre($langs->trans("CustomerDiscounts"), '', ''); } @@ -542,7 +542,7 @@ if ($socid > 0) if($isSupplier) { if($isCustomer) { print '
'; // class="fichehalfleft" - print '
'; + print '
'; print '
'; print load_fiche_titre($langs->trans("SupplierDiscounts"), '', ''); } @@ -695,7 +695,7 @@ if ($socid > 0) if($isCustomer) { if($isSupplier) { print '
'; - print '
'; + print '
'; print load_fiche_titre($langs->trans("CustomerDiscounts"), '', ''); } @@ -848,7 +848,7 @@ if ($socid > 0) if($isSupplier) { if($isCustomer) { print '
'; // class="fichehalfleft" - print '
'; + print '
'; print '
'; print load_fiche_titre($langs->trans("SupplierDiscounts"), '', ''); } diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 39278ffe367..0097eb4715c 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1357,23 +1357,6 @@ div.secondcolumn div.box { } } -/* Force values on one colum for small screen */ -@media only screen and (max-width: 1599px) -{ - div.fichehalfleft-lg { - float: none; - width: auto; - } - div.fichehalfright-lg { - float: none; - width: auto; - } - - .fichehalfright-lg .ficheaddleft{ - padding-left:0; - } -} - /* For table into table into card */ div.ficheaddleft tr.liste_titre:first-child td table.nobordernopadding td { padding: 0 0 0 0; From 2a3b808da6eb2fa2563a4c6f49739f7b9b70212e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 14:05:23 +0100 Subject: [PATCH 068/307] CSS --- htdocs/theme/eldy/style.css.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 4a36fa4a197..84d065280cb 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -907,9 +907,9 @@ div.fiche { min-width: 150px; } .thumbstat150 { - min-width: 170px; - max-wdith: 171px; - /* width: 170px; If I use with, there is trouble on size of flex boxes solved with min+max that is a little bit higer than min */ + min-width: 168px; + max-width: 169px; + /* width: 168px; If I use with, there is trouble on size of flex boxes solved with min+max that is a little bit higer than min */ } .thumbstat, .thumbstat150 { browser->name == 'ie') { ?> From db46d82de3b947735262a4386f3970b7a46071f0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 15:35:59 +0100 Subject: [PATCH 069/307] Fix position of menu entries --- htdocs/core/menus/standard/eldy.lib.php | 77 +++++++++++++------------ htdocs/core/modules/modAgenda.class.php | 2 +- htdocs/core/modules/modECM.class.php | 2 +- htdocs/core/modules/modTicket.class.php | 3 +- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index ce2145d3986..c97307bd830 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -132,6 +132,37 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode $menu->add('/product/index.php?mainmenu=products&leftmenu=', $chaine, 0, $showmode, $atarget, "products", '', 30, $id, $idsel, $classname); } + // Projects + $tmpentry=array('enabled'=>(! empty($conf->projet->enabled)), + 'perms'=>(! empty($user->rights->projet->lire)), + 'module'=>'projet'); + $showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal); + if ($showmode) + { + $langs->load("projects"); + + $classname=""; + if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "project") { $classname='class="tmenusel"'; $_SESSION['idmenu']=''; } + else $classname = 'class="tmenu"'; + $idsel='project'; + + $title = $langs->trans("LeadsOrProjects"); // Leads and opportunities by default + $showmodel = $showmodep = $showmode; + if (empty($conf->global->PROJECT_USE_OPPORTUNITIES)) + { + $title = $langs->trans("Projects"); + $showmodel = 0; + } + if ($conf->global->PROJECT_USE_OPPORTUNITIES == 2) { + $title = $langs->trans("Leads"); + $showmodep = 0; + } + + $menu->add('/projet/index.php?mainmenu=project&leftmenu=', $title, 0, $showmode, $atarget, "project", '', 35, $id, $idsel, $classname); + //$menu->add('/projet/index.php?mainmenu=project&leftmenu=&search_opp_status=openedopp', $langs->trans("ListLeads"), 0, $showmodel & $conf->global->PROJECT_USE_OPPORTUNITIES, $atarget, "project", '', 70, $id, $idsel, $classname); + //$menu->add('/projet/index.php?mainmenu=project&leftmenu=&search_opp_status=notopenedopp', $langs->trans("ListProjects"), 0, $showmodep, $atarget, "project", '', 70, $id, $idsel, $classname); + } + // Commercial $menuqualified=0; if (! empty($conf->propal->enabled)) $menuqualified++; @@ -222,37 +253,6 @@ function print_eldy_menu($db,$atarget,$type_user,&$tabMenu,&$menu,$noout=0,$mode $menu->add('/accountancy/index.php?mainmenu=accountancy&leftmenu=', $langs->trans("MenuAccountancy"), 0, $showmode, $atarget, "accountancy", '', 54, $id, $idsel, $classname); } - // Projects - $tmpentry=array('enabled'=>(! empty($conf->projet->enabled)), - 'perms'=>(! empty($user->rights->projet->lire)), - 'module'=>'projet'); - $showmode=isVisibleToUserType($type_user, $tmpentry, $listofmodulesforexternal); - if ($showmode) - { - $langs->load("projects"); - - $classname=""; - if ($_SESSION["mainmenu"] && $_SESSION["mainmenu"] == "project") { $classname='class="tmenusel"'; $_SESSION['idmenu']=''; } - else $classname = 'class="tmenu"'; - $idsel='project'; - - $title = $langs->trans("LeadsOrProjects"); // Leads and opportunities by default - $showmodel = $showmodep = $showmode; - if (empty($conf->global->PROJECT_USE_OPPORTUNITIES)) - { - $title = $langs->trans("Projects"); - $showmodel = 0; - } - if ($conf->global->PROJECT_USE_OPPORTUNITIES == 2) { - $title = $langs->trans("Leads"); - $showmodep = 0; - } - - $menu->add('/projet/index.php?mainmenu=project&leftmenu=', $title, 0, $showmode, $atarget, "project", '', 70, $id, $idsel, $classname); - //$menu->add('/projet/index.php?mainmenu=project&leftmenu=&search_opp_status=openedopp', $langs->trans("ListLeads"), 0, $showmodel & $conf->global->PROJECT_USE_OPPORTUNITIES, $atarget, "project", '', 70, $id, $idsel, $classname); - //$menu->add('/projet/index.php?mainmenu=project&leftmenu=&search_opp_status=notopenedopp', $langs->trans("ListProjects"), 0, $showmodep, $atarget, "project", '', 70, $id, $idsel, $classname); - } - // HRM $tmpentry=array('enabled'=>(! empty($conf->hrm->enabled) || ! empty($conf->holiday->enabled) || ! empty($conf->deplacement->enabled) || ! empty($conf->expensereport->enabled)), 'perms'=>(! empty($user->rights->hrm->employee->read) || ! empty($user->rights->holiday->write) || ! empty($user->rights->deplacement->lire) || ! empty($user->rights->expensereport->lire)), @@ -1196,8 +1196,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu */ if ($mainmenu == 'bank') { - // Load translation files required by the page - $langs->loadLangs(array("withdrawals","banks","bills","categories")); + // Load translation files required by the page + $langs->loadLangs(array("withdrawals","banks","bills","categories")); // Bank-Caisse if (! empty($conf->banque->enabled)) @@ -1212,11 +1212,12 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu $newmenu->add("/compta/bank/transfer.php",$langs->trans("MenuBankInternalTransfer"),1,$user->rights->banque->transfer); } - if (! empty($conf->categorie->enabled)) { - $langs->load("categories"); - $newmenu->add("/categories/index.php?type=5",$langs->trans("Rubriques"),1,$user->rights->categorie->creer, '', $mainmenu, 'tags'); - $newmenu->add("/compta/bank/categ.php",$langs->trans("RubriquesTransactions"),1,$user->rights->categorie->creer, '', $mainmenu, 'tags'); - } + if (! empty($conf->categorie->enabled)) + { + $langs->load("categories"); + $newmenu->add("/categories/index.php?type=5",$langs->trans("Rubriques"),1,$user->rights->categorie->creer, '', $mainmenu, 'tags'); + $newmenu->add("/compta/bank/categ.php",$langs->trans("RubriquesTransactions"),1,$user->rights->categorie->creer, '', $mainmenu, 'tags'); + } // Prelevements if (! empty($conf->prelevement->enabled)) diff --git a/htdocs/core/modules/modAgenda.class.php b/htdocs/core/modules/modAgenda.class.php index 50e767fe411..2324bfad616 100644 --- a/htdocs/core/modules/modAgenda.class.php +++ b/htdocs/core/modules/modAgenda.class.php @@ -210,7 +210,7 @@ class modAgenda extends DolibarrModules 'mainmenu'=>'agenda', 'url'=>'/comm/action/index.php', 'langs'=>'agenda', - 'position'=>15, + 'position'=>86, 'perms'=>'$user->rights->agenda->myactions->read', 'enabled'=>'$conf->agenda->enabled', 'target'=>'', diff --git a/htdocs/core/modules/modECM.class.php b/htdocs/core/modules/modECM.class.php index c4c00597885..593f702ac52 100644 --- a/htdocs/core/modules/modECM.class.php +++ b/htdocs/core/modules/modECM.class.php @@ -129,7 +129,7 @@ class modECM extends DolibarrModules 'mainmenu'=>'ecm', 'url'=>'/ecm/index.php', 'langs'=>'ecm', - 'position'=>100, + 'position'=>82, 'perms'=>'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup', 'enabled'=>'$conf->ecm->enabled', 'target'=>'', diff --git a/htdocs/core/modules/modTicket.class.php b/htdocs/core/modules/modTicket.class.php index 79e4d015a5e..08f1050df32 100644 --- a/htdocs/core/modules/modTicket.class.php +++ b/htdocs/core/modules/modTicket.class.php @@ -32,7 +32,6 @@ require_once DOL_DOCUMENT_ROOT . "/core/modules/DolibarrModules.class.php"; */ class modTicket extends DolibarrModules { - /** * Constructor. Define names, constants, directories, boxes, permissions * @@ -194,7 +193,7 @@ class modTicket extends DolibarrModules 'leftmenu' => '1', // Use 1 if you also want to add left menu entries using this descriptor. 'url' => '/ticket/index.php', 'langs' => 'ticket', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position' => 100, + 'position' => 88, 'enabled' => '$conf->ticket->enabled', // Define condition to show or hide menu entry. Use '$conf->ticket->enabled' if entry must be visible if module is enabled. 'perms' => '$user->rights->ticket->read', // Use 'perms'=>'$user->rights->ticket->level1->level2' if you want your menu with a permission rules 'target' => '', From 0f3a063c91f21aeb104c71a142b6a54e4416b283 Mon Sep 17 00:00:00 2001 From: Norbert Penel Date: Wed, 5 Dec 2018 15:18:45 +0100 Subject: [PATCH 070/307] Events are not linked to products when created from a product card, the events are not linked to the product --- htdocs/product/agenda.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/agenda.php b/htdocs/product/agenda.php index 9eee66664d9..5ef9defc1d4 100644 --- a/htdocs/product/agenda.php +++ b/htdocs/product/agenda.php @@ -159,7 +159,7 @@ if ($id > 0 || $ref) if ((! empty($objproduct->id) || ! empty($objcon->id)) && $permok) { //$out.='trans("AddAnAction"),'filenew'); From cdaf04876605b245179c4476af112a1967428ae9 Mon Sep 17 00:00:00 2001 From: andreubisquerra Date: Sat, 8 Dec 2018 21:33:54 +0100 Subject: [PATCH 071/307] First CashControl version --- htdocs/compta/cashcontrol/cashcontrol.php | 204 ++++++++++++ .../cashcontrol/class/cashcontrol.class.php | 199 ++++++++++++ htdocs/compta/cashcontrol/report.php | 303 ++++++++++++++++++ htdocs/core/menus/standard/eldy.lib.php | 7 + .../mysql/tables/llx_pos_cash_fence.sql | 34 ++ 5 files changed, 747 insertions(+) create mode 100644 htdocs/compta/cashcontrol/cashcontrol.php create mode 100644 htdocs/compta/cashcontrol/class/cashcontrol.class.php create mode 100644 htdocs/compta/cashcontrol/report.php create mode 100644 htdocs/install/mysql/tables/llx_pos_cash_fence.sql diff --git a/htdocs/compta/cashcontrol/cashcontrol.php b/htdocs/compta/cashcontrol/cashcontrol.php new file mode 100644 index 00000000000..6671b0562ee --- /dev/null +++ b/htdocs/compta/cashcontrol/cashcontrol.php @@ -0,0 +1,204 @@ + + * Copyright (C) 2004-2013 Laurent Destailleur + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2013 Charles-Fr BENKE + * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2016 Marcos García + * Copyright (C) 2018 Andreu Bisquerra + * + * 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/compta/bank/categ.php + * \ingroup compta + * \brief Page ajout de categories bancaires + */ + +$res=@include("../main.inc.php"); +if (! $res) $res=@include("../../main.inc.php"); +include_once 'class/cashcontrol.class.php'; + +$langs->loadLangs(array("cashcontrol","install","cashdesk","admin")); + +$action=GETPOST('action','aZ09'); +$id=GETPOST('id'); + +if (!$user->rights->banque->configurer) + accessforbidden(); + +$categid = GETPOST('categid'); +$label = GETPOST("label"); + +if (empty($conf->global->CASHDESK_ID_BANKACCOUNT_CASH) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CB)) setEventMessages($langs->trans("CashDesk")." - ".$langs->trans("NotConfigured"), null, 'errors'); + +/* + * Add category + */ +if ($action=="start") +{ + $cashcontrol= new CashControl($db); + $cashcontrol->opening=GETPOST('opening'); + if (GETPOST('posmodule')==0) $cashcontrol->posmodule="cashdesk"; + else if (GETPOST('posmodule')==1) $cashcontrol->posmodule="takepos"; + $cashcontrol->posnumber=GETPOST('posnumber'); + $id=$cashcontrol->create($user); + $action="view"; +} + +if ($action=="close") +{ + $cashcontrol= new CashControl($db); + $cashcontrol->id=$id; + $cashcontrol->close($user); + $action="view"; +} + + +if ($action=="create") +{ +llxHeader(); + print load_fiche_titre("Cashcontrol - ".$langs->trans("New"), '', 'title_bank.png'); + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print '
'.$langs->trans("Ref").''.$langs->trans("InitialBankBalance").''.$langs->trans("Module").''.$langs->trans("CashDesk").' ID,
 '.$form->selectarray('posmodule', array('0'=>$langs->trans('CashDesk'),'1'=>$langs->trans('TakePOS')),1).'
'; +} + + +if ($action=="list") +{ +llxHeader(); + print load_fiche_titre("Cashcontrol - ".$langs->trans("List"), '', 'title_bank.png'); + print '
'; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $sql = "SELECT *"; + $sql.= " FROM "; + $sql.= MAIN_DB_PREFIX."pos_cash_fence order by rowid DESC"; + $result = $db->query($sql); + if ($result) { + $i = 0; + $num = $db->num_rows($result); + + while ($i < $num) { + print ''; + $objp = $db->fetch_object($result); + $totalpaye += $objp->amount; + print ''; + print ''; + $i ++; + } + } else { + //no hay + } + + print '
'.$langs->trans("Ref").''.$langs->trans("DateCreationShort").''.$langs->trans("DateEnd").''.$langs->trans("Cash").''.$langs->trans("PaymentTypeCB").''.$langs->trans("Status").'
'; + print ''.$objp->rowid.''; + print ''.dol_print_date($objp->date_creation, 'dayhour').''.dol_print_date(strtotime($objp->year_close."-".$objp->month_close."-".$objp->day_close), 'day').''; + if ($objp->status==2) print price($objp->cash); + print ''; + if ($objp->status==2) price($objp->card); + print ''; + if ($objp->status==1) print $langs->trans("Opened"); + if ($objp->status==2) print $langs->trans("Closed"); + print '
'; +} + + + +if ($action=="view") +{ + $cashcontrol= new CashControl($db); + $cashcontrol->fetch($id); + llxHeader(); + print load_fiche_titre($langs->trans("CashControl"), '', 'title_bank.png'); + print '
'; + print '
'; + print '
'; + print ''; + + print ''; + + print ''; + + print ''; + + print ''; + + print '
'; + print $langs->trans("Code"); + print ''; + print $id; + print '
'; + print $langs->trans("DateCreationShort"); + print ''; + print dol_print_date($cashcontrol->date_creation, 'dayhour'); + print '
'; + print $langs->trans("DateEnd"); + print ''; + print dol_print_date(strtotime($cashcontrol->year_close."-".$cashcontrol->month_close."-".$cashcontrol->day_close), 'day'); + print '
'; + print $langs->trans("Status"); + print ''; + if ($cashcontrol->status==1) print $langs->trans("Opened"); + if ($cashcontrol->status==2) print $langs->trans("Closed"); + print '
'; + print '
'; + print '
'; + print '
'; + print ''; + + print '"; + + print '"; + + print '"; + + print "
'.$langs->trans("InitialBankBalance").''; + print price($cashcontrol->opening); + print "
'.$langs->trans("CashDesk").' ID'; + print $cashcontrol->posnumber; + print "
'.$langs->trans("Module").''; + print $cashcontrol->posmodule; + print "
\n"; + print '
'; + print '
'; + print '
'; + + dol_fiche_end(); + + print '
'; + print ''; + if ($cashcontrol->status==1) print ''; + print '
'; + + print '
'; +} + +llxFooter(); diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php new file mode 100644 index 00000000000..fcf80e093d8 --- /dev/null +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -0,0 +1,199 @@ + + * Copyright (C) 2009 Regis Houssin + * Copyright (C) 2016 Marcos García + * Copyright (C) 2018 Andreu Bisquerra + * + * 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 cashcontrol/class/cashcontrol.class.php + * \ingroup bank + * \brief This file is CRUD class file (Create/Read/Update/Delete) for bank categories + */ + +/** + * Class to manage bank categories + */ +class CashControl // extends CommonObject +{ + public $id; + public $opening; + public $status; + public $date_creation; + public $year_close; + public $month_close; + public $day_close; + public $posmodule; + public $posnumber; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + public function __construct(DoliDB $db) + { + $this->db = $db; + } + + + /** + * Create in database + * + * @param User $user User that create + * @param int $notrigger 0=launch triggers after, 1=disable triggers + * @return int <0 if KO, Id of created object if OK + */ + public function create(User $user, $notrigger = 0) + { + global $conf; + + $error = 0; + + // Insert request + $sql = "INSERT INTO ".MAIN_DB_PREFIX."pos_cash_fence ("; + $sql .= "entity"; + $sql .= ", opening"; + $sql .= ", status"; + $sql .= ", date_creation"; + $sql .= ", posmodule"; + $sql .= ", posnumber"; + $sql .= ") VALUES ("; + $sql .= $conf->entity; + $sql .= ", ".$this->opening; + $sql .= ",1"; + $sql .= ", now()"; + $sql .= ", '".$this->posmodule."'"; + $sql .= ", '".$this->posnumber."'"; + $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."pos_cash_fence"); + } + + // Commit or rollback + if ($error) { + foreach ($this->errors as $errmsg) { + dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); + $this->error .= ($this->error ? ', '.$errmsg : $errmsg); + } + $this->db->rollback(); + return -1 * $error; + } else { + $this->db->commit(); + return $this->id; + } + } + + + + + + public function close(User $user, $notrigger = 0) + { + global $conf; + + $error = 0; + + // Update request + $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence "; + $sql .= "SET"; + $sql .= " day_close=DAYOFMONTH(NOW())"; + $sql .= ", month_close=MONTH(NOW())"; + $sql .= ", year_close=YEAR(NOW())"; + $sql .= ", status=2"; + $sql .= " where rowid=".$this->id; + $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."pos_cash_fence"); + } + + // Commit or rollback + if ($error) { + foreach ($this->errors as $errmsg) { + dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); + $this->error .= ($this->error ? ', '.$errmsg : $errmsg); + } + $this->db->rollback(); + return -1 * $error; + } else { + $this->db->commit(); + return $this->id; + } + } + + + + + + /** + * Load object in memory from database + * + * @param int $id Id object + * @return int <0 if KO, >0 if OK + */ + public function fetch($id) + { + global $conf; + + $sql = "SELECT"; + $sql .= " *"; + $sql .= " FROM ".MAIN_DB_PREFIX."pos_cash_fence"; + $sql .= " WHERE rowid = ".$id; + $sql .= " AND entity = ".$conf->entity; + + 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->opening = $obj->opening; + $this->status = $obj->status; + $this->date_creation = $obj->date_creation; + $this->year_close = $obj->year_close; + $this->month_close = $obj->month_close; + $this->day_close = $obj->day_close; + $this->posmodule = $obj->posmodule; + $this->posnumber = $obj->posnumber; + $this->id=$id; + } + $this->db->free($resql); + + return 1; + } else { + $this->error = "Error ".$this->db->lasterror(); + return -1; + } + } +} diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php new file mode 100644 index 00000000000..8dd3075d8c7 --- /dev/null +++ b/htdocs/compta/cashcontrol/report.php @@ -0,0 +1,303 @@ + + * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2005-2010 Regis Houssin + * Copyright (C) 2012 Vinícius Nogueira + * Copyright (C) 2014 Florian Henry + * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2016 Juanjo Menent + * Copyright (C) 2017 Alexandre Spangaro + * Copyright (C) 2018 Andreu Bisquerra + * + * 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/compta/bank/bankentries_list.php + * \ingroup banque + * \brief List of bank transactions + */ + +$res=@include("../main.inc.php"); +if (! $res) $res=@include("../../main.inc.php"); +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; + +$id = GETPOST('id','int'); + +$_GET['optioncss']="print"; +include_once 'class/cashcontrol.class.php'; +$cashcontrol= new CashControl($db); +$cashcontrol->fetch($id); + +$limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit; +$sortorder='ASC'; +$sortfield='b.datev,b.dateo,b.rowid'; + +$arrayfields=array( + 'b.rowid'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), + 'b.dateo'=>array('label'=>$langs->trans("DateOperationShort"), 'checked'=>1), + 'b.num_chq'=>array('label'=>$langs->trans("Number"), 'checked'=>1), + 'ba.ref'=>array('label'=>$langs->trans("BankAccount"), 'checked'=>1), + 'b.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1, 'position'=>600), + 'b.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1, 'position'=>605), +); + +/* + * View + */ + +llxHeader('', $langs->trans("CashControl"), '', '', 0, 0, array(), array(), $param); + +$sql = "SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro as conciliated, b.num_releve, b.num_chq,"; +$sql.= " b.fk_account, b.fk_type,"; +$sql.= " ba.rowid as bankid, ba.ref as bankref,"; +$sql.= " bu.url_id,"; +$sql.= " f.module_source, f.facnumber as facnumber"; +$sql.= " FROM "; +if ($bid) $sql.= MAIN_DB_PREFIX."bank_class as l,"; +$sql.= " ".MAIN_DB_PREFIX."bank_account as ba,"; +$sql.= " ".MAIN_DB_PREFIX."bank as b"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND type = 'payment'"; +$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON bu.url_id = f.rowid"; +$sql.= " WHERE b.fk_account = ba.rowid"; +$sql.= " AND f.module_source='$cashcontrol->posmodule'"; +$sql.= " AND ba.entity IN (".getEntity('bank_account').")"; + +$sql.=" AND b.datec>'".$cashcontrol->date_creation."'"; +if ($cashcontrol->date_close>0) $sql.=" AND b.datec<'".$cashcontrol->date_close."'"; +$sql.=" AND (b.fk_account="; +$sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH; +$sql.=" or b.fk_account="; +$sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB; +$sql.=")"; +$resql = $db->query($sql); +if ($resql) +{ + $num = $db->num_rows($resql); + $i = 0; + + print "

"; + if ($cashcontrol->status==2) print "Cashcontrol ".$cashcontrol->id; + else print $langs->trans("Cashcontrol")." - ".$langs->trans("Draft"); + print "
".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'day')."

"; + + + print '
'; + print ''."\n"; + + // Fields title + print ''; + print_liste_field_titre($arrayfields['b.rowid']['label'],$_SERVER['PHP_SELF'],'b.rowid','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($arrayfields['b.dateo']['label'],$_SERVER['PHP_SELF'],'b.dateo','',$param,'align="left"',$sortfield,$sortorder); + print_liste_field_titre($arrayfields['ba.ref']['label'],$_SERVER['PHP_SELF'],'ba.ref','',$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($arrayfields['b.debit']['label'],$_SERVER['PHP_SELF'],'b.amount','',$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($arrayfields['b.credit']['label'],$_SERVER['PHP_SELF'],'b.amount','',$param,'align="right"',$sortfield,$sortorder); + print "\n"; + + $balance = 0; // For balance + $balancecalculated = false; + $posconciliatecol = 0; + + // Loop on each record + $sign = 1; + + $totalarray=array(); + while ($i < min($num,$limit)) + { + $objp = $db->fetch_object($resql); + + // If we are in a situation where we need/can show balance, we calculate the start of balance + if (! $balancecalculated && (! empty($arrayfields['balancebefore']['checked']) || ! empty($arrayfields['balance']['checked'])) && $mode_balance_ok) + { + if (! $account) + { + dol_print_error('', 'account is not defined but $mode_balance_ok is true'); + exit; + } + + // Loop on each record before + $sign = 1; + $i = 0; + $sqlforbalance='SELECT SUM(b.amount) as balance'; + $sqlforbalance.= " FROM "; + $sqlforbalance.= " ".MAIN_DB_PREFIX."bank_account as ba,"; + $sqlforbalance.= " ".MAIN_DB_PREFIX."bank as b"; + $sqlforbalance.= " WHERE b.fk_account = ba.rowid"; + $sqlforbalance.= " AND ba.entity IN (".getEntity('bank_account').")"; + $sqlforbalance.= " AND b.fk_account = ".$account; + $sqlforbalance.= " AND (b.datev < '" . $db->idate($db->jdate($objp->dv)) . "' OR (b.datev = '" . $db->idate($db->jdate($objp->dv)) . "' AND (b.dateo < '".$db->idate($db->jdate($objp->do))."' OR (b.dateo = '".$db->idate($db->jdate($objp->do))."' AND b.rowid < ".$objp->rowid."))))"; + $resqlforbalance = $db->query($sqlforbalance); + if ($resqlforbalance) + { + $objforbalance = $db->fetch_object($resqlforbalance); + if ($objforbalance) + { + $balance = $objforbalance->balance; + } + } + else dol_print_error($db); + + $balancecalculated=true; + + // Output a line with start balance + if ($user->rights->banque->consolidate && $action == 'reconcile') + { + $tmpnbfieldbeforebalance=0; + $tmpnbfieldafterbalance=0; + $balancefieldfound=false; + foreach($arrayfields as $key => $val) + { + if ($key == 'balancebefore' || $key == 'balance') + { + $balancefieldfound=true; + continue; + } + if (! empty($arrayfields[$key]['checked'])) + { + if (! $balancefieldfound) $tmpnbfieldbeforebalance++; + else $tmpnbfieldafterbalance++; + } + } + + print ''; + if ($tmpnbfieldbeforebalance) + { + print ''; + } + print ''; + print ''; + print ''; + } + } + + $balance = price2num($balance + ($sign * $objp->amount),'MT'); + + if (empty($cachebankaccount[$objp->bankid])) + { + $bankaccounttmp = new Account($db); + $bankaccounttmp->fetch($objp->bankid); + $cachebankaccount[$objp->bankid]=$bankaccounttmp; + $bankaccount = $bankaccounttmp; + } + else + { + $bankaccount = $cachebankaccount[$objp->bankid]; + } + print ''; + + if ($first==""){ + print ''; + print ''; + $first="no"; + } + + // Ref + print ''; + if (! $i) $totalarray['nbfield']++; + + + // Date ope + print '\n"; + if (! $i) $totalarray['nbfield']++; + + // Bank account + print '\n"; + if (! $i) $totalarray['nbfield']++; + + // Debit + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totaldebfield']=$totalarray['nbfield']; + + // Credit + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalcredfield']=$totalarray['nbfield']; + + print ""; + + $i++; + } + + // Show total line + if (isset($totalarray['totaldebfield']) || isset($totalarray['totalcredfield'])) + { + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if ($i == 1) + { + if ($num < $limit && empty($offset)) print ''; + else print ''; + } + elseif ($totalarray['totaldebfield'] == $i) print ''; + elseif ($totalarray['totalcredfield'] == $i) print ''; + else print ''; + } + print ''; + } + + print "
'; + print ''; + print price(price2num($balance, 'MT'), 1, $langs); + print ''; + print '
'.$langs->trans("InitialBankBalance").''.price($cashcontrol->opening).'
'; + print $objp->facnumber; + print ''; + print ''.dol_print_date($db->jdate($objp->do),"day").""; + print "'; + print $bankaccount->getNomUrl(1); + if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->rowid) $cash+=$objp->amount; + if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->rowid) $bank+=$objp->amount; + print "'; + if ($objp->amount < 0) + { + print price($objp->amount * -1); + $totalarray['totaldeb'] += $objp->amount; + } + print "'; + if ($objp->amount > 0) + { + print price($objp->amount); + $totalarray['totalcred'] += $objp->amount; + } + print "
'.$langs->trans("Total").''.$langs->trans("Totalforthispage").''.price(-1 * $totalarray['totaldeb']).''.price($totalarray['totalcred']).'
"; + + $cash=$cash+$cashcontrol->opening; + print "

".$langs->trans("Cash").": ".price($cash)."

".$langs->trans("PaymentTypeCB").": ".price($bank)."

"; + + + //save totals to DB + $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence "; + $sql .= "SET"; + $sql .= " cash='".$cash."'"; + $sql .= ", card='".$bank."'"; + $sql .= " where rowid=".$id; + $db->query($sql); + + print "
"; + + print ''; + $db->free($resql); +} +else +{ + dol_print_error($db); +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index c97307bd830..3667f2ec157 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1244,6 +1244,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (preg_match('/checks/',$leftmenu)) $newmenu->add("/compta/paiement/cheque/card.php?leftmenu=checks_bis&action=new&mainmenu=bank",$langs->trans("NewChequeDeposit"),1,$user->rights->banque->cheque); if (preg_match('/checks/',$leftmenu)) $newmenu->add("/compta/paiement/cheque/list.php?leftmenu=checks_bis&mainmenu=bank",$langs->trans("List"),1,$user->rights->banque->cheque); } + + //Cash Control + if ($conf->takepos->enabled or $conf->cashdesk->enabled){ + $newmenu->add("/compta/cashcontrol/cashcontrol.php?action=list",$langs->trans("CashControl"),0,1, '', $mainmenu, 'cashcontrol'); + $newmenu->add("/compta/cashcontrol/cashcontrol.php?action=list",$langs->trans("List"),1,1); + $newmenu->add("/compta/cashcontrol/cashcontrol.php?action=create",$langs->trans("New"),1,1); + } } /* diff --git a/htdocs/install/mysql/tables/llx_pos_cash_fence.sql b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql new file mode 100644 index 00000000000..f8014e17366 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql @@ -0,0 +1,34 @@ +-- Copyright (C) 2018 Andreu Bisquerra +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see http://www.gnu.org/licenses/. + + +CREATE TABLE llx_pos_cash_fence( + rowid INTEGER AUTO_INCREMENT PRIMARY KEY, + entity INTEGER DEFAULT 1 NOT NULL, + label VARCHAR(255), + opening double(24,8) default 0, + cash double(24,8) default 0, + card double(24,8) default 0, + status INTEGER, + date_creation DATETIME NOT NULL, + day_close INTEGER, + month_close INTEGER, + year_close INTEGER, + posmodule VARCHAR(30), + posnumber VARCHAR(30), + fk_user_valid integer, + tms TIMESTAMP NOT NULL, + import_key VARCHAR(14) +) ENGINE=innodb; \ No newline at end of file From 33a91ff70779a3a8b5dfa5d7f974b44dd8acf3f7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 16:47:06 +0100 Subject: [PATCH 072/307] Add missing POS closure feature --- .../install/mysql/migration/8.0.0-9.0.0.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index 98dc051e984..ef89604058e 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -229,3 +229,24 @@ ALTER TABLE llx_societe_rib ADD COLUMN comment varchar(255); ALTER TABLE llx_societe_rib ADD COLUMN ipaddress varchar(68); DROP TABLE llx_ticket_logs; + + +CREATE TABLE llx_pos_cash_fence( + rowid INTEGER AUTO_INCREMENT PRIMARY KEY, + entity INTEGER DEFAULT 1 NOT NULL, + label VARCHAR(255), + opening double(24,8) default 0, + cash double(24,8) default 0, + card double(24,8) default 0, + status INTEGER, + date_creation DATETIME NOT NULL, + day_close INTEGER, + month_close INTEGER, + year_close INTEGER, + posmodule VARCHAR(30), + posnumber VARCHAR(30), + fk_user_valid integer, + tms TIMESTAMP NOT NULL, + import_key VARCHAR(14) +) ENGINE=innodb; + From 527ad04ae8b68a09dc8dbb75942c3d27981ebe96 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 18:11:40 +0100 Subject: [PATCH 073/307] FIX Mandatory field feature should works on textarea Conflicts: htdocs/core/lib/functions.lib.php --- htdocs/core/lib/functions.lib.php | 11 ++-- htdocs/langs/en_US/admin.lang | 2 +- htdocs/public/members/new.php | 2 + htdocs/user/class/user.class.php | 98 +++++++++++++++++++------------ 4 files changed, 69 insertions(+), 44 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index e903777211d..39476ee97f3 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -7150,7 +7150,7 @@ function printCommonFooter($zone='private') if ($zone == 'private' && empty($conf->dol_use_jmobile)) { print "\n"; - print '/* JS CODE TO ENABLE to enable handler to switch left menu page (menuhider) */'."\n"; + print '/* JS CODE TO ENABLE to manage handler to switch left menu page (menuhider) */'."\n"; print 'jQuery(".menuhider").click(function() {'; print ' console.log("We click on .menuhider");'."\n"; //print " $('.side-nav').animate({width:'toggle'},200);\n"; // OK with eldy theme but not with md @@ -7160,9 +7160,9 @@ function printCommonFooter($zone='private') } // Management of focus and mandatory for fields - if ($action == 'create' || $action == 'edit') + if ($action == 'create' || $action == 'edit' || (empty($action) && (preg_match('/new\.php/', $_SERVER["PHP_SELF"])))) { - print '/* Code js to manage focus and mandatory form fields */'."\n"; + print '/* JS CODE TO ENABLE to manage focus and mandatory form fields */'."\n"; $relativepathstring = $_SERVER["PHP_SELF"]; // Clean $relativepathstring if (constant('DOL_URL_ROOT')) $relativepathstring = preg_replace('/^'.preg_quote(constant('DOL_URL_ROOT'),'/').'/', '', $relativepathstring); @@ -7191,8 +7191,10 @@ function printCommonFooter($zone='private') { foreach($defval as $paramkey => $paramval) { - // Add property 'required' on input + // Set focus on field print 'jQuery("input[name=\''.$paramkey.'\']").focus();'."\n"; + print 'jQuery("textarea[name=\''.$paramkey.'\']").focus();'."\n"; + print 'jQuery("select[name=\''.$paramkey.'\']").focus();'."\n"; // Not really usefull, but we keep it in case of. } } } @@ -7221,6 +7223,7 @@ function printCommonFooter($zone='private') { // Add property 'required' on input print 'jQuery("input[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; + print 'jQuery("textarea[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; print 'jQuery("select[name=\''.$paramkey.'\']").prop(\'required\',true);'."\n"; // required on a select works only if key is "", this does not happen in Dolibarr } } diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index d580fa90809..1a6487e4e26 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1819,7 +1819,7 @@ SocialNetworkSetup=Setup of module Social Networks EnableFeatureFor=Enable features for %s VATIsUsedIsOff=Note: The option to use sales Tax or VAT has been set to Off in the menu %s - %s, so Sale tax or Vat used will always be 0 for sales. SwapSenderAndRecipientOnPDF=Swap sender and recipient address on PDF -FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields only +FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields only. Also an URL parameter action=create or action=edit' must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some record automatically (like leads). NewEmailCollector=New Email Collector diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 78b3ceb75db..9a85191e34f 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -76,6 +76,8 @@ $extrafields = new ExtraFields($db); $object = new Adherent($db); +$user->loadDefaultValues(); + /** * Show header for new member diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 6c0ff6e4915..4aaaff7ed21 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -422,45 +422,9 @@ class User extends CommonObject return -2; } - // Load user->default_values for user. TODO Save this in memcached ? - $sql = "SELECT rowid, entity, type, page, param, value"; - $sql.= " FROM ".MAIN_DB_PREFIX."default_values"; - $sql.= " WHERE entity IN (".$this->entity.",".$conf->entity.")"; - $sql.= " AND user_id IN (0, ".$this->id.")"; - $resql = $this->db->query($sql); - if ($resql) - { - while ($obj = $this->db->fetch_object($resql)) - { - if (! empty($obj->page) && ! empty($obj->type) && ! empty($obj->param)) - { - // $obj->page is relative URL with or without params - // $obj->type can be 'filters', 'sortorder', 'createform', ... - // $obj->param is key or param - $pagewithoutquerystring=$obj->page; - $pagequeries=''; - if (preg_match('/^([^\?]+)\?(.*)$/', $pagewithoutquerystring, $reg)) // There is query param - { - $pagewithoutquerystring=$reg[1]; - $pagequeries=$reg[2]; - } - $this->default_values[$pagewithoutquerystring][$obj->type][$pagequeries?$pagequeries:'_noquery_'][$obj->param]=$obj->value; - //if ($pagequeries) $this->default_values[$pagewithoutquerystring][$obj->type.'_queries']=$pagequeries; - } - } - // Sort by key, so _noquery_ is last - if(!empty($this->default_values)) { - foreach($this->default_values as $a => $b) - { - foreach($b as $c => $d) - { - krsort($this->default_values[$a][$c]); - } - } - } - $this->db->free($resql); - } - else + $result = $this->loadDefaultValues(); + + if ($result < 0) { $this->error=$this->db->lasterror(); return -3; @@ -470,6 +434,62 @@ class User extends CommonObject return 1; } + /** + * Load default value in property ->default_values + * + * @return int > 0 if OK, < 0 if KO + */ + function loadDefaultValues() + { + global $conf; + + // Load user->default_values for user. TODO Save this in memcached ? + $sql = "SELECT rowid, entity, type, page, param, value"; + $sql.= " FROM ".MAIN_DB_PREFIX."default_values"; + $sql.= " WHERE entity IN (".($this->entity > 0 ? $this->entity.", " : "").$conf->entity.")"; // Entity of user (if defined) + current entity + $sql.= " AND user_id IN (0".($this->id > 0 ? ", ".$this->id : "").")"; // User 0 (all) + me (if defined) + $resql = $this->db->query($sql); + if ($resql) + { + while ($obj = $this->db->fetch_object($resql)) + { + if (! empty($obj->page) && ! empty($obj->type) && ! empty($obj->param)) + { + // $obj->page is relative URL with or without params + // $obj->type can be 'filters', 'sortorder', 'createform', ... + // $obj->param is key or param + $pagewithoutquerystring=$obj->page; + $pagequeries=''; + if (preg_match('/^([^\?]+)\?(.*)$/', $pagewithoutquerystring, $reg)) // There is query param + { + $pagewithoutquerystring=$reg[1]; + $pagequeries=$reg[2]; + } + $this->default_values[$pagewithoutquerystring][$obj->type][$pagequeries?$pagequeries:'_noquery_'][$obj->param]=$obj->value; + //if ($pagequeries) $this->default_values[$pagewithoutquerystring][$obj->type.'_queries']=$pagequeries; + } + } + // Sort by key, so _noquery_ is last + if(!empty($this->default_values)) { + foreach($this->default_values as $a => $b) + { + foreach($b as $c => $d) + { + krsort($this->default_values[$a][$c]); + } + } + } + $this->db->free($resql); + + return 1; + } + else + { + dol_print_error($this->db); + return -1; + } + } + /** * Add a right to the user * From 944f9ac89412df1f599f6a7166b2fab5e987238c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 18:14:08 +0100 Subject: [PATCH 074/307] Typo --- htdocs/langs/en_US/admin.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 1a6487e4e26..01900aba754 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1819,7 +1819,7 @@ SocialNetworkSetup=Setup of module Social Networks EnableFeatureFor=Enable features for %s VATIsUsedIsOff=Note: The option to use sales Tax or VAT has been set to Off in the menu %s - %s, so Sale tax or Vat used will always be 0 for sales. SwapSenderAndRecipientOnPDF=Swap sender and recipient address on PDF -FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields only. Also an URL parameter action=create or action=edit' must be set OR page name must end with 'new.php' to trigger this feature. +FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some record automatically (like leads). NewEmailCollector=New Email Collector From 8ce6f6777343208367575355fe456e2a2e469593 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 18:27:38 +0100 Subject: [PATCH 075/307] Fix phpcs --- htdocs/compta/cashcontrol/cashcontrol.php | 27 ++++++++------- .../cashcontrol/class/cashcontrol.class.php | 34 +++++++++---------- htdocs/compta/cashcontrol/report.php | 23 +++++++------ 3 files changed, 43 insertions(+), 41 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol.php b/htdocs/compta/cashcontrol/cashcontrol.php index 6671b0562ee..9dd082bb5dd 100644 --- a/htdocs/compta/cashcontrol/cashcontrol.php +++ b/htdocs/compta/cashcontrol/cashcontrol.php @@ -27,9 +27,8 @@ * \brief Page ajout de categories bancaires */ -$res=@include("../main.inc.php"); -if (! $res) $res=@include("../../main.inc.php"); -include_once 'class/cashcontrol.class.php'; +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; $langs->loadLangs(array("cashcontrol","install","cashdesk","admin")); @@ -97,7 +96,7 @@ llxHeader(); print '
'.$langs->trans("Ref").''.$langs->trans("DateCreationShort").''.$langs->trans("DateEnd").''.$langs->trans("Cash").''.$langs->trans("PaymentTypeCB").''.$langs->trans("Status").'
'; } @@ -142,25 +141,25 @@ if ($action=="view") print '
'; print '
'; print ''; - + print ''; - + print ''; - + print ''; - + print '"; - + print '"; - + print '"; @@ -192,13 +191,15 @@ if ($action=="view") print '
'; dol_fiche_end(); - + print '
'; print ''; if ($cashcontrol->status==1) print ''; print '
'; - + print '
'; } +// End of page llxFooter(); +$db->close(); diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index fcf80e093d8..9a9006c4c45 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -2,7 +2,7 @@ /* Copyright (C) 2008 Laurent Destailleur * Copyright (C) 2009 Regis Houssin * Copyright (C) 2016 Marcos García - * Copyright (C) 2018 Andreu Bisquerra + * Copyright (C) 2018 Andreu Bisquerra * * 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 @@ -38,7 +38,7 @@ class CashControl // extends CommonObject public $day_close; public $posmodule; public $posnumber; - + /** * Constructor @@ -71,14 +71,14 @@ class CashControl // extends CommonObject $sql .= ", status"; $sql .= ", date_creation"; $sql .= ", posmodule"; - $sql .= ", posnumber"; + $sql .= ", posnumber"; $sql .= ") VALUES ("; $sql .= $conf->entity; $sql .= ", ".$this->opening; $sql .= ",1"; $sql .= ", now()"; $sql .= ", '".$this->posmodule."'"; - $sql .= ", '".$this->posnumber."'"; + $sql .= ", '".$this->posnumber."'"; $sql .= ")"; $this->db->begin(); @@ -108,10 +108,13 @@ class CashControl // extends CommonObject } } - - - - + /** + * close + * + * @param User $user User + * @param number $notrigger No trigger + * @return int <0 if KO, >0 if OK + */ public function close(User $user, $notrigger = 0) { global $conf; @@ -123,7 +126,7 @@ class CashControl // extends CommonObject $sql .= "SET"; $sql .= " day_close=DAYOFMONTH(NOW())"; $sql .= ", month_close=MONTH(NOW())"; - $sql .= ", year_close=YEAR(NOW())"; + $sql .= ", year_close=YEAR(NOW())"; $sql .= ", status=2"; $sql .= " where rowid=".$this->id; $this->db->begin(); @@ -152,16 +155,13 @@ class CashControl // extends CommonObject return $this->id; } } - - - - + /** * Load object in memory from database * - * @param int $id Id object - * @return int <0 if KO, >0 if OK + * @param int $id Id object + * @return int <0 if KO, >0 if OK */ public function fetch($id) { @@ -172,7 +172,7 @@ class CashControl // extends CommonObject $sql .= " FROM ".MAIN_DB_PREFIX."pos_cash_fence"; $sql .= " WHERE rowid = ".$id; $sql .= " AND entity = ".$conf->entity; - + dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql = $this->db->query($sql); if ($resql) { @@ -196,4 +196,4 @@ class CashControl // extends CommonObject return -1; } } -} +} \ No newline at end of file diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index 8dd3075d8c7..c85b35c7c2e 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -7,7 +7,7 @@ * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2016 Juanjo Menent * Copyright (C) 2017 Alexandre Spangaro - * Copyright (C) 2018 Andreu Bisquerra + * Copyright (C) 2018 Andreu Bisquerra * * 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 @@ -29,8 +29,8 @@ * \brief List of bank transactions */ -$res=@include("../main.inc.php"); -if (! $res) $res=@include("../../main.inc.php"); +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $id = GETPOST('id','int'); @@ -48,7 +48,7 @@ $arrayfields=array( 'b.rowid'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), 'b.dateo'=>array('label'=>$langs->trans("DateOperationShort"), 'checked'=>1), 'b.num_chq'=>array('label'=>$langs->trans("Number"), 'checked'=>1), - 'ba.ref'=>array('label'=>$langs->trans("BankAccount"), 'checked'=>1), + 'ba.ref'=>array('label'=>$langs->trans("BankAccount"), 'checked'=>1), 'b.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1, 'position'=>600), 'b.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1, 'position'=>605), ); @@ -56,7 +56,7 @@ $arrayfields=array( /* * View */ - + llxHeader('', $langs->trans("CashControl"), '', '', 0, 0, array(), array(), $param); $sql = "SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro as conciliated, b.num_releve, b.num_chq,"; @@ -86,7 +86,7 @@ if ($resql) { $num = $db->num_rows($resql); $i = 0; - + print "

"; if ($cashcontrol->status==2) print "Cashcontrol ".$cashcontrol->id; else print $langs->trans("Cashcontrol")." - ".$langs->trans("Draft"); @@ -199,7 +199,7 @@ if ($resql) $bankaccount = $cachebankaccount[$objp->bankid]; } print '

'; - + if ($first==""){ print ''; print ''; @@ -275,22 +275,23 @@ if ($resql) } print "
'; print $langs->trans("Code"); print ''; print $id; print '
'; print $langs->trans("DateCreationShort"); print ''; print dol_print_date($cashcontrol->date_creation, 'dayhour'); print '
'; print $langs->trans("DateEnd"); print ''; print dol_print_date(strtotime($cashcontrol->year_close."-".$cashcontrol->month_close."-".$cashcontrol->day_close), 'day'); print '
'; print $langs->trans("Status"); print ''; @@ -177,11 +176,11 @@ if ($action=="view") print '
'.$langs->trans("InitialBankBalance").''; print price($cashcontrol->opening); print "
'.$langs->trans("CashDesk").' ID'; print $cashcontrol->posnumber; print "
'.$langs->trans("Module").''; print $cashcontrol->posmodule; print "
'.$langs->trans("InitialBankBalance").''.price($cashcontrol->opening).'
"; - + $cash=$cash+$cashcontrol->opening; print "

".$langs->trans("Cash").": ".price($cash)."

".$langs->trans("PaymentTypeCB").": ".price($bank)."

"; - - + + //save totals to DB $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence "; $sql .= "SET"; $sql .= " cash='".$cash."'"; $sql .= ", card='".$bank."'"; - $sql .= " where rowid=".$id; + $sql .= " where rowid=".$id; $db->query($sql); print "
"; print ''; + $db->free($resql); } else From 0451eb741bac1386b3d234b428a4a92c55c2835f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 19:20:30 +0100 Subject: [PATCH 076/307] Work on legal cash fence --- .../{cashcontrol.php => cashcontrol_card.php} | 74 +-- .../compta/cashcontrol/cashcontrol_list.php | 573 ++++++++++++++++++ .../cashcontrol/class/cashcontrol.class.php | 48 +- htdocs/compta/cashcontrol/report.php | 4 +- htdocs/core/menus/standard/eldy.lib.php | 13 +- htdocs/langs/en_US/banks.lang | 2 + 6 files changed, 653 insertions(+), 61 deletions(-) rename htdocs/compta/cashcontrol/{cashcontrol.php => cashcontrol_card.php} (74%) create mode 100644 htdocs/compta/cashcontrol/cashcontrol_list.php diff --git a/htdocs/compta/cashcontrol/cashcontrol.php b/htdocs/compta/cashcontrol/cashcontrol_card.php similarity index 74% rename from htdocs/compta/cashcontrol/cashcontrol.php rename to htdocs/compta/cashcontrol/cashcontrol_card.php index 9dd082bb5dd..9d52e83afd8 100644 --- a/htdocs/compta/cashcontrol/cashcontrol.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -23,11 +23,11 @@ /** * \file htdocs/compta/bank/categ.php - * \ingroup compta + * \ingroup pos * \brief Page ajout de categories bancaires */ -require '../main.inc.php'; +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; $langs->loadLangs(array("cashcontrol","install","cashdesk","admin")); @@ -43,6 +43,18 @@ $label = GETPOST("label"); if (empty($conf->global->CASHDESK_ID_BANKACCOUNT_CASH) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CB)) setEventMessages($langs->trans("CashDesk")." - ".$langs->trans("NotConfigured"), null, 'errors'); +$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; +$sortfield = GETPOST("sortfield",'alpha'); +$sortorder = GETPOST("sortorder",'alpha'); +$page = GETPOST("page",'int'); +if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortfield) $sortfield='b.label'; +if (! $sortorder) $sortorder='ASC'; + + /* * Add category */ @@ -68,8 +80,14 @@ if ($action=="close") if ($action=="create") { -llxHeader(); - print load_fiche_titre("Cashcontrol - ".$langs->trans("New"), '', 'title_bank.png'); + llxHeader(); + + $arrayofposavailable=array(); + if (! empty($conf->cashdesk->enabled)) $arrayofposavailable['cashdesk']=$langs->trans('CashDesk').' (cashdesk)'; + if (! empty($conf->takepos->enabled)) $arrayofposavailable['takepos']=$langs->trans('TakePOS').' (takepos)'; + // TODO Add hook here to allow other POS to add themself + + print load_fiche_titre($langs->trans("CashControl")." - ".$langs->trans("New"), '', 'title_bank.png'); print '
'; print ''; print ''; @@ -78,59 +96,13 @@ llxHeader(); print "\n"; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; print '
 '.$form->selectarray('posmodule', array('0'=>$langs->trans('CashDesk'),'1'=>$langs->trans('TakePOS')),1).''.$form->selectarray('posmodule', $arrayofposavailable, 1).'
'; } - -if ($action=="list") -{ -llxHeader(); - print load_fiche_titre("Cashcontrol - ".$langs->trans("List"), '', 'title_bank.png'); - print '
'; - print ''; - print ''; - print ''; - print ''; - print "\n"; - - $sql = "SELECT *"; - $sql.= " FROM "; - $sql.= MAIN_DB_PREFIX."pos_cash_fence order by rowid DESC"; - $result = $db->query($sql); - if ($result) { - $i = 0; - $num = $db->num_rows($result); - - while ($i < $num) { - print ''; - $objp = $db->fetch_object($result); - $totalpaye += $objp->amount; - print ''; - print ''; - $i ++; - } - } else { - //no hay - } - - print '
'.$langs->trans("Ref").''.$langs->trans("DateCreationShort").''.$langs->trans("DateEnd").''.$langs->trans("Cash").''.$langs->trans("PaymentTypeCB").''.$langs->trans("Status").'
'; - print ''.$objp->rowid.''; - print ''.dol_print_date($objp->date_creation, 'dayhour').''.dol_print_date(strtotime($objp->year_close."-".$objp->month_close."-".$objp->day_close), 'day').''; - if ($objp->status==2) print price($objp->cash); - print ''; - if ($objp->status==2) price($objp->card); - print ''; - if ($objp->status==1) print $langs->trans("Opened"); - if ($objp->status==2) print $langs->trans("Closed"); - print '
'; -} - - - if ($action=="view") { $cashcontrol= new CashControl($db); diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php new file mode 100644 index 00000000000..ba0f985f510 --- /dev/null +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -0,0 +1,573 @@ + + * Copyright (C) ---Put here your own copyright and developer email--- + * + * 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 cashcontrol_list.php + * \ingroup bank + * \brief List page for cashcontrol + */ + +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Do not create database handler $db +//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Do not load object $user +//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); // Do not load object $mysoc +//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Do not load object $langs +//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION','1'); // Do not check injection attack on GET parameters +//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION','1'); // Do not check injection attack on POST parameters +//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on). +//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) +//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data +//if (! defined('NOIPCHECK')) define('NOIPCHECK','1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip +//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu +//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php +//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); // Do not load ajax.lib.php library +//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session) +//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT','auto'); // Force lang to a particular value +//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE','aloginmodule'); // Force authentication handler +//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN',1); // The main.inc.php does not make a redirect if not logged, instead show simple error message + +require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; + +// Load translation files required by the page +$langs->loadLangs(array("banks","other")); + +$action = GETPOST('action','aZ09')?GETPOST('action','aZ09'):'view'; // The action 'add', 'create', 'edit', 'update', 'view', ... +$massaction = GETPOST('massaction','alpha'); // The bulk action (combo box choice into lists) +$show_files = GETPOST('show_files','int'); // Show files area generated by bulk actions ? +$confirm = GETPOST('confirm','alpha'); // Result of a confirmation +$cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button +$toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list +$contextpage= GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'cashcontrol'; // To manage different context of search +$backtopage = GETPOST('backtopage','alpha'); // Go back to a dedicated page +$optioncss = GETPOST('optioncss','aZ'); // Option for the css output (always '' except when 'print') + +$id = GETPOST('id','int'); + +// Load variable for pagination +$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); +if (empty($page) || $page == -1 || GETPOST('button_search','alpha') || GETPOST('button_removefilter','alpha') || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +//if (! $sortfield) $sortfield="p.date_fin"; +//if (! $sortorder) $sortorder="DESC"; + +// Initialize technical objects +$object=new CashControl($db); +$extrafields = new ExtraFields($db); +$diroutputmassaction=$conf->monmodule->dir_output . '/temp/massgeneration/'.$user->id; +$hookmanager->initHooks(array('cashcontrol')); // Note that conf->hooks_modules contains array +// Fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('cashcontrol'); // Load $extrafields->attributes['cashcontrol'] +$search_array_options=$extrafields->getOptionalsFromPost($object->table_element,'','search_'); + +// Default sort order (if not yet defined by previous GETPOST) +if (! $sortfield) $sortfield="t.".key($object->fields); // Set here default search field. By default 1st field in definition. +if (! $sortorder) $sortorder="ASC"; + +// Security check +$socid=0; +if ($user->societe_id > 0) // Protection if external user +{ + //$socid = $user->societe_id; + accessforbidden(); +} +//$result = restrictedArea($user, 'monmodule', $id, ''); + +// Initialize array of search criterias +$search_all=trim(GETPOST("search_all",'alpha')); +$search=array(); +foreach($object->fields as $key => $val) +{ + if (GETPOST('search_'.$key,'alpha')) $search[$key]=GETPOST('search_'.$key,'alpha'); +} + +// List of fields to search into when doing a "search in all" +$fieldstosearchall = array(); +foreach($object->fields as $key => $val) +{ + if ($val['searchall']) $fieldstosearchall['t.'.$key]=$val['label']; +} + +// Definition of fields for list +$arrayfields=array(); +foreach($object->fields as $key => $val) +{ + // If $val['visible']==0, then we never show the field + if (! empty($val['visible'])) $arrayfields['t.'.$key]=array('label'=>$val['label'], 'checked'=>(($val['visible']<0)?0:1), 'enabled'=>$val['enabled'], 'position'=>$val['position']); +} +// Extra fields +if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) +{ + foreach($extrafields->attributes[$object->table_element]['label'] as $key => $val) + { + if (! empty($extrafields->attributes[$object->table_element]['list'][$key])) + $arrayfields["ef.".$key]=array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key]<0)?0:1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key])!=3 && $extrafields->attributes[$object->table_element]['perms'][$key])); + } +} +$object->fields = dol_sort_array($object->fields, 'position'); +$arrayfields = dol_sort_array($arrayfields, 'position'); + + + +/* + * Actions + */ + +if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; } + +$parameters=array(); +$reshook=$hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +if (empty($reshook)) +{ + // Selection of new fields + include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + + // Purge search criteria + if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') ||GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers + { + foreach($object->fields as $key => $val) + { + $search[$key]=''; + } + $toselect=''; + $search_array_options=array(); + } + if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha') + || GETPOST('button_search_x','alpha') || GETPOST('button_search.x','alpha') || GETPOST('button_search','alpha')) + { + $massaction=''; // Protection to avoid mass action if we force a new search during a mass action confirmation + } + + // Mass actions + $objectclass='CashControl'; + $objectlabel='CashControl'; + $permtoread = ($user->rights->cashdesk->read || $user->rights->takepos->read); + $permtodelete = ($user->rights->cashdesk->delete || $user->rights->takepos->delete); + + //$uploaddir = ''; + //include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; +} + + + +/* + * View + */ + +$form=new Form($db); + +$now=dol_now(); + +//$help_url="EN:Module_pos_cash_fence|FR:Module_pos_cash_fence_FR|ES:Módulo_pos_cash_fence"; +$help_url=''; +$title = $langs->trans('CashControl'); + + +// Build and execute select +// -------------------------------------------------------------------- +$sql = 'SELECT '; +foreach($object->fields as $key => $val) +{ + $sql.='t.'.$key.', '; +} +// Add fields from extrafields +if (! empty($extrafields->attributes[$object->table_element]['label'])) +{ + foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.' as options_'.$key.', ' : ''); +} +// Add fields from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListSelect', $parameters, $object); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; +$sql=preg_replace('/, $/','', $sql); +$sql.= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t"; +if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)"; +if ($object->ismultientitymanaged == 1) $sql.= " WHERE t.entity IN (".getEntity($object->element).")"; +else $sql.=" WHERE 1 = 1"; +foreach($search as $key => $val) +{ + if ($key == 'status' && $search[$key] == -1) continue; + $mode_search=(($object->isInt($object->fields[$key]) || $object->isFloat($object->fields[$key]))?1:0); + if ($search[$key] != '') $sql.=natural_search($key, $search[$key], (($key == 'status')?2:$mode_search)); +} +if ($search_all) $sql.= natural_search(array_keys($fieldstosearchall), $search_all); +// Add where from extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + +/* If a group by is required + $sql.= " GROUP BY " + foreach($object->fields as $key => $val) + { + $sql.='t.'.$key.', '; + } + // Add fields from extrafields + if (! empty($extrafields->attributes[$object->table_element]['label'])) { + foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.', ' : ''); + // Add where from hooks + $parameters=array(); + $reshook=$hookmanager->executeHooks('printFieldListGroupBy',$parameters); // Note that $action and $object may have been modified by hook + $sql.=$hookmanager->resPrint; + $sql=preg_replace('/, $/','', $sql); + */ + +$sql.=$db->order($sortfield,$sortorder); + +// Count total nb of records +$nbtotalofrecords = ''; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) +{ + $resql = $db->query($sql); + $nbtotalofrecords = $db->num_rows($resql); + if (($page * $limit) > $nbtotalofrecords) // if total of record found is smaller than page * limit, goto and load page 0 + { + $page = 0; + $offset = 0; + } +} +// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set. +if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) +{ + $num = $nbtotalofrecords; +} +else +{ + $sql.= $db->plimit($limit+1, $offset); + + $resql=$db->query($sql); + if (! $resql) + { + dol_print_error($db); + exit; + } + + $num = $db->num_rows($resql); +} + +// Direct jump if only one record found +if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all) +{ + $obj = $db->fetch_object($resql); + $id = $obj->rowid; + header("Location: ".dol_buildpath('/compta/cashcontrol/cashcontrol_card.php', 1).'?id='.$id); + exit; +} + + +// Output page +// -------------------------------------------------------------------- + +llxHeader('', $title, $help_url); + +// Example : Adding jquery code +print ''; + +$arrayofselected=is_array($toselect)?$toselect:array(); + +$param=''; +if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); +if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); +foreach($search as $key => $val) +{ + $param.= '&search_'.$key.'='.urlencode($search[$key]); +} +if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); +// Add $param from extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; + +// List of mass actions available +$arrayofmassactions = array( +//'presend'=>$langs->trans("SendByMail"), +//'builddoc'=>$langs->trans("PDFMerge"), +); +if ($user->rights->monmodule->delete) $arrayofmassactions['predelete']=$langs->trans("Delete"); +if (GETPOST('nomassaction','int') || in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); +$massactionbutton=$form->selectMassAction('', $arrayofmassactions); + +print '
'; +if ($optioncss != '') print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; + +$newcardbutton=''; +//if ($user->rights->monmodule->creer) + //{ +$newcardbutton=''.$langs->trans('New').''; +$newcardbutton.= ''; +$newcardbutton.= ''; +//} + +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_companies', 0, $newcardbutton, '', $limit); + +// Add code for pre mass action (confirmation or email presend form) +$topicmail="SendCashControlRef"; +$modelmail="cashcontrol"; +$objecttmp=new CashControl($db); +$trackid='xxxx'.$object->id; +include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; + +if ($sall) +{ + foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); + print '
'.$langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall).'
'; +} + +$moreforfilter = ''; +/*$moreforfilter.='
'; + $moreforfilter.= $langs->trans('MyFilter') . ': '; + $moreforfilter.= '
';*/ + +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook +if (empty($reshook)) $moreforfilter .= $hookmanager->resPrint; +else $moreforfilter = $hookmanager->resPrint; + +if (! empty($moreforfilter)) +{ + print '
'; + print $moreforfilter; + print '
'; +} + +$varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; +$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields.=(count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); + +print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table +print ''."\n"; + + +// Fields title search +// -------------------------------------------------------------------- +print ''; +foreach($object->fields as $key => $val) +{ + $cssforfield=''; + if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; + if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; + if ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; + if (! empty($arrayfields['t.'.$key]['checked'])) print ''; +} +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; + +// Fields from hook +$parameters=array('arrayfields'=>$arrayfields); +$reshook=$hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; +// Action column +print ''; +print ''."\n"; + + +// Fields title label +// -------------------------------------------------------------------- +print ''; +foreach($object->fields as $key => $val) +{ + $cssforfield=''; + if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; + if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; + if ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; + if (! empty($arrayfields['t.'.$key]['checked'])) + { + print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield?'class="'.$cssforfield.'"':''), $sortfield, $sortorder, ($cssforfield?$cssforfield.' ':''))."\n"; + } +} +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; +// Hook fields +$parameters=array('arrayfields'=>$arrayfields,'param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder); +$reshook=$hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; +print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"],'','','','align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n"; +print ''."\n"; + + +// Detect if we need a fetch on each output line +$needToFetchEachLine=0; +if (is_array($extrafields->attributes[$object->table_element]['computed']) && count($extrafields->attributes[$object->table_element]['computed']) > 0) +{ + foreach ($extrafields->attributes[$object->table_element]['computed'] as $key => $val) + { + if (preg_match('/\$object/',$val)) $needToFetchEachLine++; // There is at least one compute field that use $object + } +} + + +// Loop on record +// -------------------------------------------------------------------- +$i=0; +$totalarray=array(); +while ($i < min($num, $limit)) +{ + $obj = $db->fetch_object($resql); + if (empty($obj)) break; // Should not happen + + // Store properties in $object + $object->id = $obj->rowid; + foreach($object->fields as $key => $val) + { + if (isset($obj->$key)) $object->$key = $obj->$key; + } + + // Show here line of result + print ''; + foreach($object->fields as $key => $val) + { + $cssforfield=''; + if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; + if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; + if ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; + if (! empty($arrayfields['t.'.$key]['checked'])) + { + print ''; + print $object->showOutputField($val, $key, $obj->$key, ''); + print ''; + if (! $i) $totalarray['nbfield']++; + if (! empty($val['isameasure'])) + { + if (! $i) $totalarray['pos'][$totalarray['nbfield']]='t.'.$key; + $totalarray['val']['t.'.$key] += $obj->$key; + } + } + } + // Extra fields + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Action column + print ''; + if (! $i) $totalarray['nbfield']++; + + print ''; + + $i++; +} + +// Show total line +if (isset($totalarray['pos'])) +{ + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if (! empty($totalarray['pos'][$i])) print ''; + else + { + if ($i == 1) + { + if ($num < $limit) print ''; + else print ''; + } + else print ''; + } + } + print ''; +} + +// If no record found +if ($num == 0) +{ + $colspan=1; + foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; } + print ''; +} + +$db->free($resql); + +$parameters=array('arrayfields'=>$arrayfields, 'sql'=>$sql); +$reshook=$hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; + +print '
'; +$searchpicto=$form->showFilterButtons(); +print $searchpicto; +print '
'; + if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + { + $selected=0; + if (in_array($obj->rowid, $arrayofselected)) $selected=1; + print ''; + } + print '
'.price($totalarray['val'][$totalarray['pos'][$i]]).''.$langs->trans("Total").''.$langs->trans("Totalforthispage").'
'.$langs->trans("NoRecordFound").'
'."\n"; +print '
'."\n"; + +print '
'."\n"; + +if (in_array('builddoc',$arrayofmassactions) && ($nbtotalofrecords === '' || $nbtotalofrecords)) +{ + $hidegeneratedfilelistifempty=1; + if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) $hidegeneratedfilelistifempty=0; + + require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; + $formfile = new FormFile($db); + + // Show list of available documents + $urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; + $urlsource.=str_replace('&','&',$param); + + $filedir=$diroutputmassaction; + $genallowed=$user->rights->monmodule->read; + $delallowed=$user->rights->monmodule->create; + + print $formfile->showdocuments('massfilesarea_monmodule','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'','','',null,$hidegeneratedfilelistifempty); +} + +// End of page +llxFooter(); +$db->close(); diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 9a9006c4c45..451522e20ea 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -21,14 +21,57 @@ /** * \file cashcontrol/class/cashcontrol.class.php * \ingroup bank - * \brief This file is CRUD class file (Create/Read/Update/Delete) for bank categories + * \brief This file is CRUD class file (Create/Read/Update/Delete) for cash fence table */ /** - * Class to manage bank categories + * Class to manage cash fence */ class CashControl // extends CommonObject { + /** + * @var string ID to identify managed object + */ + public $element = 'CashControl'; + + /** + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'pos_cash_fence'; + + /** + * @var int Does pos_cash_fence support multicompany module ? 0=No test on entity, 1=Test with field entity, 2=Test with link by societe + */ + public $ismultientitymanaged = 1; + + /** + * @var int Does pos_cash_fence support extrafields ? 0=No, 1=Yes + */ + public $isextrafieldmanaged = 0; + + /** + * @var string String with name of icon for pos_cash_fence. Must be the part after the 'object_' into object_pos_cash_fence.png + */ + public $picto = 'bank'; + + public $fields=array( + 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>10), + 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>15), + 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>20), + 'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25), + 'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30), + //'card' =>array('type'=>'double(24,8)', 'label'=>'Card', 'enabled'=>1, 'visible'=>1, 'position'=>35), + 'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>50), + 'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55), + 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'position'=>60), + 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'position'=>65), + 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'position'=>70), + //'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>40), + 'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500), + 'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505), + 'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510), + ); + public $id; public $opening; public $status; @@ -40,6 +83,7 @@ class CashControl // extends CommonObject public $posnumber; + /** * Constructor * diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index c85b35c7c2e..00bcda7607b 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -25,11 +25,11 @@ /** * \file htdocs/compta/bank/bankentries_list.php - * \ingroup banque + * \ingroup pos * \brief List of bank transactions */ -require '../main.inc.php'; +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 3667f2ec157..872edac9ed8 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1244,12 +1244,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (preg_match('/checks/',$leftmenu)) $newmenu->add("/compta/paiement/cheque/card.php?leftmenu=checks_bis&action=new&mainmenu=bank",$langs->trans("NewChequeDeposit"),1,$user->rights->banque->cheque); if (preg_match('/checks/',$leftmenu)) $newmenu->add("/compta/paiement/cheque/list.php?leftmenu=checks_bis&mainmenu=bank",$langs->trans("List"),1,$user->rights->banque->cheque); } - - //Cash Control - if ($conf->takepos->enabled or $conf->cashdesk->enabled){ - $newmenu->add("/compta/cashcontrol/cashcontrol.php?action=list",$langs->trans("CashControl"),0,1, '', $mainmenu, 'cashcontrol'); - $newmenu->add("/compta/cashcontrol/cashcontrol.php?action=list",$langs->trans("List"),1,1); - $newmenu->add("/compta/cashcontrol/cashcontrol.php?action=create",$langs->trans("New"),1,1); + + // Cash Control + if (! empty($conf->takepos->enabled) || ! empty($conf->cashdesk->enabled)) + { + $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("CashControl"),0,1, '', $mainmenu, 'cashcontrol'); + $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("List"),1,1); + $newmenu->add("/compta/cashcontrol/cashcontrol_card.php?action=create",$langs->trans("New"),1,1); } } diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 5bc061f31f3..615cccf130e 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -165,3 +165,5 @@ SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation +CashControl=POS Cash Fence +NewCashFence=New cash fence \ No newline at end of file From 1c49599a4717c0632467e038aa8c4719a88a68b5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 19:46:51 +0100 Subject: [PATCH 077/307] Work on cash fence feature --- .../cashcontrol/class/cashcontrol.class.php | 113 +++++++++++++++--- htdocs/compta/cashcontrol/report.php | 4 +- .../install/mysql/migration/8.0.0-9.0.0.sql | 3 + .../mysql/tables/llx_pos_cash_fence.sql | 3 + 4 files changed, 105 insertions(+), 18 deletions(-) diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 451522e20ea..a741a0e5bbd 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -27,7 +27,7 @@ /** * Class to manage cash fence */ -class CashControl // extends CommonObject +class CashControl extends CommonObject { /** * @var string ID to identify managed object @@ -55,18 +55,20 @@ class CashControl // extends CommonObject public $picto = 'bank'; public $fields=array( - 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>10), - 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>15), - 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>20), + 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>10), + 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>15), + 'ref' =>array('type'=>'varchar(64)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>18), + 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>20), 'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25), 'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30), //'card' =>array('type'=>'double(24,8)', 'label'=>'Card', 'enabled'=>1, 'visible'=>1, 'position'=>35), + 'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>35), 'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>50), 'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55), - 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'position'=>60), - 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'position'=>65), - 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'position'=>70), - //'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>40), + 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>60), + 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>65), + 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>70), + 'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>80), 'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500), 'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505), 'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510), @@ -111,16 +113,18 @@ class CashControl // extends CommonObject // Insert request $sql = "INSERT INTO ".MAIN_DB_PREFIX."pos_cash_fence ("; $sql .= "entity"; + //$sql .= ", ref"; $sql .= ", opening"; $sql .= ", status"; $sql .= ", date_creation"; $sql .= ", posmodule"; $sql .= ", posnumber"; $sql .= ") VALUES ("; + //$sql .= "'(PROV)', "; $sql .= $conf->entity; $sql .= ", ".$this->opening; $sql .= ",1"; - $sql .= ", now()"; + $sql .= ", '".$this->db->idate(dol_now())."'"; $sql .= ", '".$this->posmodule."'"; $sql .= ", '".$this->posnumber."'"; $sql .= ")"; @@ -167,12 +171,12 @@ class CashControl // extends CommonObject // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence "; - $sql .= "SET"; - $sql .= " day_close=DAYOFMONTH(NOW())"; - $sql .= ", month_close=MONTH(NOW())"; - $sql .= ", year_close=YEAR(NOW())"; - $sql .= ", status=2"; - $sql .= " where rowid=".$this->id; + $sql.= "SET"; + $sql.= " day_close=DAYOFMONTH(NOW())"; + $sql.= ", month_close=MONTH(NOW())"; + $sql.= ", year_close=YEAR(NOW())"; + $sql.= ", status=2"; + $sql.= " where rowid=".$this->id; $this->db->begin(); dol_syslog(get_class($this)."::create", LOG_DEBUG); @@ -222,14 +226,17 @@ class CashControl // extends CommonObject if ($resql) { if ($this->db->num_rows($resql)) { $obj = $this->db->fetch_object($resql); + $this->ref = $obj->id; + $this->label = $obj->label; $this->opening = $obj->opening; $this->status = $obj->status; - $this->date_creation = $obj->date_creation; $this->year_close = $obj->year_close; $this->month_close = $obj->month_close; $this->day_close = $obj->day_close; $this->posmodule = $obj->posmodule; $this->posnumber = $obj->posnumber; + $this->date_creation = $obj->date_creation; + $this->tms = $obj->tms; $this->id=$id; } $this->db->free($resql); @@ -240,4 +247,78 @@ class CashControl // extends CommonObject return -1; } } + + + /** + * Return clicable link of object (with eventually picto) + * + * @param int $withpicto Add picto into link + * @param string $option Where point the link ('stock', 'composition', 'category', 'supplier', '') + * @param int $maxlength Maxlength of ref + * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking + * @param int $notooltip No tooltip + * @return string String with URL + */ + public function getNomUrl($withpicto=0, $option='', $maxlength=0, $save_lastsearch_value=-1, $notooltip=0) + { + global $conf, $langs, $hookmanager; + include_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; + + $result=''; + $newref=($this->ref?$this->ref:$this->id); + if ($maxlength) { $newref=dol_trunc($newref, $maxlength, 'middle'); } + + $label = '' . $langs->trans("ShowCashFence") . ''; + $label .= '
' . $langs->trans('ProductRef') . ': ' . ($this->ref?$this->ref:$this->id); + + $linkclose=''; + if (empty($notooltip)) { + if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { + $label=$langs->trans("ShowCashFence"); + $linkclose.=' alt="'.dol_escape_htmltag($label, 1).'"'; + } + + $linkclose.= ' title="'.dol_escape_htmltag($label, 1, 1).'"'; + $linkclose.= ' class="classfortooltip"'; + + /* + $hookmanager->initHooks(array('productdao')); + $parameters=array('id'=>$this->id); + $reshook=$hookmanager->executeHooks('getnomurltooltip',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) $linkclose = $hookmanager->resPrint; + */ + } + + $url = DOL_URL_ROOT.'/compta/cashcontrol/cashcontrol_card.php?id='.$this->id; + + if ($option !== 'nolink') { + // Add param to save lastsearch_values or not + $add_save_lastsearch_values=($save_lastsearch_value == 1 ? 1 : 0); + if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) { $add_save_lastsearch_values=1; + } + if ($add_save_lastsearch_values) { $url.='&save_lastsearch_values=1'; + } + } + + $linkstart = ''; + $linkend=''; + + $result.=$linkstart; + if ($withpicto) { + $result.=(img_object(($notooltip?'':$label), 'bank', ($notooltip?'class="paddingright"':'class="paddingright classfortooltip"'), 0, 0, $notooltip?0:1)); + } + $result.= $newref; + $result.= $linkend; + + global $action; + $hookmanager->initHooks(array('cashfencedao')); + $parameters=array('id'=>$this->id, 'getnomurl'=>$result); + $reshook=$hookmanager->executeHooks('getNomUrl', $parameters, $this, $action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) { $result = $hookmanager->resPrint; + } else { $result .= $hookmanager->resPrint; + } + + return $result; + } } \ No newline at end of file diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index 00bcda7607b..c1748134444 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -88,8 +88,8 @@ if ($resql) $i = 0; print "

"; - if ($cashcontrol->status==2) print "Cashcontrol ".$cashcontrol->id; - else print $langs->trans("Cashcontrol")." - ".$langs->trans("Draft"); + if ($cashcontrol->status==2) print $langs->trans("CashControl")." ".$cashcontrol->id; + else print $langs->trans("CashControl")." - ".$langs->trans("Draft"); print "
".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'day')."

"; diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index ef89604058e..7f50d9fe0d5 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -234,10 +234,12 @@ DROP TABLE llx_ticket_logs; CREATE TABLE llx_pos_cash_fence( rowid INTEGER AUTO_INCREMENT PRIMARY KEY, entity INTEGER DEFAULT 1 NOT NULL, + ref VARCHAR(64), label VARCHAR(255), opening double(24,8) default 0, cash double(24,8) default 0, card double(24,8) default 0, + cheque double(24,8) default 0, status INTEGER, date_creation DATETIME NOT NULL, day_close INTEGER, @@ -245,6 +247,7 @@ CREATE TABLE llx_pos_cash_fence( year_close INTEGER, posmodule VARCHAR(30), posnumber VARCHAR(30), + fk_user_creat integer, fk_user_valid integer, tms TIMESTAMP NOT NULL, import_key VARCHAR(14) diff --git a/htdocs/install/mysql/tables/llx_pos_cash_fence.sql b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql index f8014e17366..26a78d69f00 100644 --- a/htdocs/install/mysql/tables/llx_pos_cash_fence.sql +++ b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql @@ -17,10 +17,12 @@ CREATE TABLE llx_pos_cash_fence( rowid INTEGER AUTO_INCREMENT PRIMARY KEY, entity INTEGER DEFAULT 1 NOT NULL, + ref VARCHAR(64), label VARCHAR(255), opening double(24,8) default 0, cash double(24,8) default 0, card double(24,8) default 0, + cheque double(24,8) default 0, status INTEGER, date_creation DATETIME NOT NULL, day_close INTEGER, @@ -28,6 +30,7 @@ CREATE TABLE llx_pos_cash_fence( year_close INTEGER, posmodule VARCHAR(30), posnumber VARCHAR(30), + fk_user_creat integer, fk_user_valid integer, tms TIMESTAMP NOT NULL, import_key VARCHAR(14) From 2bfc5fe235b441d940df03f3b091329be730ccc3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 19:56:08 +0100 Subject: [PATCH 078/307] Work on cash fence --- htdocs/compta/cashcontrol/cashcontrol_card.php | 14 ++++++++------ .../compta/cashcontrol/class/cashcontrol.class.php | 4 ++-- htdocs/core/menus/standard/eldy.lib.php | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 9d52e83afd8..ce45bdc44ed 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -38,6 +38,7 @@ $id=GETPOST('id'); if (!$user->rights->banque->configurer) accessforbidden(); +$id=GETPOST('id','int'); $categid = GETPOST('categid'); $label = GETPOST("label"); @@ -55,15 +56,17 @@ if (! $sortfield) $sortfield='b.label'; if (! $sortorder) $sortorder='ASC'; + /* - * Add category + * Actions */ + if ($action=="start") { $cashcontrol= new CashControl($db); $cashcontrol->opening=GETPOST('opening'); - if (GETPOST('posmodule')==0) $cashcontrol->posmodule="cashdesk"; - else if (GETPOST('posmodule')==1) $cashcontrol->posmodule="takepos"; + if (GETPOST('posmodule')=='cashdesk') $cashcontrol->posmodule="cashdesk"; + else if (GETPOST('posmodule')=='takepos') $cashcontrol->posmodule="takepos"; $cashcontrol->posnumber=GETPOST('posnumber'); $id=$cashcontrol->create($user); $action="view"; @@ -77,7 +80,6 @@ if ($action=="close") $action="view"; } - if ($action=="create") { llxHeader(); @@ -92,7 +94,7 @@ if ($action=="create") print ''; print ''; print ''; - print ''; + print ''; print "\n"; print ''; print ''; @@ -103,7 +105,7 @@ if ($action=="create") print '
'.$langs->trans("Ref").''.$langs->trans("InitialBankBalance").''.$langs->trans("Module").''.$langs->trans("CashDesk").' ID,'.$langs->trans("Ref").''.$langs->trans("InitialBankBalance").''.$langs->trans("Module").''.$langs->trans("CashDesk").' ID
 
'; } -if ($action=="view") +if (empty($action) || $action=="view") { $cashcontrol= new CashControl($db); $cashcontrol->fetch($id); diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index a741a0e5bbd..3d3e97bab6f 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -68,10 +68,10 @@ class CashControl extends CommonObject 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>60), 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>65), 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>70), - 'status' =>array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>80), 'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500), 'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505), 'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510), + 'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>1000, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Brouillon', '1'=>'Validated')), ); public $id; @@ -123,7 +123,7 @@ class CashControl extends CommonObject //$sql .= "'(PROV)', "; $sql .= $conf->entity; $sql .= ", ".$this->opening; - $sql .= ",1"; + $sql .= ", 0"; // Draft by default $sql .= ", '".$this->db->idate(dol_now())."'"; $sql .= ", '".$this->posmodule."'"; $sql .= ", '".$this->posnumber."'"; diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 872edac9ed8..520d21e400a 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1249,8 +1249,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->takepos->enabled) || ! empty($conf->cashdesk->enabled)) { $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("CashControl"),0,1, '', $mainmenu, 'cashcontrol'); + $newmenu->add("/compta/cashcontrol/cashcontrol_card.php?action=create",$langs->trans("NewCashFence"),1,1); $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("List"),1,1); - $newmenu->add("/compta/cashcontrol/cashcontrol_card.php?action=create",$langs->trans("New"),1,1); } } From a601859985cb9774b702d5fca32d0742a32adf68 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Dec 2018 19:58:43 +0100 Subject: [PATCH 079/307] Work on cash fence --- htdocs/langs/en_US/banks.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/banks.lang b/htdocs/langs/en_US/banks.lang index 615cccf130e..d64662749da 100644 --- a/htdocs/langs/en_US/banks.lang +++ b/htdocs/langs/en_US/banks.lang @@ -165,5 +165,5 @@ SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation -CashControl=POS Cash Fence +CashControl=POS cash fence NewCashFence=New cash fence \ No newline at end of file From 50da3c2ed2d6cbe7c02cededc9b6cca94811953c Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 16 Dec 2018 06:14:33 +0100 Subject: [PATCH 080/307] Fix: Problem with loan integration in general ledger --- htdocs/accountancy/journal/bankjournal.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index d40c5ea059b..679f1ae4bf9 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -373,7 +373,13 @@ if ($result) { $paymentloanstatic->fk_loan = $links[$key]['url_id']; $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentloanstatic->getNomUrl(2); $tabpay[$obj->rowid]["paymentloanid"] = $paymentloanstatic->id; - //$tabtp[$obj->rowid][$account_pay_loan] += $obj->amount; + $paymentloanstatic->fetch($paymentloanstatic->id); + $account_loan_capital = (! empty($paymentloanstatic->account_capital) ? $paymentvariousstatic->account_capital : 'NotDefined'); // NotDefined is a reserved word + $account_loan_interest = (! empty($paymentloanstatic->account_interest) ? $paymentvariousstatic->account_interest : 'NotDefined'); // NotDefined is a reserved word + $account_loan_insurance = (! empty($paymentloanstatic->account_insurance) ? $paymentvariousstatic->account_insurance : 'NotDefined'); // NotDefined is a reserved word + $tabtp[$obj->rowid][$account_capital] += $obj->capital; + $tabtp[$obj->rowid][$account_interest] += $obj->interest; + $tabtp[$obj->rowid][$account_insurance] += $obj->insurance; } else if ($links[$key]['type'] == 'banktransfert') { $accountLinestatic->fetch($links[$key]['url_id']); $tabpay[$obj->rowid]["lib"] .= ' '.$langs->trans("BankTransfer").'- ' .$accountLinestatic ->getNomUrl(1); From 8148ea83614a8a15d8f60912acd0f1396f0f2d8c Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 16 Dec 2018 06:16:14 +0100 Subject: [PATCH 081/307] Revert "Fix: Problem with loan integration in general ledger" This reverts commit 50da3c2ed2d6cbe7c02cededc9b6cca94811953c. --- htdocs/accountancy/journal/bankjournal.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 679f1ae4bf9..d40c5ea059b 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -373,13 +373,7 @@ if ($result) { $paymentloanstatic->fk_loan = $links[$key]['url_id']; $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentloanstatic->getNomUrl(2); $tabpay[$obj->rowid]["paymentloanid"] = $paymentloanstatic->id; - $paymentloanstatic->fetch($paymentloanstatic->id); - $account_loan_capital = (! empty($paymentloanstatic->account_capital) ? $paymentvariousstatic->account_capital : 'NotDefined'); // NotDefined is a reserved word - $account_loan_interest = (! empty($paymentloanstatic->account_interest) ? $paymentvariousstatic->account_interest : 'NotDefined'); // NotDefined is a reserved word - $account_loan_insurance = (! empty($paymentloanstatic->account_insurance) ? $paymentvariousstatic->account_insurance : 'NotDefined'); // NotDefined is a reserved word - $tabtp[$obj->rowid][$account_capital] += $obj->capital; - $tabtp[$obj->rowid][$account_interest] += $obj->interest; - $tabtp[$obj->rowid][$account_insurance] += $obj->insurance; + //$tabtp[$obj->rowid][$account_pay_loan] += $obj->amount; } else if ($links[$key]['type'] == 'banktransfert') { $accountLinestatic->fetch($links[$key]['url_id']); $tabpay[$obj->rowid]["lib"] .= ' '.$langs->trans("BankTransfer").'- ' .$accountLinestatic ->getNomUrl(1); From 6eb901343026c6ab58c532cb5e2f49a11b069bf8 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 16 Dec 2018 06:36:55 +0100 Subject: [PATCH 082/307] Fix: Accountancy - remove alert on bank account configuration when bank account is closed --- htdocs/accountancy/journal/bankjournal.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 030140b7f11..434319a2eb9 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -840,7 +840,7 @@ if (empty($action) || $action == 'view') { // Test that setup is complete - $sql = 'SELECT COUNT(rowid) as nb FROM '.MAIN_DB_PREFIX.'bank_account WHERE fk_accountancy_journal IS NULL'; + $sql = 'SELECT COUNT(rowid) as nb FROM '.MAIN_DB_PREFIX.'bank_account WHERE fk_accountancy_journal IS NULL AND clos=0'; $resql = $db->query($sql); if ($resql) { From 6ce0d3e279db42636e230ea93316f7fde20e0a30 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sun, 16 Dec 2018 11:16:12 +0100 Subject: [PATCH 083/307] FIX: Vendor translations are in english --- htdocs/langs/es_ES/companies.lang | 44 +++++++++++------------ htdocs/langs/es_ES/errors.lang | 10 +++--- htdocs/langs/es_ES/margins.lang | 4 +-- htdocs/langs/es_ES/orders.lang | 12 +++---- htdocs/langs/es_ES/supplier_proposal.lang | 26 +++++++------- htdocs/langs/es_ES/suppliers.lang | 30 ++++++++-------- htdocs/langs/es_ES/workflow.lang | 4 +-- 7 files changed, 65 insertions(+), 65 deletions(-) diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index 1736c591f63..4ff958a006c 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -8,11 +8,11 @@ ConfirmDeleteContact=¿Está seguro de querer eliminar este contacto y toda la i MenuNewThirdParty=Nuevo tercero MenuNewCustomer=Nuevo cliente MenuNewProspect=Nuevo cliente potencial -MenuNewSupplier=New vendor +MenuNewSupplier=Nuevo proveedor MenuNewPrivateIndividual=Nuevo particular -NewCompany=New company (prospect, customer, vendor) -NewThirdParty=New third party (prospect, customer, vendor) -CreateDolibarrThirdPartySupplier=Create a third party (vendor) +NewCompany=Nueva empresa (cliente potencial, cliente, proveedor) +NewThirdParty=Nuevo tercero (cliente potencial, cliente, proveedor) +CreateDolibarrThirdPartySupplier=Crear tercero (proveedor) CreateThirdPartyOnly=Crear tercero CreateThirdPartyAndContact=Crear un tercero + un contacto ProspectionArea=Área de prospección @@ -37,7 +37,7 @@ ThirdPartyProspectsStats=Clientes potenciales ThirdPartyCustomers=Clientes ThirdPartyCustomersStats=Clientes ThirdPartyCustomersWithIdProf12=Clientes con %s ó %s -ThirdPartySuppliers=Vendors +ThirdPartySuppliers=Proveedores ThirdPartyType=Tipo de tercero Individual=Particular ToCreateContactWithSameName=Creará automáticamente un contacto físico con la misma información. en la mayoría de casos. En la mayoría de los casos, incluso si el tercero es una persona física, la creación de un tercero por sí solo es suficiente. @@ -77,11 +77,11 @@ Web=Web Poste= Puesto DefaultLang=Idioma por defecto VATIsUsed=IVA está siendo usado -VATIsUsedWhenSelling=This define if this third party includes a sale tax or not when it makes an invoice to its own customers +VATIsUsedWhenSelling=Esto define si este tercero incluye IVA o no cuando realiza una factura a sus propios clientes. VATIsNotUsed=IVA no está siendo usado CopyAddressFromSoc=Copiar dirección de la empresa -ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor vendor, no available refering objects -ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor supplier, discounts are not available +ThirdpartyNotCustomerNotSupplierSoNoRef=Tercero ni cliente ni proveedor, no hay objetos de referencia disponibles +ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Tercero ni cliente ni proveedor, los descuentos no están disponibles. PaymentBankAccount=Cuenta bancaria de pago OverAllProposals=Presupuestos OverAllOrders=Pedidos @@ -99,9 +99,9 @@ LocalTax2ES=IRPF TypeLocaltax1ES=Tasa RE TypeLocaltax2ES=Tasa IRPF WrongCustomerCode=Código cliente incorrecto -WrongSupplierCode=Vendor code invalid +WrongSupplierCode=Código proveedor incorrecto CustomerCodeModel=Modelo de código cliente -SupplierCodeModel=Vendor code model +SupplierCodeModel=Modelo de código proveedor Gencod=Código de barras ##### Professional ID ##### ProfId1Short=Prof. id 1 @@ -267,7 +267,7 @@ Prospect=Cliente potencial CustomerCard=Ficha cliente Customer=Cliente CustomerRelativeDiscount=Descuento cliente relativo -SupplierRelativeDiscount=Relative vendor discount +SupplierRelativeDiscount=Descuento proveedor relativo CustomerRelativeDiscountShort=Descuento relativo CustomerAbsoluteDiscountShort=Descuento fijo CompanyHasRelativeDiscount=Este cliente tiene un descuento por defecto de %s%% @@ -284,8 +284,8 @@ HasCreditNoteFromSupplier=Tiene abonos para %s %s en este proveedor CompanyHasNoAbsoluteDiscount=Este cliente no tiene más descuentos fijos disponibles CustomerAbsoluteDiscountAllUsers=Descuentos fijos a clientes (acordado por todos los usuarios) CustomerAbsoluteDiscountMy=Descuentos fijos a clientes (acordados personalmente) -SupplierAbsoluteDiscountAllUsers=Absolute vendor discounts (entered by all users) -SupplierAbsoluteDiscountMy=Absolute vendor discounts (entered by yourself) +SupplierAbsoluteDiscountAllUsers=Descuentos fijos de proveedores (acordado por todos los usuarios) +SupplierAbsoluteDiscountMy=Descuentos fijos a proveedores (acordados personalmente) DiscountNone=Ninguna Supplier=Proveedor AddContact=Crear contacto @@ -304,13 +304,13 @@ DeleteACompany=Eliminar una empresa PersonalInformations=Información personal AccountancyCode=Cuenta contable CustomerCode=Código cliente -SupplierCode=Vendor code +SupplierCode=Código proveedor CustomerCodeShort=Código cliente -SupplierCodeShort=Vendor code +SupplierCodeShort=Código proveedor CustomerCodeDesc=Código único cliente para cada cliente -SupplierCodeDesc=Vendor code, unique for all vendors +SupplierCodeDesc=Código único proveedor para cada proveedor RequiredIfCustomer=Requerida si el tercero es un cliente o cliente potencial -RequiredIfSupplier=Required if third party is a vendor +RequiredIfSupplier=Requerida si el tercero es un proveedor ValidityControledByModule=Validación controlada por el módulo ThisIsModuleRules=Esta es la regla para este módulo ProspectToContact=Cliente potencial a contactar @@ -338,7 +338,7 @@ MyContacts=Mis contactos Capital=Capital CapitalOf=Capital de %s EditCompany=Modificar empresa -ThisUserIsNot=This user is not a prospect, customer nor vendor +ThisUserIsNot=Este usuario no es ni cliente potencial ni cliente ni proveedor VATIntraCheck=Verificar VATIntraCheckDesc=El link %s permite consultar al servicio europeo de control de números de IVA intracomunitario. Se requiere acceso a internet para que el servicio funcione VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do @@ -396,7 +396,7 @@ ImportDataset_company_4=Terceros/Comerciales (Asigna usuarios comerciales a terc PriceLevel=Nivel de precios DeliveryAddress=Dirección de envío AddAddress=Añadir dirección -SupplierCategory=Vendor category +SupplierCategory=Categoría proveedor JuridicalStatus200=Independiente DeleteFile=Eliminación de un archivo ConfirmDeleteFile=¿Está seguro de querer eliminar este archivo? @@ -406,7 +406,7 @@ FiscalYearInformation=Información del año fiscal FiscalMonthStart=Mes de inicio de ejercicio YouMustAssignUserMailFirst=Primero debe indicar un e-mail para este usuario para poder añadirlo en e-mails de notificaciones. YouMustCreateContactFirst=Para poder añadir notificaciones por e-mail, primero debe definir contactos con e-mails válidos en el tercero -ListSuppliersShort=List of vendors +ListSuppliersShort=Listado de proveedores ListProspectsShort=Listado de clientes potenciales ListCustomersShort=Listado de clientes ThirdPartiesArea=Área terceros y contactos @@ -420,7 +420,7 @@ CurrentOutstandingBill=Riesgo alcanzado OutstandingBill=Importe máximo para facturas pendientes OutstandingBillReached=Importe máximo para facturas pendientes OrderMinAmount=Importe mínimo para pedido -MonkeyNumRefModelDesc=Return numero with format %syymm-nnnn for customer code and %syymm-nnnn for vendor code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. +MonkeyNumRefModelDesc=Devuelve un número con formato %syymm-nnnn para el código del cliente y %syymm-nnnn para el código del proveedor donde yy es año, mm es mes y nnnn es una secuencia sin interrupción y sin retorno a 0. LeopardNumRefModelDesc=Código de cliente/proveedor libre sin verificación. Puede ser modificado en cualquier momento. ManagingDirectors=Administrador(es) (CEO, director, presidente, etc.) MergeOriginThirdparty=Tercero duplicado (tercero que debe eliminar) @@ -431,4 +431,4 @@ SaleRepresentativeLogin=Inicio de sesión del comercial SaleRepresentativeFirstname=Nombre del comercial SaleRepresentativeLastname=Apellidos del comercial ErrorThirdpartiesMerge=Se produjo un error al eliminar los terceros. Por favor, compruebe el log. Los cambios han sido anulados. -NewCustomerSupplierCodeProposed=New customer or vendor code suggested on duplicate code +NewCustomerSupplierCodeProposed=Nuevo código de cliente o proveedor sugerido duplicado diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 26902fa0858..422ee5c7fc8 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -32,9 +32,9 @@ ErrorBarCodeRequired=Código de barras requerido ErrorCustomerCodeAlreadyUsed=Código de cliente ya utilizado ErrorBarCodeAlreadyUsed=El código de barras ya está siendo utilizado ErrorPrefixRequired=Prefijo obligatorio -ErrorBadSupplierCodeSyntax=Bad syntax for vendor code -ErrorSupplierCodeRequired=Vendor code required -ErrorSupplierCodeAlreadyUsed=Vendor code already used +ErrorBadSupplierCodeSyntax=La sintaxis del código de proveedor es incorrecta +ErrorSupplierCodeRequired=Código de proveedor obligatorio +ErrorSupplierCodeAlreadyUsed=Código de cliente ya utilizado ErrorBadParameters=Parámetros incorrectos ErrorBadValueForParameter=valor '%s' incorrecto para el parámetro '%s' ErrorBadImageFormat=El archivo de imagen es de un formato no soportado (Su PHP no soporta las funciones de conversión de este formato de imagen) @@ -87,7 +87,7 @@ ErrorsOnXLines=Errores en %s líneas fuente ErrorFileIsInfectedWithAVirus=¡El antivirus no ha podido validar este archivo (es probable que esté infectado por un virus)! ErrorSpecialCharNotAllowedForField=Los caracteres especiales no son admitidos por el campo "%s" ErrorNumRefModel=Hay una referencia en la base de datos (%s) y es incompatible con esta numeración. Elimine la línea o renombre la referencia para activar este módulo. -ErrorQtyTooLowForThisSupplier=Quantity too low for this vendor or no price defined on this product for this supplier +ErrorQtyTooLowForThisSupplier=Cantidad demasiado baja para este proveedor o ningún precio definido en este producto para este proveedor ErrorModuleSetupNotComplete=La configuración del módulo parece incompleta. Vaya a Inicio - Configuración - Módulos para completarla. ErrorBadMask=Error en la máscara ErrorBadMaskFailedToLocatePosOfSequence=Error, sin número de secuencia en la máscara @@ -177,7 +177,7 @@ ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Definición incorrecta de la mat ErrorSavingChanges=Ha ocurrido un error al guardar los cambios ErrorWarehouseRequiredIntoShipmentLine=El almacén es obligatorio en la línea a enviar ErrorFileMustHaveFormat=El archivo debe tener el formato %s -ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first. +ErrorSupplierCountryIsNotDefined=El país para este proveedor no está definido. Corrija esto primero. ErrorsThirdpartyMerge=No se han podido fusionar los dos registros. Petición cancelada. ErrorStockIsNotEnoughToAddProductOnOrder=No hay stock suficiente del producto %s para añadirlo a un nuevo pedido. ErrorStockIsNotEnoughToAddProductOnInvoice=No hay stock suficiente del producto %s para añadirlo a una nueva factura. diff --git a/htdocs/langs/es_ES/margins.lang b/htdocs/langs/es_ES/margins.lang index 702b8a1aacc..9a4e450fde5 100644 --- a/htdocs/langs/es_ES/margins.lang +++ b/htdocs/langs/es_ES/margins.lang @@ -28,10 +28,10 @@ UseDiscountAsService=Como un servicio UseDiscountOnTotal=Sobre el total MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Indica si un descuento global se toma en cuenta como un producto, servicio o sólo en el total a la hora de calcular los márgenes. MARGIN_TYPE=Precio compra/coste sugerido por defecto por el cálculo de márgenes -MargeType1=Margin on Best vendor price +MargeType1=Margen en Mejor Precio Proveedor MargeType2=Margen en Precio Medio Ponderado (PMP) MargeType3=Margen en Precio de coste -MarginTypeDesc=* Margin on best buying price = Selling price - Best vendor price defined on product card
* Margin on Weighted Average Price (WAP) = Selling price - Product Weighted Average Price (WAP) or best supplier price if WAP not yet defined
* Margin on Cost price = Selling price - Cost price defined on product card or WAP if cost price not defined, or best supplier price if WAP not yet defined +MarginTypeDesc=* Margen en mejor precio de compra = Precio de venta - Mejor precio de proveedor definido en la ficha del producto
* Margen en Precio promedio ponderado (PMP) = Precio de venta - Precio Medio Ponderado del producto (PMP), o mejor precio de proveedor si PMP aún no está definido
* Margen en precio de coste = Precio de venta - precio de coste definido en la ficha del producto o PMP si el precio de coste no está definido, o mejor precio de proveedor si PMP aún no está definido CostPrice=Precio de compra UnitCharges=Carga unitaria Charges=Cargas diff --git a/htdocs/langs/es_ES/orders.lang b/htdocs/langs/es_ES/orders.lang index 0c56501ab5a..10898b187ad 100644 --- a/htdocs/langs/es_ES/orders.lang +++ b/htdocs/langs/es_ES/orders.lang @@ -101,8 +101,8 @@ DraftSuppliersOrders=Draft purchase orders OnProcessOrders=Pedidos en proceso RefOrder=Ref. pedido RefCustomerOrder=Ref. pedido para el cliente -RefOrderSupplier=Ref. order for vendor -RefOrderSupplierShort=Ref. order vendor +RefOrderSupplier=Ref. pedido para el proveedor +RefOrderSupplierShort=Ref. ped. prov. SendOrderByMail=Enviar pedido por e-mail ActionsOnOrder=Eventos sobre el pedido NoArticleOfTypeProduct=No hay artículos de tipo 'producto' y por lo tanto enviables en este pedido @@ -125,11 +125,11 @@ TypeContact_commande_internal_SHIPPING=Responsable envío pedido cliente TypeContact_commande_external_BILLING=Contacto cliente facturación pedido TypeContact_commande_external_SHIPPING=Contacto cliente entrega pedido TypeContact_commande_external_CUSTOMER=Contacto cliente seguimiento pedido -TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up purchase order +TypeContact_order_supplier_internal_SALESREPFOLL=Comercial seguimiento pedido de compra TypeContact_order_supplier_internal_SHIPPING=Responsable recepción pedido a proveedor -TypeContact_order_supplier_external_BILLING=Vendor invoice contact -TypeContact_order_supplier_external_SHIPPING=Vendor shipping contact -TypeContact_order_supplier_external_CUSTOMER=Vendor contact following-up order +TypeContact_order_supplier_external_BILLING=Contacto proveedor factura +TypeContact_order_supplier_external_SHIPPING=Contacto seguimiento proveedor +TypeContact_order_supplier_external_CUSTOMER=Contacto seguimiento pedido a proveedor Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constante COMMANDE_SUPPLIER_ADDON no definida Error_COMMANDE_ADDON_NotDefined=Constante COMMANDE_ADDON no definida Error_OrderNotChecked=No se han seleccionado pedidos a facturar diff --git a/htdocs/langs/es_ES/supplier_proposal.lang b/htdocs/langs/es_ES/supplier_proposal.lang index 07e5cf18b19..2ccfdecade8 100644 --- a/htdocs/langs/es_ES/supplier_proposal.lang +++ b/htdocs/langs/es_ES/supplier_proposal.lang @@ -1,22 +1,22 @@ # Dolibarr language file - Source file is en_US - supplier_proposal -SupplierProposal=Vendor commercial proposals -supplier_proposalDESC=Manage price requests to vendors +SupplierProposal=Presupuestos de proveedor +supplier_proposalDESC=Gestiona presupuestos de proveedor SupplierProposalNew=Nuevo presupuesto CommRequest=Presupuesto CommRequests=Presupuestos SearchRequest=Buscar un presupuesto DraftRequests=Presupuestos borrador -SupplierProposalsDraft=Draft vendor proposals -LastModifiedRequests=Últimos %s consultas de precios modificados +SupplierProposalsDraft=Presupuestos de proveedor borrador +LastModifiedRequests=Últimos %s presupuestos RequestsOpened=Presupuestos abiertos -SupplierProposalArea=Vendor proposals area -SupplierProposalShort=Vendor proposal -SupplierProposals=Vendor proposals -SupplierProposalsShort=Vendor proposals +SupplierProposalArea=Área presupuestos de proveedor +SupplierProposalShort=Presupuesto de proveedor +SupplierProposals=Presupuestos de proveedor +SupplierProposalsShort=Presup. proveedor NewAskPrice=Nuevo presupuesto ShowSupplierProposal=Mostrar presupuesto AddSupplierProposal=Crear un presupuesto -SupplierProposalRefFourn=Vendor ref +SupplierProposalRefFourn=Ref. proveedor SupplierProposalDate=Fecha de entrega SupplierProposalRefFournNotice=Antes de cerrar a "Aceptado", piense en consultar las referencias de proveedores. ConfirmValidateAsk=¿Está seguro de querer validar este presupuesto bajo la referencia %s? @@ -47,9 +47,9 @@ CommercialAsk=Presupuesto DefaultModelSupplierProposalCreate=Modelo por defecto DefaultModelSupplierProposalToBill=Modelo por defecto al cerrar un presupuesto (aceptado) DefaultModelSupplierProposalClosed=Modelo por defecto al cerrar un presupuesto (rechazado) -ListOfSupplierProposals=List of vendor proposal requests -ListSupplierProposalsAssociatedProject=List of vendor proposals associated with project -SupplierProposalsToClose=Vendor proposals to close -SupplierProposalsToProcess=Vendor proposals to process +ListOfSupplierProposals=Listado de presupuestos de proveedor +ListSupplierProposalsAssociatedProject=Listado de presupuestos de proveedor asociados al proyecto +SupplierProposalsToClose=Presupuestos de proveedor a cerrar +SupplierProposalsToProcess=Presupuestos de proveedor a procesar LastSupplierProposals=Últimos %s presupuestos AllPriceRequests=Todos los presupuestos diff --git a/htdocs/langs/es_ES/suppliers.lang b/htdocs/langs/es_ES/suppliers.lang index 4cbcf8788eb..ed58f3cf855 100644 --- a/htdocs/langs/es_ES/suppliers.lang +++ b/htdocs/langs/es_ES/suppliers.lang @@ -1,11 +1,11 @@ # Dolibarr language file - Source file is en_US - suppliers -Suppliers=Vendors -SuppliersInvoice=Vendor invoice -ShowSupplierInvoice=Show Vendor Invoice -NewSupplier=New vendor +Suppliers=Proveedores +SuppliersInvoice=Factura de proveedor +ShowSupplierInvoice=Ver factura de proveedor +NewSupplier=Nuevo proveedor History=Histórico -ListOfSuppliers=List of vendors -ShowSupplier=Show vendor +ListOfSuppliers=Listado de proveedores +ShowSupplier=Ver proveedor OrderDate=Fecha de pedido BuyingPriceMin=Mejor precio de compra BuyingPriceMinShort=Mejor precio de compra @@ -14,12 +14,12 @@ TotalSellingPriceMinShort=Total de los precios de venta de los subproductos SomeSubProductHaveNoPrices=Algunos subproductos no tienen precio definido AddSupplierPrice=Añadir precio de compra ChangeSupplierPrice=Cambiar precio de compra -SupplierPrices=Vendor prices +SupplierPrices=Precios proveedor ReferenceSupplierIsAlreadyAssociatedWithAProduct=Esta referencia de proveedor ya está asociada a la referencia: %s -NoRecordedSuppliers=No vendor recorded -SupplierPayment=Vendor payment -SuppliersArea=Vendor area -RefSupplierShort=Ref. vendor +NoRecordedSuppliers=Sin proveedores registrados +SupplierPayment=Pagos a proveedor +SuppliersArea=Área proveedores +RefSupplierShort=Ref. proveedor Availability=Disponibilidad ExportDataset_fournisseur_1=Facturas de proveedor y líneas de factura ExportDataset_fournisseur_2=Facturas de proveedor y pagos @@ -31,17 +31,17 @@ ConfirmDenyingThisOrder=¿Está seguro de querer denegar el pedido a proveedor < ConfirmCancelThisOrder=¿Está seguro de querer cancelar el pedido a proveedor %s? AddSupplierOrder=Crear pedido a proveedor AddSupplierInvoice=Crear factura de proveedor -ListOfSupplierProductForSupplier=List of products and prices for vendor %s -SentToSuppliers=Sent to vendors +ListOfSupplierProductForSupplier=Listado de productos y precios del proveedor %s +SentToSuppliers=Enviado a proveedores ListOfSupplierOrders=Listado de pedidos a proveedor MenuOrdersSupplierToBill=Pedidos a proveedor a facturar NbDaysToDelivery=Tiempo de entrega en días DescNbDaysToDelivery=El mayor retraso en las entregas de productos de este pedido -SupplierReputation=Vendor reputation +SupplierReputation=Reputación proveedor DoNotOrderThisProductToThisSupplier=No realizar pedidos NotTheGoodQualitySupplier=Mala calidad ReputationForThisProduct=Reputación BuyerName=Nombre del comprador AllProductServicePrices=Todos los precios de producto / servicio AllProductReferencesOfSupplier=Todos las referencias de proveedores de producto / servicio -BuyingPriceNumShort=Vendor prices +BuyingPriceNumShort=Precios proveedor diff --git a/htdocs/langs/es_ES/workflow.lang b/htdocs/langs/es_ES/workflow.lang index 058e6bf75f0..05bfef7aee4 100644 --- a/htdocs/langs/es_ES/workflow.lang +++ b/htdocs/langs/es_ES/workflow.lang @@ -14,7 +14,7 @@ descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Clasificar pedido(s) de client descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Clasificar pedido(s) de cliente origen como facturado cuando la factura a cliente sea marcada como pagada (y si el importe de la factura es la misma que la suma de los importes de los pedidos relacionados) descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Clasificar automáticamente el pedido origen como enviado cuando el envío se valide (y si la cantidad enviada por todos los envíos sea la misma que el pedido) # Autoclassify supplier order -descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classify linked source vendor proposal(s) to billed when vendor invoice is validated (and if amount of the invoice is same than total amount of linked proposals) -descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Classify linked source purchase order(s) to billed when vendor invoice is validated (and if amount of the invoice is same than total amount of linked orders) +descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Clasificar los presupuesto(s) de proveedor origen como facturado(s) cuando la factura de proveedor (y si el importe de la factura es igual a la suma de los importes de los presupuestos relacionados) +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Clasificar pedido(s) a proveedor origen como facturado(s) cuando la factura de proveedor se valide (y si el importe de la factura es igual a la suma de los importes de los pedidos relacionados) AutomaticCreation=Creación automática AutomaticClassification=Clasificación automática From 699766223f66781c23e9c5c52488be4723ccacc6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 12:59:59 +0100 Subject: [PATCH 084/307] Fix phpcs --- htdocs/compta/cashcontrol/class/cashcontrol.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 3d3e97bab6f..d05a99ac709 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -125,8 +125,8 @@ class CashControl extends CommonObject $sql .= ", ".$this->opening; $sql .= ", 0"; // Draft by default $sql .= ", '".$this->db->idate(dol_now())."'"; - $sql .= ", '".$this->posmodule."'"; - $sql .= ", '".$this->posnumber."'"; + $sql .= ", '".$this->db->escape($this->posmodule)."'"; + $sql .= ", '".$this->db->escape($this->posnumber)."'"; $sql .= ")"; $this->db->begin(); From cca3b4870a06237a3210c9a6bc90ed58d59e9bd0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 13:36:51 +0100 Subject: [PATCH 085/307] FIX CVE-2018-19799 --- htdocs/exports/export.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index 6d65418be3c..13d28189e95 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2018 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2012 Marcos García * Copyright (C) 2012 Charles-Fr BENKE @@ -123,14 +123,14 @@ $entitytolang = array( $array_selected=isset($_SESSION["export_selected_fields"])?$_SESSION["export_selected_fields"]:array(); $array_filtervalue=isset($_SESSION["export_filtered_fields"])?$_SESSION["export_filtered_fields"]:array(); -$datatoexport=GETPOST("datatoexport"); -$action=GETPOST('action', 'alpha'); -$confirm=GETPOST('confirm', 'alpha'); -$step=GETPOST("step")?GETPOST("step"):1; -$export_name=GETPOST("export_name"); -$hexa=GETPOST("hexa"); -$exportmodelid=GETPOST("exportmodelid"); -$field=GETPOST("field"); +$datatoexport=GETPOST("datatoexport","aZ09"); +$action=GETPOST('action','alpha'); +$confirm=GETPOST('confirm','alpha'); +$step=GETPOST("step","int")?GETPOST("step","int"):1; +$export_name=GETPOST("export_name","alphanohtml"); +$hexa=GETPOST("hexa","alpha"); +$exportmodelid=GETPOST("exportmodelid","int"); +$field=GETPOST("field","alpa"); $objexport=new Export($db); $objexport->load_arrays($user,$datatoexport); From 988ba172ae0369e05a75d421a160ab534e3d0683 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 14:59:51 +0100 Subject: [PATCH 086/307] Clean code of POS modules --- htdocs/cashdesk/admin/cashdesk.php | 42 ++++--- .../compta/cashcontrol/cashcontrol_card.php | 11 +- .../cashcontrol/class/cashcontrol.class.php | 9 +- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/core/modules/modCashDesk.class.php | 2 +- htdocs/core/modules/modTakePos.class.php | 2 +- htdocs/langs/en_US/admin.lang | 6 +- htdocs/takepos/admin/setup.php | 105 +++++++++--------- 8 files changed, 100 insertions(+), 79 deletions(-) diff --git a/htdocs/cashdesk/admin/cashdesk.php b/htdocs/cashdesk/admin/cashdesk.php index 62867d855cb..399a59b4687 100644 --- a/htdocs/cashdesk/admin/cashdesk.php +++ b/htdocs/cashdesk/admin/cashdesk.php @@ -86,7 +86,7 @@ $formproduct=new FormProduct($db); llxHeader('',$langs->trans("CashDeskSetup")); $linkback=''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("CashDeskSetup"),$linkback,'title_setup'); +print load_fiche_titre($langs->trans("CashDeskSetup").' (SimplePOS)',$linkback,'title_setup'); print '
'; @@ -95,9 +95,28 @@ print '
'; print ''; print ''; +if (! empty($conf->service->enabled)) +{ + print ''; + print ''; + print ''; + print "\n"; + + print '\n"; + + print '
'.$langs->trans("Parameters").''.$langs->trans("Value").'
'; + print $langs->trans("CashdeskShowServices"); + print ''; + print $form->selectyesno("CASHDESK_SERVICES",$conf->global->CASHDESK_SERVICES,1); + print "
'; + + print '
'; +} + + print ''; print ''; -print ''; +print ''; print "\n"; print ''; @@ -106,19 +125,19 @@ print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.cli print ''; if (! empty($conf->banque->enabled)) { - + print ''; print ''; - + print ''; print ''; - + print ''; print ''; // Force warehouse (this is not a default value) print ''; // Force warehouse (this is not a default value) print ''; } -if (! empty($conf->service->enabled)) -{ - print '\n"; -} - // Use Dolibarr Receipt Printer if (! empty($conf->receiptprinter->enabled)) { diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index ce45bdc44ed..307b024aea6 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -94,13 +94,16 @@ if ($action=="create") print ''; print '
'.$langs->trans("Parameters").''.$langs->trans("Value").''.$langs->trans("Terminal").' 0'.$langs->trans("Value").'
'.$langs->trans("CashDeskThirdPartyForSell").'
'.$langs->trans("CashDeskBankAccountForSell").''; $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CASH,'CASHDESK_ID_BANKACCOUNT_CASH',0,"courant=2",1); print '
'.$langs->trans("CashDeskBankAccountForCheque").''; $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE,'CASHDESK_ID_BANKACCOUNT_CHEQUE',0,"courant=1",1); print '
'.$langs->trans("CashDeskBankAccountForCB").''; $form->select_comptes($conf->global->CASHDESK_ID_BANKACCOUNT_CB,'CASHDESK_ID_BANKACCOUNT_CB',0,"courant=1",1); @@ -127,7 +146,7 @@ if (! empty($conf->banque->enabled)) if (! empty($conf->stock->enabled)) { - + print '
'.$langs->trans("CashDeskDoNotDecreaseStock").''; if (empty($conf->productbatch->enabled)) { @@ -144,7 +163,7 @@ if (! empty($conf->stock->enabled)) $disabled=$conf->global->CASHDESK_NO_DECREASE_STOCK; - + print '
'.$langs->trans("CashDeskIdWareHouse").''; if (! $disabled) @@ -159,15 +178,6 @@ if (! empty($conf->stock->enabled)) print '
'; - print $langs->trans("CashdeskShowServices"); - print ''; - print $form->selectyesno("CASHDESK_SERVICES",$conf->global->CASHDESK_SERVICES,1); - print "
'; print ''; - print ''; + print ''; + print ''; + print ''; + print ''; print "\n"; print ''; - print ''; print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print ''; print '
'.$langs->trans("Ref").''.$langs->trans("InitialBankBalance").''.$langs->trans("Module").''.$langs->trans("CashDesk").' ID'.$langs->trans("Module").''.$langs->trans("CashDesk").' ID'.$langs->trans("InitialBankBalance").'
 '.$form->selectarray('posmodule', $arrayofposavailable, 1).'
'; } diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index d05a99ac709..5750a0877c9 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -55,14 +55,14 @@ class CashControl extends CommonObject public $picto = 'bank'; public $fields=array( - 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>10), + 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>10), 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>15), 'ref' =>array('type'=>'varchar(64)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>18), 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>20), 'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25), 'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30), - //'card' =>array('type'=>'double(24,8)', 'label'=>'Card', 'enabled'=>1, 'visible'=>1, 'position'=>35), - 'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>35), + 'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>33), + 'card' =>array('type'=>'double(24,8)', 'label'=>'Card', 'enabled'=>1, 'visible'=>1, 'position'=>36), 'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>50), 'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55), 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>60), @@ -140,6 +140,9 @@ class CashControl extends CommonObject if (!$error) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."pos_cash_fence"); + + $sql = 'UPDATE '.MAIN_DB_PREFIX.'pos_cash_fence SET ref = rowid where rowid = '.$this->id; + $this->db->query($sql); } // Commit or rollback diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 520d21e400a..7c736465761 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1248,7 +1248,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Cash Control if (! empty($conf->takepos->enabled) || ! empty($conf->cashdesk->enabled)) { - $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("CashControl"),0,1, '', $mainmenu, 'cashcontrol'); + $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("POS"),0,1, '', $mainmenu, 'cashcontrol'); $newmenu->add("/compta/cashcontrol/cashcontrol_card.php?action=create",$langs->trans("NewCashFence"),1,1); $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("List"),1,1); } diff --git a/htdocs/core/modules/modCashDesk.class.php b/htdocs/core/modules/modCashDesk.class.php index d9bfe6b0b5f..472abe53a42 100644 --- a/htdocs/core/modules/modCashDesk.class.php +++ b/htdocs/core/modules/modCashDesk.class.php @@ -46,7 +46,7 @@ class modCashDesk extends DolibarrModules $this->rights_class = 'cashdesk'; $this->family = "portal"; - $this->module_position = '10'; + $this->module_position = '55'; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); $this->description = "CashDesk module"; diff --git a/htdocs/core/modules/modTakePos.class.php b/htdocs/core/modules/modTakePos.class.php index 1a0a681e206..df541c97e90 100644 --- a/htdocs/core/modules/modTakePos.class.php +++ b/htdocs/core/modules/modTakePos.class.php @@ -53,7 +53,7 @@ class modTakePos extends DolibarrModules // It is used to group modules by family in module setup page $this->family = "portal"; // Module position in the family on 2 digits ('01', '10', '20', ...) - $this->module_position = '90'; + $this->module_position = '60'; // Gives the possibility to the module, to provide his own family info and position of this family (Overwrite $this->family and $this->module_position. Avoid this) //$this->familyinfo = array('myownfamily' => array('position' => '01', 'label' => $langs->trans("MyOwnFamily"))); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 01900aba754..8c62a74024c 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -623,9 +623,9 @@ Module40000Desc=Use alternative currencies in prices and documents Module50000Name=PayBox Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) Module50100Name=Point of sales -Module50100Desc=Point of sales module (POS). +Module50100Desc=Point of sales module SimplePOS (simple POS). Module50150Name=Point of sales -Module50150Desc=Point of sales module (Touch screen POS). +Module50150Desc=Point of sales module TakePOS (touch screen POS). Module50200Name=Paypal Module50200Desc=Offer customers a PayPal online payment page (PayPal account or credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) Module50400Name=Accounting (advanced) @@ -1619,7 +1619,7 @@ CashDeskBankAccountForCB= Default account to use to receive payments by credit c CashDeskDoNotDecreaseStock=Disable stock decrease when a sale is done from Point of Sale (if "no", stock decrease is done for each sale done from POS, irrespective of the option set in module Stock). CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease StockDecreaseForPointOfSaleDisabled=Stock decrease from Point of Sale disabled -StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with lot management +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with module Serial/Lot management (currently active) so stock decrease is disabled. CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. ##### Bookmark ##### BookmarkSetup=Bookmark module setup diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index 58601201fbe..e2f944d6641 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -86,7 +86,7 @@ $formproduct=new FormProduct($db); llxHeader('',$langs->trans("CashDeskSetup")); $linkback=''.$langs->trans("BackToModuleList").''; -print load_fiche_titre($langs->trans("CashDeskSetup"),$linkback,'title_setup'); +print load_fiche_titre($langs->trans("CashDeskSetup").' (TakePOS)',$linkback,'title_setup'); print '
'; @@ -95,9 +95,59 @@ print '
'; print ''; print ''; +if (! empty($conf->service->enabled)) +{ + print ''; + + print ''; + print ''; + print "\n"; + + print '\n"; + + // Use Takepos printing + print '\n"; + + if ($conf->global->TAKEPOSCONNECTOR){ + print ''; + } + + // Bar Restaurant mode + print '\n"; + + if ($conf->global->TAKEPOS_BAR_RESTAURANT and $conf->global->TAKEPOSCONNECTOR){ + print ''; + } + + print '
'.$langs->trans("Parameters").''.$langs->trans("Value").'
'; + print $langs->trans("CashdeskShowServices"); + print ''; + print $form->selectyesno("CASHDESK_SERVICES",$conf->global->CASHDESK_SERVICES,1); + print "
'; + print $langs->trans("DolibarrReceiptPrinter").' ('.$langs->trans("TakeposConnectorNecesary").')'; + print ''; + print $form->selectyesno("TAKEPOSCONNECTOR",$conf->global->TAKEPOSCONNECTOR,1); + print "
'; + print $langs->trans("IPAddress").' ('.$langs->trans("TakeposConnectorNecesary").')'; + print ''; + print ''; + print '
'; + print 'Bar Restaurant'; + print ''; + print $form->selectyesno("TAKEPOS_BAR_RESTAURANT",$conf->global->TAKEPOS_BAR_RESTAURANT,1); + print "
'; + print $langs->trans("OrderPrinters").' ('.$langs->trans("Setup").')'; + print ''; + print $form->selectyesno("TAKEPOS_ORDER_PRINTERS",$conf->global->TAKEPOS_ORDER_PRINTERS,1); + print '
'; + + print '
'; +} + + print ''; print ''; -print ''; +print ''; print "\n"; print ''; @@ -159,45 +209,6 @@ if (! empty($conf->stock->enabled)) print ''; } -if (! empty($conf->service->enabled)) -{ - print '\n"; -} - -// Use Takepos printing -print '\n"; - -if ($conf->global->TAKEPOSCONNECTOR){ - print ''; -} - -// Bar Restaurant mode -print '\n"; - -if ($conf->global->TAKEPOS_BAR_RESTAURANT and $conf->global->TAKEPOSCONNECTOR){ - print ''; -} - print '
'.$langs->trans("Parameters").''.$langs->trans("Value").''.$langs->trans("Terminal").' 0'.$langs->trans("Value").'
'.$langs->trans("CashDeskThirdPartyForSell").'
'; - print $langs->trans("CashdeskShowServices"); - print ''; - print $form->selectyesno("CASHDESK_SERVICES",$conf->global->CASHDESK_SERVICES,1); - print "
'; -print $langs->trans("DolibarrReceiptPrinter").' ('.$langs->trans("TakeposConnectorNecesary").')'; -print ''; -print $form->selectyesno("TAKEPOSCONNECTOR",$conf->global->TAKEPOSCONNECTOR,1); -print "
'; - print $langs->trans("IPAddress").' ('.$langs->trans("TakeposConnectorNecesary").')'; - print ''; - print ''; - print '
'; -print 'Bar Restaurant'; -print ''; -print $form->selectyesno("TAKEPOS_BAR_RESTAURANT",$conf->global->TAKEPOS_BAR_RESTAURANT,1); -print "
'; - print $langs->trans("OrderPrinters").' ('.$langs->trans("Setup").')'; - print ''; - print $form->selectyesno("TAKEPOS_ORDER_PRINTERS",$conf->global->TAKEPOS_ORDER_PRINTERS,1); - print '
'; print '
'; @@ -206,9 +217,10 @@ print '
\n"; +print '

'; // Marketplace -print "
\n"; +print "
\n"; print "\n"; print ''; print ''; @@ -221,18 +233,11 @@ print ''; print ''; print ''; -print "\n"; -$url='https://www.dolistore.com/en/modules/949-Cash-Control-7.html'; -print ''; -print ''; -print ''; -print ''; - print "
TakePOS Marketplace'.$langs->trans("URL").'TakePOS for mobile devices'.$url.'
TakePOS CashControl'.$url.'
\n"; print '
'; // Support -print "
\n"; +print "
\n"; print "\n"; print ''; print ''; From e366d7d57cb7d02a65bc158a5e8c774a92e6c967 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 15:30:31 +0100 Subject: [PATCH 087/307] Work on cash fence --- .../compta/cashcontrol/cashcontrol_card.php | 129 +++++++++++++----- .../compta/cashcontrol/cashcontrol_list.php | 4 +- .../cashcontrol/class/cashcontrol.class.php | 12 +- htdocs/core/modules/modTakePos.class.php | 26 +--- 4 files changed, 111 insertions(+), 60 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 307b024aea6..9e288d4b9a6 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -30,14 +30,9 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; -$langs->loadLangs(array("cashcontrol","install","cashdesk","admin")); +$langs->loadLangs(array("cashcontrol","install","cashdesk","admin","banks")); $action=GETPOST('action','aZ09'); -$id=GETPOST('id'); - -if (!$user->rights->banque->configurer) - accessforbidden(); - $id=GETPOST('id','int'); $categid = GETPOST('categid'); $label = GETPOST("label"); @@ -55,6 +50,11 @@ $pagenext = $page + 1; if (! $sortfield) $sortfield='b.label'; if (! $sortorder) $sortorder='ASC'; +if (! $user->rights->cashdesk->use && ! $user->rights->takepos->use) +{ + accessforbidden(); +} + /* @@ -63,13 +63,29 @@ if (! $sortorder) $sortorder='ASC'; if ($action=="start") { - $cashcontrol= new CashControl($db); - $cashcontrol->opening=GETPOST('opening'); - if (GETPOST('posmodule')=='cashdesk') $cashcontrol->posmodule="cashdesk"; - else if (GETPOST('posmodule')=='takepos') $cashcontrol->posmodule="takepos"; - $cashcontrol->posnumber=GETPOST('posnumber'); - $id=$cashcontrol->create($user); - $action="view"; + $error=0; + if (! GETPOST('posmodule','alpha') || GETPOST('posmodule','alpha') == '-1') + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Module")), null, 'errors'); + $action='create'; + $error++; + } + if (GETPOST('opening','alpha') == '') + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("InitialBankBalance")), null, 'errors'); + $action='create'; + $error++; + } + if (! $error) + { + $cashcontrol= new CashControl($db); + $cashcontrol->opening=GETPOST('opening'); + if (GETPOST('posmodule')=='cashdesk') $cashcontrol->posmodule="cashdesk"; + else if (GETPOST('posmodule')=='takepos') $cashcontrol->posmodule="takepos"; + $cashcontrol->posnumber=GETPOST('posnumber'); + $id=$cashcontrol->create($user); + $action="view"; + } } if ($action=="close") @@ -96,12 +112,58 @@ if ($action=="create") print ''; print ''; print ''; + print ''; + print ''; + print ''; print ''; print ''; print "\n"; + + $now=dol_now(); + $syear = dol_print_date($now, "%Y"); + $smonth = dol_print_date($now, "%m"); + $sday = dol_print_date($now, "%d"); + print ''; - print ''; + print ''; print ''; + // Year + print ''; + // Month + print ''; + // Day + print ''; print ''; print ''; print ''; @@ -119,49 +181,50 @@ if (empty($action) || $action=="view") print '
'; print '
TakePOS Support'.$langs->trans("URL").'
'.$langs->trans("Module").''.$langs->trans("CashDesk").' ID'.$langs->trans("Year").''.$langs->trans("Month").''.$langs->trans("Day").''.$langs->trans("InitialBankBalance").'
'.$form->selectarray('posmodule', $arrayofposavailable, 1).''.$form->selectarray('posmodule', $arrayofposavailable, 1, (count($arrayofposavailable)>1?1:0)).''; + $retstring=''; + + for ($year = $syear - 10; $year < $syear + 10 ; $year++) + { + $retstring.=''; + } + $retstring.="\n"; + print $retstring; + print ''; + $retstring=''; + for ($month = 1 ; $month <= 12 ; $month++) + { + $retstring.='"; + } + $retstring.=""; + print $retstring; + print ''; + $retstring=''; + if ($emptydate || $set_time == -1) + { + $retstring.=''; + } + for ($day = 1 ; $day <= 31; $day++) + { + $retstring.=''; + } + $retstring.=""; + print $retstring; + print '
'; - print ''; - print ''; + print '"; + + print '"; print ''; print ''; print '
'; - print $langs->trans("Code"); - print ''; + print '
'; + print $langs->trans("Ref"); + print ''; print $id; print '
'; - print $langs->trans("DateCreationShort"); - print ''; - print dol_print_date($cashcontrol->date_creation, 'dayhour'); - print '
'.$langs->trans("Module").''; + print $cashcontrol->posmodule; + print "
'.$langs->trans("InitialBankBalance").''; + print price($cashcontrol->opening); + print "
'; print $langs->trans("DateEnd"); - print ''; - print dol_print_date(strtotime($cashcontrol->year_close."-".$cashcontrol->month_close."-".$cashcontrol->day_close), 'day'); + print ''; + print $cashcontrol->year_close."-".$cashcontrol->month_close."-".$cashcontrol->day_close; print '
'; print $langs->trans("Status"); - print ''; + print ''; if ($cashcontrol->status==1) print $langs->trans("Opened"); if ($cashcontrol->status==2) print $langs->trans("Closed"); print '
'; print '
'; + print '
'; print '
'; print ''; - print '"; + print ''; - print '"; - print '"; - print "
'.$langs->trans("InitialBankBalance").''; - print price($cashcontrol->opening); - print "
'; + print $langs->trans("DateCreationShort"); + print ''; + print dol_print_date($cashcontrol->date_creation, 'dayhour'); + print '
'.$langs->trans("CashDesk").' ID'; + print '
'.$langs->trans("CashDesk").' ID'; print $cashcontrol->posnumber; print "
'.$langs->trans("Module").''; - print $cashcontrol->posmodule; - print "
\n"; print '
'; print '
'; diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php index ba0f985f510..219a8d987af 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_list.php +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -166,8 +166,8 @@ if (empty($reshook)) // Mass actions $objectclass='CashControl'; $objectlabel='CashControl'; - $permtoread = ($user->rights->cashdesk->read || $user->rights->takepos->read); - $permtodelete = ($user->rights->cashdesk->delete || $user->rights->takepos->delete); + $permtoread = ($user->rights->cashdesk->use || $user->rights->takepos->use); + $permtodelete = ($user->rights->cashdesk->use || $user->rights->takepos->use); //$uploaddir = ''; //include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 5750a0877c9..0b10d49c4bf 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -58,16 +58,16 @@ class CashControl extends CommonObject 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>10), 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>15), 'ref' =>array('type'=>'varchar(64)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>18), - 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>20), + 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>19), + 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>20), + 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>24), 'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25), 'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30), 'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>33), - 'card' =>array('type'=>'double(24,8)', 'label'=>'Card', 'enabled'=>1, 'visible'=>1, 'position'=>36), - 'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>50), + 'card' =>array('type'=>'double(24,8)', 'label'=>'CreditCard', 'enabled'=>1, 'visible'=>1, 'position'=>36), + 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>50), 'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55), - 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>60), - 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>65), - 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>70), + 'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>60), 'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500), 'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505), 'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510), diff --git a/htdocs/core/modules/modTakePos.class.php b/htdocs/core/modules/modTakePos.class.php index df541c97e90..c47a66c3de2 100644 --- a/htdocs/core/modules/modTakePos.class.php +++ b/htdocs/core/modules/modTakePos.class.php @@ -104,7 +104,7 @@ class modTakePos extends DolibarrModules $this->langfiles = array("cashdesk"); $this->phpmin = array(5,4); // Minimum version of PHP required by module $this->need_dolibarr_version = array(4,0); // Minimum version of Dolibarr required by module - $this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...) + $this->warnings_activation = array('FR'=>'WarningNoteModulePOSForFrenchLaw'); // Warning to show when we activate module. array('always'='text') or array('FR'='text') $this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...) //$this->automatic_activation = array('FR'=>'TakePosWasAutomaticallyActivatedBecauseOfYourCountryChoice'); //$this->always_enabled = true; // If true, can't be disabled @@ -195,27 +195,15 @@ class modTakePos extends DolibarrModules // Permissions $this->rights = array(); // Permission array used by this module - /*$r=0; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) - $this->rights[$r][1] = 'Read myobject of TakePos'; // Permission label - $this->rights[$r][3] = 1; // Permission by default for new user (0/1) - $this->rights[$r][4] = 'read'; // In php code, permission will be checked by test if ($user->rights->takepos->level1->level2) - $this->rights[$r][5] = ''; // In php code, permission will be checked by test if ($user->rights->takepos->level1->level2) + $r=0; $r++; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) - $this->rights[$r][1] = 'Create/Update myobject of TakePos'; // Permission label - $this->rights[$r][3] = 1; // Permission by default for new user (0/1) - $this->rights[$r][4] = 'write'; // In php code, permission will be checked by test if ($user->rights->takepos->level1->level2) - $this->rights[$r][5] = ''; // In php code, permission will be checked by test if ($user->rights->takepos->level1->level2) + $this->rights[$r][0] = 50151; + $this->rights[$r][1] = 'Use point of sale'; + $this->rights[$r][2] = 'a'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'use'; - $r++; - $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) - $this->rights[$r][1] = 'Delete myobject of TakePos'; // Permission label - $this->rights[$r][3] = 1; // Permission by default for new user (0/1) - $this->rights[$r][4] = 'delete'; // In php code, permission will be checked by test if ($user->rights->takepos->level1->level2) - $this->rights[$r][5] = ''; // In php code, permission will be checked by test if ($user->rights->takepos->level1->level2) - */ // Main menu entries $this->menu = array(); // List of menus to add From e5e4ef7b8c41a3c51e937ba0a1dd36206a4116e0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 16:47:09 +0100 Subject: [PATCH 088/307] Work on cash fence --- .../compta/cashcontrol/cashcontrol_card.php | 156 ++++++++++++++---- .../cashcontrol/class/cashcontrol.class.php | 23 ++- htdocs/core/menus/standard/eldy.lib.php | 7 +- 3 files changed, 148 insertions(+), 38 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 9e288d4b9a6..cfb9d3de8bc 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -22,9 +22,9 @@ */ /** - * \file htdocs/compta/bank/categ.php - * \ingroup pos - * \brief Page ajout de categories bancaires + * \file htdocs/compta/cashcontrol/cashcontrol_card.php + * \ingroup cashdesk|takepos + * \brief Page to show a cash fence */ require '../../main.inc.php'; @@ -55,6 +55,15 @@ if (! $user->rights->cashdesk->use && ! $user->rights->takepos->use) accessforbidden(); } +$arrayofpaymentmode=array('cash'=>'Cash', 'cheque'=>'Cheque', 'card'=>'CreditCard'); + +$arrayofposavailable=array(); +if (! empty($conf->cashdesk->enabled)) $arrayofposavailable['cashdesk']=$langs->trans('CashDesk').' (cashdesk)'; +if (! empty($conf->takepos->enabled)) $arrayofposavailable['takepos']=$langs->trans('TakePOS').' (takepos)'; +// TODO Add hook here to allow other POS to add themself + +$cashcontrol= new CashControl($db); + /* @@ -70,21 +79,55 @@ if ($action=="start") $action='create'; $error++; } - if (GETPOST('opening','alpha') == '') + if (GETPOST('posnumber','alpha') == '') { - setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("InitialBankBalance")), null, 'errors'); + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("CashDesk")), null, 'errors'); $action='create'; $error++; } + if (! GETPOST('closeyear','alpha') || GETPOST('closeyear','alpha') == '-1') + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Year")), null, 'errors'); + $action='create'; + $error++; + } +} +elseif ($action=="add") +{ + $error=0; + if (GETPOST('opening','alpha') == '') + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("InitialBankBalance")), null, 'errors'); + $action='start'; + $error++; + } + foreach($arrayofpaymentmode as $key=>$val) + { + if (GETPOST($key,'alpha') == '') + { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv($val)), null, 'errors'); + $action='start'; + $error++; + } + else + { + $cashcontrol->$key = price2num(GETPOST($key,'alpha')); + } + } + if (! $error) { - $cashcontrol= new CashControl($db); - $cashcontrol->opening=GETPOST('opening'); - if (GETPOST('posmodule')=='cashdesk') $cashcontrol->posmodule="cashdesk"; - else if (GETPOST('posmodule')=='takepos') $cashcontrol->posmodule="takepos"; - $cashcontrol->posnumber=GETPOST('posnumber'); + $cashcontrol->day_close = GETPOST('closeday', 'int'); + $cashcontrol->month_close = GETPOST('closemonth', 'int'); + $cashcontrol->year_close = GETPOST('closeyear', 'int'); + + $cashcontrol->opening=price2num(GETPOST('opening','alpha')); + $cashcontrol->posmodule=GETPOST('posmodule','alpha'); + $cashcontrol->posnumber=GETPOST('posnumber','alpha'); + $id=$cashcontrol->create($user); - $action="view"; + + $action="view"; } } @@ -96,18 +139,32 @@ if ($action=="close") $action="view"; } -if ($action=="create") +if ($action=="create" || $action=="start") { llxHeader(); - $arrayofposavailable=array(); - if (! empty($conf->cashdesk->enabled)) $arrayofposavailable['cashdesk']=$langs->trans('CashDesk').' (cashdesk)'; - if (! empty($conf->takepos->enabled)) $arrayofposavailable['takepos']=$langs->trans('TakePOS').' (takepos)'; - // TODO Add hook here to allow other POS to add themself + $initialbalanceforterminal=array(); + $theoricalamountforterminal=array(); + + if (GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') + { + // Calculate $initialbalanceforterminal and $theoricalamountforterminal for terminal 0 + // TODO + + + } print load_fiche_titre($langs->trans("CashControl")." - ".$langs->trans("New"), '', 'title_bank.png'); - print ''; - print ''; + + print ''; + if ($action == 'start' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') + { + print ''; + } + else + { + print ''; + } print ''; print ''; print ''; @@ -115,22 +172,22 @@ if ($action=="create") print ''; print ''; print ''; - print ''; print ''; print "\n"; $now=dol_now(); - $syear = dol_print_date($now, "%Y"); - $smonth = dol_print_date($now, "%m"); - $sday = dol_print_date($now, "%d"); + $syear = (GETPOSTISSET('closeyear')?GETPOST('closeyear', 'int'):dol_print_date($now, "%Y")); + $smonth = (GETPOSTISSET('closemonth')?GETPOST('closemonth', 'int'):dol_print_date($now, "%m")); + $sday = (GETPOSTISSET('closeday')?GETPOST('closeday', 'int'):dol_print_date($now, "%d")); + $disabled=0; + $prefix='close'; print ''; - print ''; - print ''; + print ''; + print ''; // Year print ''; - print ''; - print ''; - print ''; - print '
'.$langs->trans("Module").''.$langs->trans("Year").''.$langs->trans("Month").''.$langs->trans("Day").''.$langs->trans("InitialBankBalance").'
'.$form->selectarray('posmodule', $arrayofposavailable, 1, (count($arrayofposavailable)>1?1:0)).''.$form->selectarray('posmodule', $arrayofposavailable, GETPOST('posmodule','alpha'), (count($arrayofposavailable)>1?1:0)).''; $retstring=''; - for ($year = $syear - 10; $year < $syear + 10 ; $year++) { $retstring.=''; @@ -141,6 +198,7 @@ if ($action=="create") // Month print ''; $retstring=''; + $retstring.=''; for ($month = 1 ; $month <= 12 ; $month++) { $retstring.=''; $retstring=''; - if ($emptydate || $set_time == -1) - { - $retstring.=''; - } + $retstring.=''; for ($day = 1 ; $day <= 31; $day++) { $retstring.=''; @@ -164,10 +219,45 @@ if ($action=="create") $retstring.=""; print $retstring; print '
'; + print ''; + if ($action == 'start' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') + { + print ''; + } + else + { + print ''; + } + print ''; + print ''; + + if ($action == 'start' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') + { + print ''; + print ''; + print ''; + foreach($arrayofpaymentmode as $key => $val) + { + print ''; + } + print ''; + print ''; + print ''; + // Initial amount + print ''; + foreach($arrayofpaymentmode as $key => $val) + { + print ''; + } + + print ''; + print ''; + print ''; + } + print ''; } if (empty($action) || $action=="view") diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 0b10d49c4bf..8f788d29e15 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -83,7 +83,9 @@ class CashControl extends CommonObject public $day_close; public $posmodule; public $posnumber; - + public $cash; + public $cheque; + public $card; /** @@ -110,6 +112,11 @@ class CashControl extends CommonObject $error = 0; + // Clean data + if (empty($this->cash)) $this->cash=0; + if (empty($this->cheque)) $this->cheque=0; + if (empty($this->card)) $this->card=0; + // Insert request $sql = "INSERT INTO ".MAIN_DB_PREFIX."pos_cash_fence ("; $sql .= "entity"; @@ -119,14 +126,26 @@ class CashControl extends CommonObject $sql .= ", date_creation"; $sql .= ", posmodule"; $sql .= ", posnumber"; + $sql .= ", day_close"; + $sql .= ", month_close"; + $sql .= ", year_close"; + $sql .= ", cash"; + $sql .= ", cheque"; + $sql .= ", card"; $sql .= ") VALUES ("; //$sql .= "'(PROV)', "; $sql .= $conf->entity; - $sql .= ", ".$this->opening; + $sql .= ", ".($this->opening > 0 ? $this->opening : 0); $sql .= ", 0"; // Draft by default $sql .= ", '".$this->db->idate(dol_now())."'"; $sql .= ", '".$this->db->escape($this->posmodule)."'"; $sql .= ", '".$this->db->escape($this->posnumber)."'"; + $sql .= ", ".($this->day_close > 0 ? $this->day_close : "null"); + $sql .= ", ".($this->month_close > 0 ? $this->month_close : "null"); + $sql .= ", ".$this->year_close; + $sql .= ", ".$this->cash; + $sql .= ", ".$this->cheque; + $sql .= ", ".$this->card; $sql .= ")"; $this->db->begin(); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 7c736465761..32973e845c7 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -1248,9 +1248,10 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu // Cash Control if (! empty($conf->takepos->enabled) || ! empty($conf->cashdesk->enabled)) { - $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("POS"),0,1, '', $mainmenu, 'cashcontrol'); - $newmenu->add("/compta/cashcontrol/cashcontrol_card.php?action=create",$langs->trans("NewCashFence"),1,1); - $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("List"),1,1); + $permtomakecashfence = ($user->rights->cashdesk->use ||$user->rights->takepos->use); + $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("POS"),0,$permtomakecashfence, '', $mainmenu, 'cashcontrol'); + $newmenu->add("/compta/cashcontrol/cashcontrol_card.php?action=create",$langs->trans("NewCashFence"),1,$permtomakecashfence); + $newmenu->add("/compta/cashcontrol/cashcontrol_list.php?action=list",$langs->trans("List"),1,$permtomakecashfence); } } From ce2d67f22568761821e0fb31821c15953e7139cd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 17:45:51 +0100 Subject: [PATCH 089/307] Fix phpcs --- htdocs/compta/cashcontrol/cashcontrol_card.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index cfb9d3de8bc..4311a3348bc 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -150,8 +150,6 @@ if ($action=="create" || $action=="start") { // Calculate $initialbalanceforterminal and $theoricalamountforterminal for terminal 0 // TODO - - } print load_fiche_titre($langs->trans("CashControl")." - ".$langs->trans("New"), '', 'title_bank.png'); From 72c5943c5583590d9c84b5f3a83cc6a7407c3f6c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 17:53:23 +0100 Subject: [PATCH 090/307] Execute trigger so we can record line into unalterable log table --- .../cashcontrol/class/cashcontrol.class.php | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 8f788d29e15..a49cb68e57a 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -87,6 +87,9 @@ class CashControl extends CommonObject public $cheque; public $card; + const STATUS_DRAFT = 0; + const STATUS_VALIDATE = 1; + /** * Constructor @@ -187,21 +190,16 @@ class CashControl extends CommonObject */ public function close(User $user, $notrigger = 0) { - global $conf; - $error = 0; // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence "; - $sql.= "SET"; - $sql.= " day_close=DAYOFMONTH(NOW())"; - $sql.= ", month_close=MONTH(NOW())"; - $sql.= ", year_close=YEAR(NOW())"; - $sql.= ", status=2"; - $sql.= " where rowid=".$this->id; + $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence"; + $sql.= " SET status = ".self::STATUS_VALIDATED; + $sql.= " WHERE rowid=".$this->id; + $this->db->begin(); - dol_syslog(get_class($this)."::create", LOG_DEBUG); + dol_syslog(get_class($this)."::close", LOG_DEBUG); $resql = $this->db->query($sql); if (!$resql) { $error++; @@ -212,6 +210,16 @@ class CashControl extends CommonObject $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."pos_cash_fence"); } + if (! $error && ! $notrigger) + { + $this->context=array('operation'=>'close'); + + // Call trigger + $result=$this->call_trigger('CASHCONTROL_MODIFY', $user); + if ($result < 0) $error++; + // End call triggers + } + // Commit or rollback if ($error) { foreach ($this->errors as $errmsg) { From 9b844df3154e19c6eb9bc4d3f07c6600fdfd4d35 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 18:44:58 +0100 Subject: [PATCH 091/307] FIX Extrafields on shipment module --- htdocs/expedition/list.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 14f9eb41f44..95f6dbd616b 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -69,6 +69,8 @@ $pagenext = $page + 1; $viewstatut=GETPOST('viewstatut'); +$object = new Expedition($db); + // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('shipmentlist')); $extrafields = new ExtraFields($db); From 003c463ee452ac46f6a3f12251e925a07f9bebe7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 19:23:53 +0100 Subject: [PATCH 092/307] FIX Can't delete a line of minimal stock per warehouse --- .../class/productstockentrepot.class.php | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/htdocs/product/stock/class/productstockentrepot.class.php b/htdocs/product/stock/class/productstockentrepot.class.php index cbca4e5854d..1d4691d5ff3 100644 --- a/htdocs/product/stock/class/productstockentrepot.class.php +++ b/htdocs/product/stock/class/productstockentrepot.class.php @@ -157,13 +157,12 @@ class ProductStockEntrepot extends CommonObject /** * Load object in memory from the database * - * @param int $id Id object - * @param int $fk_product Id product - * @param int $fk_entrepot Id warehouse - * - * @return int <0 if KO, 0 if not found, >0 if OK + * @param int $id Id object + * @param int $fk_product Id product + * @param int $fk_entrepot Id warehouse + * @return int <0 if KO, 0 if not found, >0 if OK */ - public function fetch($id, $fk_product, $fk_entrepot) + public function fetch($id, $fk_product=0, $fk_entrepot=0) { if(empty($id) && (empty($fk_product) || empty($fk_entrepot))) return -1; @@ -171,23 +170,22 @@ class ProductStockEntrepot extends CommonObject $sql = 'SELECT'; $sql .= ' t.rowid,'; - $sql .= " t.tms,"; $sql .= " t.fk_product,"; $sql .= " t.fk_entrepot,"; $sql .= " t.seuil_stock_alerte,"; $sql .= " t.desiredstock,"; $sql .= " t.import_key"; - - $sql .= ' FROM ' . MAIN_DB_PREFIX . $this->table_element . ' as t'; if(!empty($id)) $sql .= ' WHERE t.rowid = ' . $id; else $sql.= ' WHERE t.fk_product = '.$fk_product.' AND t.fk_entrepot = '.$fk_entrepot; $resql = $this->db->query($sql); - if ($resql) { + if ($resql) + { $numrows = $this->db->num_rows($resql); - if ($numrows) { + if ($numrows) + { $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; @@ -198,8 +196,6 @@ class ProductStockEntrepot extends CommonObject $this->seuil_stock_alerte = $obj->seuil_stock_alerte; $this->desiredstock = $obj->desiredstock; $this->import_key = $obj->import_key; - - } // Retreive all extrafield From efb88292dda9b1632a9af18977cfc586cb5ac66d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 19:30:54 +0100 Subject: [PATCH 093/307] Clean code --- htdocs/product/stock/product.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 7c18dc11281..f93482caf94 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -83,7 +83,7 @@ if ($id > 0 || ! empty($ref)) } -if(empty($id) && !empty($object->id)) $id = $object->id; +if(empty($id) && !empty($object->id)) $id = $object->id; $modulepart='product'; @@ -130,7 +130,7 @@ if ($action == 'addlimitstockwarehouse' && !empty($user->rights->produit->creer) if($maj_ok) { $pse = new ProductStockEntrepot($db); - if($pse->fetch('', $id, GETPOST('fk_entrepot')) > 0) { + if($pse->fetch(0, $id, GETPOST('fk_entrepot')) > 0) { // Update $pse->seuil_stock_alerte = $seuil_stock_alerte; @@ -159,7 +159,7 @@ if($action == 'delete_productstockwarehouse' && !empty($user->rights->produit->c { $pse = new ProductStockEntrepot($db); - $pse->fetch(GETPOST('fk_productstockwarehouse')); + $pse->fetch(GETPOST('fk_productstockwarehouse','int')); if($pse->delete($user) > 0) setEventMessage($langs->trans('ProductStockWarehouseDeleted')); $action = ''; @@ -989,8 +989,8 @@ if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE)) print "
'.$langs->trans("InitialBankBalance").''.$langs->trans($val).'
'.$langs->trans("TheoricalAmount").'
'.$langs->trans("RealAmount").'
'; + print price($theoricalamountforterminal[0][$key]).'
'; + print ''; + print '
"; - if (!empty($user->rights->produit->creer)){ - print ''; + if (!empty($user->rights->produit->creer)){ + print ''; } } From d8b5cd4bdfe13c4094bcd3271fb994bc70223ca3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 19:31:59 +0100 Subject: [PATCH 094/307] Remove white lines --- htdocs/product/stock/product.php | 8 -------- 1 file changed, 8 deletions(-) diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index f93482caf94..01ca0bb37e6 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -131,23 +131,18 @@ if ($action == 'addlimitstockwarehouse' && !empty($user->rights->produit->creer) $pse = new ProductStockEntrepot($db); if($pse->fetch(0, $id, GETPOST('fk_entrepot')) > 0) { - // Update $pse->seuil_stock_alerte = $seuil_stock_alerte; $pse->desiredstock = $desiredstock; if($pse->update($user) > 0) setEventMessage($langs->trans('ProductStockWarehouseUpdated')); - } else { - // Create $pse->fk_entrepot = GETPOST('fk_entrepot'); $pse->fk_product = $id; $pse->seuil_stock_alerte = GETPOST('seuil_stock_alerte'); $pse->desiredstock = GETPOST('desiredstock'); if($pse->create($user) > 0) setEventMessage($langs->trans('ProductStockWarehouseCreated')); - } - } header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); @@ -161,9 +156,7 @@ if($action == 'delete_productstockwarehouse' && !empty($user->rights->produit->c $pse = new ProductStockEntrepot($db); $pse->fetch(GETPOST('fk_productstockwarehouse','int')); if($pse->delete($user) > 0) setEventMessage($langs->trans('ProductStockWarehouseDeleted')); - $action = ''; - } // Set stock limit @@ -916,7 +909,6 @@ if ($resql) } } $i++; - } } else dol_print_error($db); From af4405c669043f6a5f3845731fde6aa1ad241eb3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Dec 2018 20:29:08 +0100 Subject: [PATCH 095/307] FIX Replenishment with option STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE --- htdocs/langs/en_US/stocks.lang | 2 ++ htdocs/product/stock/replenish.php | 49 ++++++++++++++++-------------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index 0d22a3b3c75..da00add3711 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -29,6 +29,8 @@ MovementId=Movement ID StockMovementForId=Movement ID %d ListMouvementStockProject=List of stock movements associated to project StocksArea=Warehouses area +AllWarehouses=All warehouses +IncludeAlsoDraftOrders=Include also draft orders Location=Location LocationSummary=Short name location NumberOfDifferentProducts=Number of different products diff --git a/htdocs/product/stock/replenish.php b/htdocs/product/stock/replenish.php index 3bc2bcdd85c..bb7f5f0539e 100644 --- a/htdocs/product/stock/replenish.php +++ b/htdocs/product/stock/replenish.php @@ -288,22 +288,20 @@ if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entre $sql = 'SELECT p.rowid, p.ref, p.label, p.description, p.price,'; $sql.= ' p.price_ttc, p.price_base_type,p.fk_product_type,'; -$sql.= ' p.tms as datem, p.duration, p.tobuy'; -$sql.= ' ,p.desiredstock,p.seuil_stock_alerte'; -if(!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) { - $sql.= ', pse.desiredstock' ; - $sql.= ', pse.seuil_stock_alerte' ; +$sql.= ' p.tms as datem, p.duration, p.tobuy,'; +$sql.= ' p.desiredstock, p.seuil_stock_alerte,'; +if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) { + $sql.= ' pse.desiredstock as desiredstockpse, pse.seuil_stock_alerte as seuil_stock_alertepse,'; } -$sql.= ' ,'.$sqldesiredtock.' as desiredstock, '.$sqlalertstock.' as alertstock,'; - +$sql.= ' '.$sqldesiredtock.' as desiredstockcombined, '.$sqlalertstock.' as seuil_stock_alertecombined,'; $sql.= ' SUM('.$db->ifsql("s.reel IS NULL", "0", "s.reel").') as stock_physique'; $sql.= ' FROM ' . MAIN_DB_PREFIX . 'product as p'; $sql.= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'product_stock as s'; $sql.= ' ON (p.rowid = s.fk_product AND s.fk_entrepot IN (SELECT ent.rowid FROM '.MAIN_DB_PREFIX.'entrepot AS ent WHERE ent.entity IN('.getEntity('stock').')))'; -if($fk_supplier > 0) { +if ($fk_supplier > 0) { $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'product_fournisseur_price pfp ON (pfp.fk_product = p.rowid AND pfp.fk_soc = '.$fk_supplier.')'; } -if(!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) { +if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) { $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_warehouse_properties AS pse ON (p.rowid = pse.fk_product AND pse.fk_entrepot = '.$fk_entrepot.')'; } $sql.= ' WHERE p.entity IN (' . getEntity('product') . ')'; @@ -325,7 +323,7 @@ $sql.= ', p.price_ttc, p.price_base_type,p.fk_product_type, p.tms'; $sql.= ', p.duration, p.tobuy'; $sql.= ', p.desiredstock'; $sql.= ', p.seuil_stock_alerte'; -if(!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) { +if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) { $sql.= ', pse.desiredstock' ; $sql.= ', pse.seuil_stock_alerte' ; } @@ -364,7 +362,7 @@ if ($usevirtualstock) $sqlReceptionFourn.= " AND fd.fk_product = p.rowid"; $sqlReceptionFourn.= " AND cf.fk_statut IN (3,4))"; - $sql.= ' HAVING ((('.$db->ifsql($sqldesiredtock." IS NULL", "0", $sqldesiredtock).' > SUM('.$db->ifsql("s.reel IS NULL", "0", "s.reel").')'; + $sql.= ' HAVING (('.$sqldesiredtock.' >= 0 AND ('.$sqldesiredtock.' > SUM('.$db->ifsql("s.reel IS NULL", "0", "s.reel").')'; $sql.= ' - ('.$sqlCommandesCli.' - '.$sqlExpeditionsCli.') + ('.$sqlCommandesFourn.' - '.$sqlReceptionFourn.')))'; $sql.= ' OR ('.$sqlalertstock.' >= 0 AND ('.$sqlalertstock.' > SUM('.$db->ifsql("s.reel IS NULL", "0", "s.reel").')'; $sql.= ' - ('.$sqlCommandesCli.' - '.$sqlExpeditionsCli.') + ('.$sqlCommandesFourn.' - '.$sqlReceptionFourn.'))))'; @@ -396,7 +394,6 @@ if (empty($resql)) dol_print_error($db); exit; } -//print $sql; $num = $db->num_rows($resql); $i = 0; @@ -505,9 +502,12 @@ $param .= '&fk_supplier=' . $fk_supplier; $param .= '&fk_entrepot=' . $fk_entrepot; $stocklabel = $langs->trans('Stock'); -if ($usevirtualstock == 1) $stocklabel = 'VirtualStock'; -if ($usevirtualstock == 0) $stocklabel = 'PhysicalStock'; - +if ($usevirtualstock == 1) $stocklabel = $langs->trans('VirtualStock'); +if ($usevirtualstock == 0) $stocklabel = $langs->trans('PhysicalStock'); +if (!empty($conf->global->STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE) && $fk_entrepot > 0) +{ + $stocklabel.=' ('.$langs->trans("AllWarehouses").')'; +} print '
'. ''. ''. @@ -528,7 +528,7 @@ if (!empty($conf->service->enabled) && $type == 1) print ' '; print ' '; print '' . $langs->trans('AlertOnly') . ' '; -print '' . $langs->trans('Draft') . ' '; +print '' . $langs->trans('IncludeAlsoDraftOrders') . ' '; print ' '; print ''; $searchpicto=$form->showFilterAndCheckAddButtons(0); @@ -600,20 +600,23 @@ while ($i < ($limit ? min($num, $limit) : $num)) //print $prod->stats_reception['qty']; $ordered = $prod->stats_commande_fournisseur['qty'] - $prod->stats_reception['qty']; + $desiredstock=($objp->desiredstockpse ? $objp->desiredstockpse : $objp->desiredstock); + $alertstock=($objp->seuil_stock_alertepse ? $objp->seuil_stock_alertepse : $objp->seuil_stock_alerte); + $warning=''; - if ($objp->alertstock && ($stock < $objp->alertstock)) + if ($alertstock && ($stock < $alertstock)) { $warning = img_warning($langs->trans('StockTooLow')) . ' '; } //depending on conf, use either physical stock or //virtual stock to compute the stock to buy value - $stocktobuy = max(max($objp->desiredstock, $objp->alertstock) - $stock - $ordered, 0); + $stocktobuy = max(max($desiredstock, $alertstock) - $stock - $ordered, 0); $disabled = ''; if ($ordered > 0) { $stockforcompare = $usevirtualstock ? $stock : $stock + $ordered; - if ($stockforcompare >= $objp->desiredstock) + if ($stockforcompare >= $desiredstock) { $picto = img_picto('', './img/yes', '', 1); $disabled = 'disabled'; @@ -653,12 +656,12 @@ while ($i < ($limit ? min($num, $limit) : $num)) } // Desired stock - print '' . $objp->desiredstock . ''; + print '' . $desiredstock . ''; - // Limit stock for alerr - print '' . $objp->alertstock . ''; + // Limit stock for alert + print '' . $alertstock . ''; - // Current stock + // Current stock (all warehouses) print ''. $warning . $stock. ''; // Already ordered From bf9ee18bed424dbc3f44af4f278235832e0c16c1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 03:25:45 +0100 Subject: [PATCH 096/307] Standardize code. --- .../compta/cashcontrol/cashcontrol_card.php | 2 +- .../cashcontrol/class/cashcontrol.class.php | 34 ++++++++++++++++--- .../install/mysql/migration/8.0.0-9.0.0.sql | 1 + .../mysql/tables/llx_pos_cash_fence.sql | 1 + 4 files changed, 32 insertions(+), 6 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 4311a3348bc..e212f8ff75b 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -135,7 +135,7 @@ if ($action=="close") { $cashcontrol= new CashControl($db); $cashcontrol->id=$id; - $cashcontrol->close($user); + $cashcontrol->valid($user); $action="view"; } diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index a49cb68e57a..37f73f6712f 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -182,19 +182,43 @@ class CashControl extends CommonObject } /** - * close + * Validate cash fence * * @param User $user User * @param number $notrigger No trigger * @return int <0 if KO, >0 if OK */ - public function close(User $user, $notrigger = 0) + public function valid(User $user, $notrigger = 0) { + global $conf,$langs; + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $error = 0; + // Protection + if ($this->status == self::STATUS_VALIDATED) + { + dol_syslog(get_class($this)."::valid action abandonned: already validated", LOG_WARNING); + return 0; + } + + /* + $posmodule = $this->posmodule; + if (! empty($user->rights->$posmodule->use)) + { + $this->error='NotEnoughPermissions'; + dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR); + return -1; + } + */ + + $now=dol_now(); + // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence"; - $sql.= " SET status = ".self::STATUS_VALIDATED; + $sql.= " SET status = ".self::STATUS_VALIDATED.","; + $sql.= " date_valid='".$this->db->idate($now)."',"; + $sql.= " fk_user_valid = ".$user->id; $sql.= " WHERE rowid=".$this->id; $this->db->begin(); @@ -212,10 +236,10 @@ class CashControl extends CommonObject if (! $error && ! $notrigger) { - $this->context=array('operation'=>'close'); + $this->context=array('date_valid'=>$now); // Call trigger - $result=$this->call_trigger('CASHCONTROL_MODIFY', $user); + $result=$this->call_trigger('CASHCONTROL_VALIDATE', $user); if ($result < 0) $error++; // End call triggers } diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index 7f50d9fe0d5..28d080584d1 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -242,6 +242,7 @@ CREATE TABLE llx_pos_cash_fence( cheque double(24,8) default 0, status INTEGER, date_creation DATETIME NOT NULL, + date_valid DATETIME, day_close INTEGER, month_close INTEGER, year_close INTEGER, diff --git a/htdocs/install/mysql/tables/llx_pos_cash_fence.sql b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql index 26a78d69f00..607060adab6 100644 --- a/htdocs/install/mysql/tables/llx_pos_cash_fence.sql +++ b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql @@ -25,6 +25,7 @@ CREATE TABLE llx_pos_cash_fence( cheque double(24,8) default 0, status INTEGER, date_creation DATETIME NOT NULL, + date_valid DATETIME, day_close INTEGER, month_close INTEGER, year_close INTEGER, From cbb5e3bbe9ae7c45858d303958b074ed344e7843 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 03:31:20 +0100 Subject: [PATCH 097/307] Better translation --- htdocs/langs/en_US/stocks.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index fbbc00887aa..70f83dbab94 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -53,7 +53,7 @@ PMPValue=Weighted average price PMPValueShort=WAP EnhancedValueOfWarehouses=Warehouses value UserWarehouseAutoCreate=Create a user warehouse automatically when creating a user -AllowAddLimitStockByWarehouse=Allow to add limit and desired stock per couple (product, warehouse) instead of per product +AllowAddLimitStockByWarehouse=Manage also values for minimum and desired stock per couple (product, warehouse) in addition to values per product IndependantSubProductStock=Product stock and subproduct stock are independent QtyDispatched=Quantity dispatched QtyDispatchedShort=Qty dispatched From f728b28a67ba25b480f05ad7a214d80959828369 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Mon, 17 Dec 2018 06:02:29 +0100 Subject: [PATCH 098/307] FIX: Missing information on Agiris Export --- htdocs/accountancy/class/accountancyexport.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php index 5d76a7155d6..6f9c0534d2f 100644 --- a/htdocs/accountancy/class/accountancyexport.class.php +++ b/htdocs/accountancy/class/accountancyexport.class.php @@ -572,8 +572,10 @@ class AccountancyExport if (empty($line->subledger_account)) { print length_accountg($line->numero_compte) . $separator; + print $line->label_compte . $separator; } else { print length_accounta($line->subledger_account) . $separator; + print $line->subledger_label . $separator; } print $line->doc_ref . $separator; @@ -581,6 +583,7 @@ class AccountancyExport print price($line->credit) . $separator; print price($line->montant) . $separator; print $line->sens . $separator; + print $line->lettering_code . $separator; print $line->code_journal; print $end_line; } From e06b06c788d7ccc683dbfa74971ab80c9a34918d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 10:37:56 +0100 Subject: [PATCH 099/307] Work on cash fence --- htdocs/blockedlog/class/blockedlog.class.php | 4 + .../compta/cashcontrol/cashcontrol_card.php | 92 ++++++++++++------- .../cashcontrol/class/cashcontrol.class.php | 66 ++++++++++++- htdocs/langs/en_US/blockedlog.lang | 5 +- 4 files changed, 131 insertions(+), 36 deletions(-) diff --git a/htdocs/blockedlog/class/blockedlog.class.php b/htdocs/blockedlog/class/blockedlog.class.php index 46766277669..aeb71fc6e95 100644 --- a/htdocs/blockedlog/class/blockedlog.class.php +++ b/htdocs/blockedlog/class/blockedlog.class.php @@ -172,6 +172,10 @@ class BlockedLog if ($conf->banque->enabled) $this->trackedevents['PAYMENT_VARIOUS_CREATE']='logPAYMENT_VARIOUS_CREATE'; if ($conf->banque->enabled) $this->trackedevents['PAYMENT_VARIOUS_MODIFY']='logPAYMENT_VARIOUS_MODIFY'; if ($conf->banque->enabled) $this->trackedevents['PAYMENT_VARIOUS_DELETE']='logPAYMENT_VARIOUS_DELETE'; + + // $conf->global->BANK_ENABLE_POS_CASHCONTROL must be set to 1 by all POS modules + $moduleposenabled = ($conf->cashdesk->enabled || $conf->takepos->enabled || ! empty($conf->global->BANK_ENABLE_POS_CASHCONTROL)); + if ($moduleposenabled) $this->trackedevents['CASHCONTROL_VALIDATE']='logCASHCONTROL_VALIDATE'; } /** diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index e212f8ff75b..8a122a3f939 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -32,8 +32,9 @@ require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php' $langs->loadLangs(array("cashcontrol","install","cashdesk","admin","banks")); -$action=GETPOST('action','aZ09'); $id=GETPOST('id','int'); +$ref = GETPOST('ref', 'alpha'); +$action=GETPOST('action','aZ09'); $categid = GETPOST('categid'); $label = GETPOST("label"); @@ -47,9 +48,10 @@ if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; -if (! $sortfield) $sortfield='b.label'; +if (! $sortfield) $sortfield='rowid'; if (! $sortorder) $sortorder='ASC'; +// Security check if (! $user->rights->cashdesk->use && ! $user->rights->takepos->use) { accessforbidden(); @@ -62,8 +64,14 @@ if (! empty($conf->cashdesk->enabled)) $arrayofposavailable['cashdesk']=$langs-> if (! empty($conf->takepos->enabled)) $arrayofposavailable['takepos']=$langs->trans('TakePOS').' (takepos)'; // TODO Add hook here to allow other POS to add themself -$cashcontrol= new CashControl($db); +$object= new CashControl($db); +$extrafields = new ExtraFields($db); +// fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label($object->table_element); + +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$hookmanager->initHooks(array('cashcontrolcard','globalcard')); /* @@ -111,21 +119,21 @@ elseif ($action=="add") } else { - $cashcontrol->$key = price2num(GETPOST($key,'alpha')); + $object->$key = price2num(GETPOST($key,'alpha')); } } if (! $error) { - $cashcontrol->day_close = GETPOST('closeday', 'int'); - $cashcontrol->month_close = GETPOST('closemonth', 'int'); - $cashcontrol->year_close = GETPOST('closeyear', 'int'); + $object->day_close = GETPOST('closeday', 'int'); + $object->month_close = GETPOST('closemonth', 'int'); + $object->year_close = GETPOST('closeyear', 'int'); - $cashcontrol->opening=price2num(GETPOST('opening','alpha')); - $cashcontrol->posmodule=GETPOST('posmodule','alpha'); - $cashcontrol->posnumber=GETPOST('posnumber','alpha'); + $object->opening=price2num(GETPOST('opening','alpha')); + $object->posmodule=GETPOST('posmodule','alpha'); + $object->posnumber=GETPOST('posnumber','alpha'); - $id=$cashcontrol->create($user); + $id=$object->create($user); $action="view"; } @@ -133,12 +141,24 @@ elseif ($action=="add") if ($action=="close") { - $cashcontrol= new CashControl($db); - $cashcontrol->id=$id; - $cashcontrol->valid($user); - $action="view"; + $object->id=$id; + $result = $object->valid($user); + if ($result <= 0) + { + setEventMessages($object->error, $object->errors, 'errors'); + } + + $action="view"; } + + +/* + * View + */ + +$form=new Form($db); + if ($action=="create" || $action=="start") { llxHeader(); @@ -260,10 +280,20 @@ if ($action=="create" || $action=="start") if (empty($action) || $action=="view") { - $cashcontrol= new CashControl($db); - $cashcontrol->fetch($id); - llxHeader(); - print load_fiche_titre($langs->trans("CashControl"), '', 'title_bank.png'); + $object->fetch($id); + + llxHeader('', $langs->trans("CashControl")); + + dol_fiche_head($head, 'cashcontrol', $langs->trans("CashControl"), -1, 'cashcontrol'); + + $linkback = '' . $langs->trans("BackToList") . ''; + + $morehtmlref='
'; + $morehtmlref.='
'; + + + dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'rowid', $morehtmlref); + print '
'; print '
'; print '
'; @@ -276,24 +306,17 @@ if (empty($action) || $action=="view") print ''; print ''.$langs->trans("Module").''; - print $cashcontrol->posmodule; + print $object->posmodule; print ""; print ''.$langs->trans("InitialBankBalance").''; - print price($cashcontrol->opening); + print price($object->opening); print ""; print ''; - print $langs->trans("DateEnd"); + print $langs->trans("Period"); print ''; - print $cashcontrol->year_close."-".$cashcontrol->month_close."-".$cashcontrol->day_close; - print ''; - - print ''; - print $langs->trans("Status"); - print ''; - if ($cashcontrol->status==1) print $langs->trans("Opened"); - if ($cashcontrol->status==2) print $langs->trans("Closed"); + print $object->year_close."-".$object->month_close."-".$object->day_close; print ''; print ''; @@ -306,11 +329,11 @@ if (empty($action) || $action=="view") print ''; print $langs->trans("DateCreationShort"); print ''; - print dol_print_date($cashcontrol->date_creation, 'dayhour'); + print dol_print_date($object->date_creation, 'dayhour'); print ''; print ''.$langs->trans("CashDesk").' ID'; - print $cashcontrol->posnumber; + print $object->posnumber; print ""; print "\n"; @@ -322,7 +345,10 @@ if (empty($action) || $action=="view") print '
'; print ''; - if ($cashcontrol->status==1) print ''; + if ($object->status == CashControl::STATUS_DRAFT) + { + print ''; + } print '
'; print '
'; diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 37f73f6712f..fc83239ea70 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -88,7 +88,7 @@ class CashControl extends CommonObject public $card; const STATUS_DRAFT = 0; - const STATUS_VALIDATE = 1; + const STATUS_VALIDATED = 1; /** @@ -302,6 +302,70 @@ class CashControl extends CommonObject } } + /** + * Return label of the status + * + * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto + * @return string Label of status + */ + public function getLibStatut($mode=0) + { + return $this->LibStatut($this->status, $mode); + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return the status + * + * @param int $status Id status + * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto + * @return string Label of status + */ + public function LibStatut($status, $mode=0) + { + // phpcs:enable + if (empty($this->labelstatus)) + { + global $langs; + //$langs->load("mymodule"); + $this->labelstatus[0] = $langs->trans('Draft'); + $this->labelstatus[1] = $langs->trans('Closed'); + } + + if ($mode == 0) + { + return $this->labelstatus[$status]; + } + elseif ($mode == 1) + { + return $this->labelstatus[$status]; + } + elseif ($mode == 2) + { + if ($status == 1) return img_picto($this->labelstatus[$status],'statut6', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut0', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + } + elseif ($mode == 3) + { + if ($status == 1) return img_picto($this->labelstatus[$status],'statut6', '', false, 0, 0, '', 'valignmiddle'); + elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut0', '', false, 0, 0, '', 'valignmiddle'); + } + elseif ($mode == 4) + { + if ($status == 1) return img_picto($this->labelstatus[$status],'statut6', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut0', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + } + elseif ($mode == 5) + { + if ($status == 1) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut6', '', false, 0, 0, '', 'valignmiddle'); + elseif ($status == 0) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut0', '', false, 0, 0, '', 'valignmiddle'); + } + elseif ($mode == 6) + { + if ($status == 1) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut6', '', false, 0, 0, '', 'valignmiddle'); + elseif ($status == 0) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut0', '', false, 0, 0, '', 'valignmiddle'); + } + } /** * Return clicable link of object (with eventually picto) diff --git a/htdocs/langs/en_US/blockedlog.lang b/htdocs/langs/en_US/blockedlog.lang index 88d3662be9c..0dac5a6fd8c 100644 --- a/htdocs/langs/en_US/blockedlog.lang +++ b/htdocs/langs/en_US/blockedlog.lang @@ -8,8 +8,8 @@ BrowseBlockedLog=Unalterable logs ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) DownloadBlockChain=Download fingerprints -KoCheckFingerprintValidity=Archived log is not valid. It means someone (a hacker?) has modified some data of this archived log after it was recorded, or has erased the previous archived record (check that line with previous # exists). -OkCheckFingerprintValidity=Archived log is valid. It means all data on this line were not modified and record follow the previous one. +KoCheckFingerprintValidity=Archived log record is not valid. It means someone (a hacker?) has modified some data of this archived log record after it was recorded, or has erased the previous archived record (check that line with previous # exists). +OkCheckFingerprintValidity=Archived log record is valid. It means all data on this line were not modified and record follow the previous one. OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. AddedByAuthority=Stored into remote authority NotAddedByAuthorityYet=Not yet stored into remote authority @@ -35,6 +35,7 @@ logDON_DELETE=Donation logical deletion logMEMBER_SUBSCRIPTION_CREATE=Member subscription created logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion +logCASHCONTROL_VALIDATE=Cash fence recording BlockedLogBillDownload=Customer invoice download BlockedLogBillPreview=Customer invoice preview BlockedlogInfoDialog=Log Details From 1979e3238c32813384e33d755ba4bcf38922006f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 10:42:30 +0100 Subject: [PATCH 100/307] Fix rounding --- htdocs/expensereport/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 082cccc6868..b5e8ed8151e 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1953,13 +1953,14 @@ else $totalpaid += $objp->amount; $i++; } + $totalpaid = price2num($totalpaid); // Round $totalpaid to fix floating problem after addition into loop if ($object->paid == 0) { print ''.$langs->trans("AlreadyPaid").':'.price($totalpaid).''; print ''.$langs->trans("AmountExpected").':'.price($object->total_ttc).''; - $remaintopay = $object->total_ttc - $totalpaid; + $remaintopay = price2num($object->total_ttc - $totalpaid); print ''.$langs->trans("RemainderToPay").':'; print ''.price($remaintopay).''; From 6b5c0d1ea1fc2a0b73318ac96f3e43fb10edfab7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 11:41:59 +0100 Subject: [PATCH 101/307] Save cash fence event into unalterable log --- htdocs/blockedlog/class/blockedlog.class.php | 22 +++- .../compta/cashcontrol/cashcontrol_card.php | 35 ++++-- .../cashcontrol/class/cashcontrol.class.php | 115 +++++++----------- ..._modBlockedlog_ActionsBlockedLog.class.php | 11 +- 4 files changed, 102 insertions(+), 81 deletions(-) diff --git a/htdocs/blockedlog/class/blockedlog.class.php b/htdocs/blockedlog/class/blockedlog.class.php index aeb71fc6e95..cb36c4cd4f7 100644 --- a/htdocs/blockedlog/class/blockedlog.class.php +++ b/htdocs/blockedlog/class/blockedlog.class.php @@ -274,6 +274,17 @@ class BlockedLog $this->error++; } } + else if($this->element === 'cashcontrol') { + require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; + + $object = new CashControl($this->db); + if ($object->fetch($this->fk_object)>0) { + return $object->getNomUrl(1); + } + else{ + $this->error++; + } + } else if ($this->action == 'MODULE_SET') { return 'System to track events into unalterable logs were enabled'; @@ -355,6 +366,10 @@ class BlockedLog { $this->date_object = $object->dateh; } + elseif ($object->element=='cashcontrol') + { + $this->date_object = $object->date_creation; + } else { $this->date_object = $object->date; } @@ -368,7 +383,12 @@ class BlockedLog // Set object_data $this->object_data=new stdClass(); - $arrayoffieldstoexclude = array('table_element','fields','ref_previous','ref_next','origin','origin_id','oldcopy','picto','error','modelpdf','table_element_line','linkedObjectsIds','linkedObjects','fk_delivery_address'); + $arrayoffieldstoexclude = array( + 'table_element','fields','ref_previous','ref_next','origin','origin_id','oldcopy','picto','error','errors','modelpdf', + 'table_element_line','ismultientitymanaged','isextrafieldmanaged', + 'linkedObjectsIds','linkedObjects','fk_delivery_address', + 'context' + ); // Add thirdparty info if (empty($object->thirdparty) && method_exists($object, 'fetch_thirdparty')) $object->fetch_thirdparty(); diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 8a122a3f939..11c86e53af3 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -141,12 +141,17 @@ elseif ($action=="add") if ($action=="close") { - $object->id=$id; + $object->fetch($id); + $result = $object->valid($user); if ($result <= 0) { setEventMessages($object->error, $object->errors, 'errors'); } + else + { + setEventMessages($langs->trans("CashFenceDone"), null); + } $action="view"; } @@ -284,6 +289,11 @@ if (empty($action) || $action=="view") llxHeader('', $langs->trans("CashControl")); + $head=array(); + $head[0][0] = DOL_URL_ROOT.'/compta/cashcontrol/cashcontrol_card.php?id='.$object->id; + $head[0][1] = $langs->trans("Card"); + $head[0][2] = 'cashcontrol'; + dol_fiche_head($head, 'cashcontrol', $langs->trans("CashControl"), -1, 'cashcontrol'); $linkback = '' . $langs->trans("BackToList") . ''; @@ -299,7 +309,7 @@ if (empty($action) || $action=="view") print '
'; print ''; - print '"; - print '"; print ''; - print ''; - - $remaintopay = price2num($object->total_ttc - $totalpaid); - - print ''; - print ''; + $cssforamountpaymentcomplete = 'amountpaymentneutral'; + $resteapayeraffiche = 0; } + elseif ($object->paid == 0) + { + $cssforamountpaymentcomplete = 'amountpaymentneutral'; + } + print ''; + print ''; + + print ''; + print ''; + $db->free($resql); } else From 4e940ebaf1432c313b8d8fee9e904d0a28d2df31 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 15:35:20 +0100 Subject: [PATCH 103/307] FIX Download of files with hashp when files are into user dir --- htdocs/core/lib/files.lib.php | 3 +++ htdocs/document.php | 12 +++++++++--- htdocs/viewimage.php | 10 ++++++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 1bca14827e6..964e368c4e3 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -2119,6 +2119,9 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity, if (empty($conf->multicompany->enabled)) $entity=1; else $entity=0; } + // Fix modulepart + if ($modulepart == 'users') $modulepart='user'; + dol_syslog('modulepart='.$modulepart.' original_file='.$original_file.' entity='.$entity); // We define $accessallowed and $sqlprotectagainstexternals $accessallowed=0; diff --git a/htdocs/document.php b/htdocs/document.php index 07cc7cea77b..dd7ca2cb79c 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -38,7 +38,7 @@ if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); // For direct external download link, we don't need to load/check we are into a login session -if (isset($_GET["hashp"])) +if (isset($_GET["hashp"]) && ! defined("NOLOGIN")) { if (! defined("NOLOGIN")) define("NOLOGIN",1); if (! defined("NOCSRFCHECK")) define("NOCSRFCHECK",1); // We accept to go on this page from external web site. @@ -122,8 +122,14 @@ if (! empty($hashp)) if ($result > 0) { $tmp = explode('/', $ecmfile->filepath, 2); // $ecmfile->filepath is relative to document directory - $moduleparttocheck = $tmp[0]; - if ($modulepart) // Not required for link using public hashp + // filepath can be 'users/X' or 'X/propale/PR11111' + if (is_numeric($tmp[0])) // If first tmp is numeric, it is subdir of company for multicompany, we take next part. + { + $tmp = explode('/', $tmp[1], 2); + } + $moduleparttocheck = $tmp[0]; // moduleparttocheck is first part of path + + if ($modulepart) // Not required, so often not defined, for link using public hashp parameter. { if ($moduleparttocheck == $modulepart) { diff --git a/htdocs/viewimage.php b/htdocs/viewimage.php index 200230e5ca7..ea29fe0d8bd 100644 --- a/htdocs/viewimage.php +++ b/htdocs/viewimage.php @@ -131,8 +131,14 @@ if (! empty($hashp)) if ($result > 0) { $tmp = explode('/', $ecmfile->filepath, 2); // $ecmfile->filepath is relative to document directory - $moduleparttocheck = $tmp[0]; - if ($modulepart) // Not required for link using public hashp + // filepath can be 'users/X' or 'X/propale/PR11111' + if (is_numeric($tmp[0])) // If first tmp is numeric, it is subdir of company for multicompany, we take next part. + { + $tmp = explode('/', $tmp[1], 2); + } + $moduleparttocheck = $tmp[0]; // moduleparttocheck is first part of path + + if ($modulepart) // Not required, so often not defined, for link using public hashp parameter. { if ($moduleparttocheck == $modulepart) { From 1aadcc50f11ae2174264c2a69c604bfdaf4f9b12 Mon Sep 17 00:00:00 2001 From: atm-ph Date: Mon, 17 Dec 2018 15:48:27 +0100 Subject: [PATCH 104/307] Fix attached files from user mail form don't work --- htdocs/user/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 9d9b73bad09..0df6eb804c4 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -602,7 +602,7 @@ if (empty($reshook)) { $trigger_name='USER_SENTBYMAIL'; $paramname='id'; // Name of param key to open the card $mode='emailfromuser'; - $trackid='use'.$object->id; + $trackid='use'.$id; include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; // Actions to build doc From ffaff4dc7f4cebbde40326cc68ee66a666935a0d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 17:29:04 +0100 Subject: [PATCH 105/307] Debug website module --- htdocs/core/lib/website.lib.php | 8 +++ .../websites/website_template-corporate.zip | Bin 3837802 -> 2296189 bytes htdocs/langs/en_US/website.lang | 3 +- htdocs/website/index.php | 61 ++++++++++-------- 4 files changed, 45 insertions(+), 27 deletions(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 70f61055689..49486870a13 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -212,6 +212,10 @@ function dolWebsiteOutput($content) $content=preg_replace('/(]*src=")[^\"]*viewimage\.php([^\"]*)modulepart=medias([^\"]*)file=([^\"]*)("[^>]*>)/', '\1/wrapper.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep); $content=preg_replace('/(url\(["\']?)[^\)]*viewimage\.php([^\)]*)modulepart=medias([^\)]*)file=([^\)]*)(["\']?\))/', '\1/wrapper.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep); + $content=preg_replace('/(]*href=")[^\"]*viewimage\.php([^\"]*)hashp=([^\"]*)("[^>]*>)/', '\1/wrapper.php\2hashp=\3\4', $content, -1, $nbrep); + $content=preg_replace('/(]*src=")[^\"]*viewimage\.php([^\"]*)hashp=([^\"]*)("[^>]*>)/', '\1/wrapper.php\2hashp=\3\4', $content, -1, $nbrep); + $content=preg_replace('/(url\(["\']?)[^\)]*viewimage\.php([^\)]*)hashp=([^\)]*)(["\']?\))/', '\1/wrapper.php\2hashp\3\4', $content, -1, $nbrep); + $content=preg_replace('/(]*src=")[^\"]*viewimage\.php([^\"]*)modulepart=mycompany([^\"]*)file=([^\"]*)("[^>]*>)/', '\1/wrapper.php\2modulepart=mycompany\3file=\4\5', $content, -1, $nbrep); } else @@ -222,6 +226,10 @@ function dolWebsiteOutput($content) $content=preg_replace('/(]*src=")[^\"]*viewimage\.php([^\"]*)modulepart=medias([^\"]*)file=([^\"]*)("[^>]*>)/', '\1medias/\4\5', $content, -1, $nbrep); $content=preg_replace('/(url\(["\']?)[^\)]*viewimage\.php([^\)]*)modulepart=medias([^\)]*)file=([^\)]*)(["\']?\))/', '\1medias/\4\5', $content, -1, $nbrep); + $content=preg_replace('/(]*href=")[^\"]*viewimage\.php([^\"]*)hashp=([^\"]*)("[^>]*>)/', '\1/wrapper.php\2hashp=\3\4', $content, -1, $nbrep); + $content=preg_replace('/(]*src=")[^\"]*viewimage\.php([^\"]*)hashp=([^\"]*)("[^>]*>)/', '\1/wrapper.php\2hashp=\3\4', $content, -1, $nbrep); + $content=preg_replace('/(url\(["\']?)[^\)]*viewimage\.php([^\)]*)hashp=([^\)]*)(["\']?\))/', '\1/wrapper.php\2hashp=\3\4', $content, -1, $nbrep); + $content=preg_replace('/(]*src=")[^\"]*viewimage\.php([^\"]*)modulepart=mycompany([^\"]*)file=([^\"]*)("[^>]*>)/', '\1/wrapper.php\2modulepart=mycompany\3file=\4\5', $content, -1, $nbrep); } } diff --git a/htdocs/install/doctemplates/websites/website_template-corporate.zip b/htdocs/install/doctemplates/websites/website_template-corporate.zip index 5aca2fbc8aa336d695d63b2bdd8201f0a0dda699..f4b25d9a69e5b9e8ab22761c49c91d61112cd40c 100644 GIT binary patch delta 19108 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 F007x>6-@vD delta 1572327 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%0Dl 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

&Dl_=fd&zeRtsCe0i2ykpp| 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

D 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≥Z3CZ{!nAl37~exC989vM|eH4g=U& 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

'; @@ -2606,7 +2606,7 @@ if ($action == 'editmeta' || $action == 'createcontainer') print ''; @@ -2636,8 +2636,8 @@ if ($action == 'editmeta' || $action == 'createcontainer') } print '\n"; print ''; print ''; if (! empty($conf->banque->enabled)) { @@ -157,7 +157,8 @@ if (! empty($conf->stock->enabled)) if (!$conf->global->CASHDESK_NO_DECREASE_STOCK) { $res = dolibarr_set_const($db,"CASHDESK_NO_DECREASE_STOCK",1,'chaine',0,'',$conf->entity); } - print $langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch'); + print $langs->trans("Yes").'
'; + print ''.$langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch').''; } print ''; @@ -173,7 +174,7 @@ if (! empty($conf->stock->enabled)) } else { - print $langs->trans("StockDecreaseForPointOfSaleDisabled"); + print ''.$langs->trans("StockDecreaseForPointOfSaleDisabled").''; } print ''; } diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 11c86e53af3..6d446580353 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -1,4 +1,6 @@ * Copyright (C) 2004-2013 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin @@ -28,6 +30,7 @@ */ require '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; $langs->loadLangs(array("cashcontrol","install","cashdesk","admin","banks")); @@ -38,7 +41,10 @@ $action=GETPOST('action','aZ09'); $categid = GETPOST('categid'); $label = GETPOST("label"); -if (empty($conf->global->CASHDESK_ID_BANKACCOUNT_CASH) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CB)) setEventMessages($langs->trans("CashDesk")." - ".$langs->trans("NotConfigured"), null, 'errors'); +$now=dol_now(); +$syear = (GETPOSTISSET('closeyear')?GETPOST('closeyear', 'int'):dol_print_date($now, "%Y")); +$smonth = (GETPOSTISSET('closemonth')?GETPOST('closemonth', 'int'):dol_print_date($now, "%m")); +$sday = (GETPOSTISSET('closeday')?GETPOST('closeday', 'int'):dol_print_date($now, "%d")); $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; $sortfield = GETPOST("sortfield",'alpha'); @@ -78,6 +84,16 @@ $hookmanager->initHooks(array('cashcontrolcard','globalcard')); * Actions */ +if (empty($conf->global->CASHDESK_ID_BANKACCOUNT_CASH)) +{ + setEventMessages($langs->trans("CashDesk")." - ".$langs->trans("NotConfigured"), null, 'errors'); +} + + +if (GETPOST('cancel')) +{ + $action = 'create'; +} if ($action=="start") { $error=0; @@ -102,13 +118,13 @@ if ($action=="start") } elseif ($action=="add") { - $error=0; if (GETPOST('opening','alpha') == '') { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("InitialBankBalance")), null, 'errors'); $action='start'; $error++; } + $error=0; foreach($arrayofpaymentmode as $key=>$val) { if (GETPOST($key,'alpha') == '') @@ -133,9 +149,20 @@ elseif ($action=="add") $object->posmodule=GETPOST('posmodule','alpha'); $object->posnumber=GETPOST('posnumber','alpha'); - $id=$object->create($user); + $db->begin(); - $action="view"; + $id=$object->create($user); + + if ($id > 0) + { + $db->commit(); + $action="view"; + } + else + { + $db->rollback; + $action="view"; + } } } @@ -171,16 +198,86 @@ if ($action=="create" || $action=="start") $initialbalanceforterminal=array(); $theoricalamountforterminal=array(); - if (GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') + if (GETPOST('posnumber','alpha') != '' && GETPOST('posnumber','alpha') != '' && GETPOST('posnumber','alpha') != '-1') { - // Calculate $initialbalanceforterminal and $theoricalamountforterminal for terminal 0 - // TODO + $posmodule = GETPOST('posmodule','alpha'); + $terminalid = GETPOST('posnumber','alpha'); + + // Calculate $initialbalanceforterminal for terminal 0 + foreach($arrayofpaymentmode as $key => $val) + { + if ($key != 'cash') + { + $initialbalanceforterminal[$terminalid][$key] = 0; + continue; + } + + // Get the bank account dedicated to this point of sale module/terminal + $bankid = $conf->global->CASHDESK_ID_BANKACCOUNT_CASH; // This value is ok for 'Terminal 0' for module 'CashDesk' and 'TakePos' (they manage only 1 terminal) + // Hook to get the good bank id according to posmodule and posnumber. + // @TODO add hook here + + $sql = "SELECT SUM(amount) as total FROM ".MAIN_DB_PREFIX."bank"; + $sql.= " WHERE fk_account = ".$bankid; + if ($syear && ! $smonth) $sql.= " AND dateo < '".$db->idate(dol_get_first_day($syear, 1))."'"; + elseif ($syear && $smonth && ! $sday) $sql.= " AND dateo < '".$db->idate(dol_get_first_day($syear, $smonth))."'"; + elseif ($syear && $smonth && $sday) $sql.= " AND dateo < '".$db->idate(dol_mktime(0, 0, 0, $smonth, $sday, $syear))."'"; + else dol_print_error('', 'Year not defined'); + + $resql = $db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + if ($obj) $initialbalanceforterminal[$terminalid][$key] = $obj->total; + } + else dol_print_error($db); + } + + // Calculate $theoricalamountforterminal for terminal 0 + foreach($arrayofpaymentmode as $key => $val) + { + /*$sql = "SELECT SUM(amount) as total FROM ".MAIN_DB_PREFIX."bank"; + $sql.= " WHERE fk_account = ".$bankid;*/ + + $sql = "SELECT SUM(pf.amount) as total"; + $sql.= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as cp"; + $sql.= " WHERE pf.fk_facture = f.rowid AND p.rowid = pf.fk_paiement AND cp.id = p.fk_paiement"; + $sql.= " AND f.module_source = '".$db->escape($posmodule)."'"; + $sql.= " AND f.pos_source = '".$db->escape($terminalid)."'"; + $sql.= " AND f.paye = 1"; + $sql.= " AND p.entity IN (".getEntity('facture').")"; + if ($key == 'cash') $sql.=" AND cp.code = 'LIQ'"; + elseif ($key == 'cheque') $sql.=" AND cp.code = 'CHQ'"; + elseif ($key == 'card') $sql.=" AND cp.code = 'CB'"; + else + { + dol_print_error('Value for key = '.$key.' not supported'); + exit; + } + if ($syear && ! $smonth) $sql.= " AND datef BETWEEN '".$db->idate(dol_get_first_day($syear, 1))."' AND '".$db->idate(dol_get_last_day($syear, 12))."'"; + elseif ($syear && $smonth && ! $sday) $sql.= " AND datef BETWEEN '".$db->idate(dol_get_first_day($syear, $smonth))."' AND '".$db->idate(dol_get_last_day($syear, $smonth))."'"; + elseif ($syear && $smonth && $sday) $sql.= " AND datef BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $smonth, $sday, $syear))."' AND '".$db->idate(dol_mktime(23, 59, 59, $smonth, $sday, $syear))."'"; + else dol_print_error('', 'Year not defined'); + + $resql = $db->query($sql); + if ($resql) + { + $theoricalamountforterminal[$terminalid][$key] = $initialbalanceforterminal[$terminalid][$key]; + + $obj = $db->fetch_object($resql); + if ($obj) + { + $theoricalamountforterminal[$terminalid][$key] = price2num($theoricalamountforterminal[$terminalid][$key] + $obj->total); + } + } + else dol_print_error($db); + } } print load_fiche_titre($langs->trans("CashControl")." - ".$langs->trans("New"), '', 'title_bank.png'); print '
'; - if ($action == 'start' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') + if ($action == 'start' && GETPOST('posnumber','int') != '' && GETPOST('posnumber','int') != '' && GETPOST('posnumber','int') != '-1') { print ''; } @@ -198,10 +295,6 @@ if ($action=="create" || $action=="start") print '
'; print "\n"; - $now=dol_now(); - $syear = (GETPOSTISSET('closeyear')?GETPOST('closeyear', 'int'):dol_print_date($now, "%Y")); - $smonth = (GETPOSTISSET('closemonth')?GETPOST('closemonth', 'int'):dol_print_date($now, "%m")); - $sday = (GETPOSTISSET('closeday')?GETPOST('closeday', 'int'):dol_print_date($now, "%d")); $disabled=0; $prefix='close'; @@ -242,6 +335,7 @@ if ($action=="create" || $action=="start") $retstring.=""; print $retstring; print ''; + // Button Start print ''; // Zip / Town print ''; // Country diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index 56363599c10..81375220a85 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -42,7 +42,7 @@ $backtopage = GETPOST('backtopage','alpha'); $search_lastname = GETPOST('search_lastname','alpha'); $search_login = GETPOST('search_login','alpha'); $search_email = GETPOST('search_email','alpha'); -$type = GETPOST('type','alpha'); +$type = GETPOST('type','intcomma'); $status = GETPOST('status','alpha'); $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; @@ -59,8 +59,8 @@ if (! $sortfield) { $sortfield="d.lastname"; } $label=GETPOST("label","alpha"); $subscription=GETPOST("subscription","int"); $vote=GETPOST("vote","int"); -$comment=GETPOST("comment"); -$mail_valid=GETPOST("mail_valid"); +$comment=GETPOST("comment",'alphanohtml'); +$mail_valid=GETPOST("mail_valid",'none'); // Security check $result=restrictedArea($user,'adherent',$rowid,'adherent_type'); From fc3fcc5455d9a610b85723e89e8be43a41ad1378 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 16:59:30 +0100 Subject: [PATCH 132/307] FIX CVE-2018-19993 --- htdocs/public/notice.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/public/notice.php b/htdocs/public/notice.php index 623baa2020a..6a55411ae3b 100644 --- a/htdocs/public/notice.php +++ b/htdocs/public/notice.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2016-2018 Laurent Destailleur * * 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 @@ -19,13 +19,13 @@ * \file htdocs/public/notice.php * \brief Dolibarr page to show a notice. * Default notice is a message to say network connection is off. - * You can also call this page with URL: + * You can also call this page with URL: * /public/notice.php?lang=xx_XX&transkey=translation_key (key must be inside file main.lang, error.lang or other.lang) * /public/notice.php?transphrase=url_encoded_sentence_to_show */ define('NOCSRFCHECK',1); -define('NOLOGIN',1); +define('NOLOGIN',1); require '../main.inc.php'; @@ -34,7 +34,7 @@ require '../main.inc.php'; * View */ -if (! GETPOST('transkey') && ! GETPOST('transphrase')) +if (! GETPOST('transkey','alphanohtml') && ! GETPOST('transphrase','alphanohtml')) { print 'Sorry, it seems your internet connexion is off.
'; print 'You need to be connected to network to use this software.
'; @@ -43,8 +43,8 @@ else { $langs->load("error"); $langs->load("other"); - - if (GETPOST('transphrase')) print GETPOST('transphrase'); - if (GETPOST('transkey')) print $langs->trans(GETPOST('transkey')); + + if (GETPOST('transphrase','alphanohtml')) print GETPOST('transphrase','alphanohtml'); + if (GETPOST('transkey','alphanohtml')) print $langs->trans(GETPOST('transkey','alphanohtml')); } From 850b939ffd2c7a4443649331b923d5e0da2d6446 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 17:03:50 +0100 Subject: [PATCH 133/307] FIX CVE-2018-19994 --- htdocs/product/class/product.class.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index c30376622a4..66f7e288efa 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -859,9 +859,9 @@ class Product extends CommonObject $sql.= ", barcode = ". (empty($this->barcode)?"null":"'".$this->db->escape($this->barcode)."'"); $sql.= ", fk_barcode_type = ". (empty($this->barcode_type)?"null":$this->db->escape($this->barcode_type)); - $sql.= ", tosell = " . $this->status; - $sql.= ", tobuy = " . $this->status_buy; - $sql.= ", tobatch = " . ((empty($this->status_batch) || $this->status_batch < 0) ? '0' : $this->status_batch); + $sql.= ", tosell = " . (int) $this->status; + $sql.= ", tobuy = " . (int) $this->status_buy; + $sql.= ", tobatch = " . ((empty($this->status_batch) || $this->status_batch < 0) ? '0' : (int) $this->status_batch); $sql.= ", finished = " . ((! isset($this->finished) || $this->finished < 0) ? "null" : (int) $this->finished); $sql.= ", weight = " . ($this->weight!='' ? "'".$this->db->escape($this->weight)."'" : 'null'); $sql.= ", weight_units = " . ($this->weight_units!='' ? "'".$this->db->escape($this->weight_units)."'": 'null'); @@ -880,18 +880,18 @@ class Product extends CommonObject $sql.= ", description = '" . $this->db->escape($this->description) ."'"; $sql.= ", url = " . ($this->url?"'".$this->db->escape($this->url)."'":'null'); $sql.= ", customcode = '" . $this->db->escape($this->customcode) ."'"; - $sql.= ", fk_country = " . ($this->country_id > 0 ? $this->country_id : 'null'); + $sql.= ", fk_country = " . ($this->country_id > 0 ? (int) $this->country_id : 'null'); $sql.= ", note = ".(isset($this->note) ? "'" .$this->db->escape($this->note)."'" : 'null'); $sql.= ", duration = '" . $this->db->escape($this->duration_value . $this->duration_unit) ."'"; $sql.= ", accountancy_code_buy = '" . $this->db->escape($this->accountancy_code_buy)."'"; $sql.= ", accountancy_code_sell= '" . $this->db->escape($this->accountancy_code_sell)."'"; $sql.= ", accountancy_code_sell_intra= '" . $this->db->escape($this->accountancy_code_sell_intra)."'"; $sql.= ", accountancy_code_sell_export= '" . $this->db->escape($this->accountancy_code_sell_export)."'"; - $sql.= ", desiredstock = " . ((isset($this->desiredstock) && $this->desiredstock != '') ? $this->desiredstock : "null"); + $sql.= ", desiredstock = " . ((isset($this->desiredstock) && $this->desiredstock != '') ? (int) $this->desiredstock : "null"); $sql.= ", cost_price = " . ($this->cost_price != '' ? $this->db->escape($this->cost_price) : 'null'); - $sql.= ", fk_unit= " . (!$this->fk_unit ? 'NULL' : $this->fk_unit); + $sql.= ", fk_unit= " . ((! $this->fk_unit) ? 'NULL' : (int) $this->fk_unit); $sql.= ", price_autogen = " . (!$this->price_autogen ? 0 : 1); - $sql.= ", fk_price_expression = ".($this->fk_price_expression != 0 ? $this->fk_price_expression : 'NULL'); + $sql.= ", fk_price_expression = ".($this->fk_price_expression != 0 ? (int) $this->fk_price_expression : 'NULL'); $sql.= ", fk_user_modif = ".($user->id > 0 ? $user->id : 'NULL'); // stock field is not here because it is a denormalized value from product_stock. $sql.= " WHERE rowid = " . $id; From 4b8be6ed64763327018ac1c076f81ddffa87855e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 17:08:55 +0100 Subject: [PATCH 134/307] FIX CVE-2018-19995 --- htdocs/user/card.php | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index b6886d32dbf..6743078c9d2 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -191,31 +191,31 @@ if (empty($reshook)) { $birth = dol_mktime(0, 0, 0, GETPOST('birthmonth'), GETPOST('birthday'), GETPOST('birthyear')); $object->birth = $birth; $object->admin = GETPOST("admin", 'alpha'); - $object->address = GETPOST('address', 'alpha'); - $object->zip = GETPOST('zipcode', 'alpha'); - $object->town = GETPOST('town', 'alpha'); + $object->address = GETPOST('address', 'alphanohtml'); + $object->zip = GETPOST('zipcode', 'alphanohtml'); + $object->town = GETPOST('town', 'alphanohtml'); $object->country_id = GETPOST('country_id', 'int'); $object->state_id = GETPOST('state_id', 'int'); - $object->office_phone = GETPOST("office_phone", 'alpha'); - $object->office_fax = GETPOST("office_fax", 'alpha'); - $object->user_mobile = GETPOST("user_mobile"); - $object->skype = GETPOST("skype", 'alpha'); + $object->office_phone = GETPOST("office_phone", 'alphanohtml'); + $object->office_fax = GETPOST("office_fax", 'alphanohtml'); + $object->user_mobile = GETPOST("user_mobile", 'alphanohtml'); + $object->skype = GETPOST("skype", 'alphanohtml'); $object->email = preg_replace('/\s+/', '', GETPOST("email", 'alpha')); $object->job = GETPOST("job", 'alpha'); - $object->signature = GETPOST("signature"); - $object->accountancy_code = GETPOST("accountancy_code"); - $object->note = GETPOST("note"); - $object->ldap_sid = GETPOST("ldap_sid"); - $object->fk_user = GETPOST("fk_user") > 0 ? GETPOST("fk_user") : 0; - $object->employee = GETPOST('employee'); + $object->signature = GETPOST("signature", 'none'); + $object->accountancy_code = GETPOST("accountancy_code", 'alphanohtml'); + $object->note = GETPOST("note", 'none'); + $object->ldap_sid = GETPOST("ldap_sid", 'alphanohtml'); + $object->fk_user = GETPOST("fk_user", 'int') > 0 ? GETPOST("fk_user", 'int') : 0; + $object->employee = GETPOST('employee', 'alphanohtml'); - $object->thm = GETPOST("thm") != '' ? GETPOST("thm") : ''; - $object->tjm = GETPOST("tjm") != '' ? GETPOST("tjm") : ''; - $object->salary = GETPOST("salary") != '' ? GETPOST("salary") : ''; - $object->salaryextra = GETPOST("salaryextra") != '' ? GETPOST("salaryextra") : ''; - $object->weeklyhours = GETPOST("weeklyhours") != '' ? GETPOST("weeklyhours") : ''; + $object->thm = GETPOST("thm", 'alphanohtml') != '' ? GETPOST("thm", 'alphanohtml') : ''; + $object->tjm = GETPOST("tjm", 'alphanohtml') != '' ? GETPOST("tjm", 'alphanohtml') : ''; + $object->salary = GETPOST("salary", 'alphanohtml') != '' ? GETPOST("salary", 'alphanohtml') : ''; + $object->salaryextra = GETPOST("salaryextra", 'alphanohtml') != '' ? GETPOST("salaryextra", 'alphanohtml') : ''; + $object->weeklyhours = GETPOST("weeklyhours", 'alphanohtml') != '' ? GETPOST("weeklyhours", 'alphanohtml') : ''; - $object->color = GETPOST("color") != '' ? GETPOST("color") : ''; + $object->color = GETPOST("color", 'alphanohtml') != '' ? GETPOST("color", 'alphanohtml') : ''; $dateemployment = dol_mktime(0, 0, 0, GETPOST('dateemploymentmonth'), GETPOST('dateemploymentday'), GETPOST('dateemploymentyear')); $object->dateemployment = $dateemployment; @@ -335,14 +335,14 @@ if (empty($reshook)) { $object->pass = GETPOST("password",'none'); $object->api_key = (GETPOST("api_key", 'alpha')) ? GETPOST("api_key", 'alpha') : $object->api_key; if (! empty($user->admin)) $object->admin = GETPOST("admin"); // admin flag can only be set/unset by an admin user. A test is also done later when forging sql request - $object->address = GETPOST('address', 'alpha'); - $object->zip = GETPOST('zipcode', 'alpha'); - $object->town = GETPOST('town', 'alpha'); + $object->address = GETPOST('address', 'alphanohtml'); + $object->zip = GETPOST('zipcode', 'alphanohtml'); + $object->town = GETPOST('town', 'alphanohtml'); $object->country_id = GETPOST('country_id', 'int'); $object->state_id = GETPOST('state_id', 'int'); - $object->office_phone = GETPOST("office_phone", 'alpha'); - $object->office_fax = GETPOST("office_fax", 'alpha'); - $object->user_mobile = GETPOST("user_mobile"); + $object->office_phone = GETPOST("office_phone", 'alphanohtml'); + $object->office_fax = GETPOST("office_fax", 'alphanohtml'); + $object->user_mobile = GETPOST("user_mobile", 'alphanohtml'); $object->skype = GETPOST("skype", 'alpha'); $object->email = preg_replace('/\s+/', '', GETPOST("email", 'alpha')); $object->job = GETPOST("job", 'alpha'); @@ -350,7 +350,7 @@ if (empty($reshook)) { $object->accountancy_code = GETPOST("accountancy_code",'alpha'); $object->openid = GETPOST("openid",'alpha'); $object->fk_user = GETPOST("fk_user",'int') > 0 ? GETPOST("fk_user",'int') : 0; - $object->employee = GETPOST('employee'); + $object->employee = GETPOST('employee','alphanothtml'); $object->thm = GETPOST("thm",'alphanohtml') != '' ? GETPOST("thm",'alphanohtml') : ''; $object->tjm = GETPOST("tjm",'alphanohtml') != '' ? GETPOST("tjm",'alphanohtml') : ''; From bacd5110fbdc81a35030fdc322775fa15ea85924 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 17:08:55 +0100 Subject: [PATCH 135/307] FIX CVE-2018-19995 and CVE-2018-19998 --- htdocs/user/card.php | 52 ++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index b6886d32dbf..6743078c9d2 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -191,31 +191,31 @@ if (empty($reshook)) { $birth = dol_mktime(0, 0, 0, GETPOST('birthmonth'), GETPOST('birthday'), GETPOST('birthyear')); $object->birth = $birth; $object->admin = GETPOST("admin", 'alpha'); - $object->address = GETPOST('address', 'alpha'); - $object->zip = GETPOST('zipcode', 'alpha'); - $object->town = GETPOST('town', 'alpha'); + $object->address = GETPOST('address', 'alphanohtml'); + $object->zip = GETPOST('zipcode', 'alphanohtml'); + $object->town = GETPOST('town', 'alphanohtml'); $object->country_id = GETPOST('country_id', 'int'); $object->state_id = GETPOST('state_id', 'int'); - $object->office_phone = GETPOST("office_phone", 'alpha'); - $object->office_fax = GETPOST("office_fax", 'alpha'); - $object->user_mobile = GETPOST("user_mobile"); - $object->skype = GETPOST("skype", 'alpha'); + $object->office_phone = GETPOST("office_phone", 'alphanohtml'); + $object->office_fax = GETPOST("office_fax", 'alphanohtml'); + $object->user_mobile = GETPOST("user_mobile", 'alphanohtml'); + $object->skype = GETPOST("skype", 'alphanohtml'); $object->email = preg_replace('/\s+/', '', GETPOST("email", 'alpha')); $object->job = GETPOST("job", 'alpha'); - $object->signature = GETPOST("signature"); - $object->accountancy_code = GETPOST("accountancy_code"); - $object->note = GETPOST("note"); - $object->ldap_sid = GETPOST("ldap_sid"); - $object->fk_user = GETPOST("fk_user") > 0 ? GETPOST("fk_user") : 0; - $object->employee = GETPOST('employee'); + $object->signature = GETPOST("signature", 'none'); + $object->accountancy_code = GETPOST("accountancy_code", 'alphanohtml'); + $object->note = GETPOST("note", 'none'); + $object->ldap_sid = GETPOST("ldap_sid", 'alphanohtml'); + $object->fk_user = GETPOST("fk_user", 'int') > 0 ? GETPOST("fk_user", 'int') : 0; + $object->employee = GETPOST('employee', 'alphanohtml'); - $object->thm = GETPOST("thm") != '' ? GETPOST("thm") : ''; - $object->tjm = GETPOST("tjm") != '' ? GETPOST("tjm") : ''; - $object->salary = GETPOST("salary") != '' ? GETPOST("salary") : ''; - $object->salaryextra = GETPOST("salaryextra") != '' ? GETPOST("salaryextra") : ''; - $object->weeklyhours = GETPOST("weeklyhours") != '' ? GETPOST("weeklyhours") : ''; + $object->thm = GETPOST("thm", 'alphanohtml') != '' ? GETPOST("thm", 'alphanohtml') : ''; + $object->tjm = GETPOST("tjm", 'alphanohtml') != '' ? GETPOST("tjm", 'alphanohtml') : ''; + $object->salary = GETPOST("salary", 'alphanohtml') != '' ? GETPOST("salary", 'alphanohtml') : ''; + $object->salaryextra = GETPOST("salaryextra", 'alphanohtml') != '' ? GETPOST("salaryextra", 'alphanohtml') : ''; + $object->weeklyhours = GETPOST("weeklyhours", 'alphanohtml') != '' ? GETPOST("weeklyhours", 'alphanohtml') : ''; - $object->color = GETPOST("color") != '' ? GETPOST("color") : ''; + $object->color = GETPOST("color", 'alphanohtml') != '' ? GETPOST("color", 'alphanohtml') : ''; $dateemployment = dol_mktime(0, 0, 0, GETPOST('dateemploymentmonth'), GETPOST('dateemploymentday'), GETPOST('dateemploymentyear')); $object->dateemployment = $dateemployment; @@ -335,14 +335,14 @@ if (empty($reshook)) { $object->pass = GETPOST("password",'none'); $object->api_key = (GETPOST("api_key", 'alpha')) ? GETPOST("api_key", 'alpha') : $object->api_key; if (! empty($user->admin)) $object->admin = GETPOST("admin"); // admin flag can only be set/unset by an admin user. A test is also done later when forging sql request - $object->address = GETPOST('address', 'alpha'); - $object->zip = GETPOST('zipcode', 'alpha'); - $object->town = GETPOST('town', 'alpha'); + $object->address = GETPOST('address', 'alphanohtml'); + $object->zip = GETPOST('zipcode', 'alphanohtml'); + $object->town = GETPOST('town', 'alphanohtml'); $object->country_id = GETPOST('country_id', 'int'); $object->state_id = GETPOST('state_id', 'int'); - $object->office_phone = GETPOST("office_phone", 'alpha'); - $object->office_fax = GETPOST("office_fax", 'alpha'); - $object->user_mobile = GETPOST("user_mobile"); + $object->office_phone = GETPOST("office_phone", 'alphanohtml'); + $object->office_fax = GETPOST("office_fax", 'alphanohtml'); + $object->user_mobile = GETPOST("user_mobile", 'alphanohtml'); $object->skype = GETPOST("skype", 'alpha'); $object->email = preg_replace('/\s+/', '', GETPOST("email", 'alpha')); $object->job = GETPOST("job", 'alpha'); @@ -350,7 +350,7 @@ if (empty($reshook)) { $object->accountancy_code = GETPOST("accountancy_code",'alpha'); $object->openid = GETPOST("openid",'alpha'); $object->fk_user = GETPOST("fk_user",'int') > 0 ? GETPOST("fk_user",'int') : 0; - $object->employee = GETPOST('employee'); + $object->employee = GETPOST('employee','alphanothtml'); $object->thm = GETPOST("thm",'alphanohtml') != '' ? GETPOST("thm",'alphanohtml') : ''; $object->tjm = GETPOST("tjm",'alphanohtml') != '' ? GETPOST("tjm",'alphanohtml') : ''; From 2b088a73c121a52e006c0d76ea4da7ffeb7b4f4a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 17:16:08 +0100 Subject: [PATCH 136/307] FIX CVE-2018-19998 --- htdocs/user/card.php | 2 +- htdocs/user/class/user.class.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 6743078c9d2..f0b3fb819f2 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -350,7 +350,7 @@ if (empty($reshook)) { $object->accountancy_code = GETPOST("accountancy_code",'alpha'); $object->openid = GETPOST("openid",'alpha'); $object->fk_user = GETPOST("fk_user",'int') > 0 ? GETPOST("fk_user",'int') : 0; - $object->employee = GETPOST('employee','alphanothtml'); + $object->employee = GETPOST('employee','int'); $object->thm = GETPOST("thm",'alphanohtml') != '' ? GETPOST("thm",'alphanohtml') : ''; $object->tjm = GETPOST("tjm",'alphanohtml') != '' ? GETPOST("tjm",'alphanohtml') : ''; diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index 161cea20e77..ef2b828f6e5 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1405,12 +1405,12 @@ class User extends CommonObject $sql = "UPDATE ".MAIN_DB_PREFIX."user SET"; $sql.= " lastname = '".$this->db->escape($this->lastname)."'"; $sql.= ", firstname = '".$this->db->escape($this->firstname)."'"; - $sql.= ", employee = ".$this->employee; + $sql.= ", employee = ".(int) $this->employee; $sql.= ", login = '".$this->db->escape($this->login)."'"; $sql.= ", api_key = ".($this->api_key ? "'".$this->db->escape($this->api_key)."'" : "null"); $sql.= ", gender = ".($this->gender != -1 ? "'".$this->db->escape($this->gender)."'" : "null"); // 'man' or 'woman' $sql.= ", birth=".(strval($this->birth)!='' ? "'".$this->db->idate($this->birth)."'" : 'null'); - if (! empty($user->admin)) $sql.= ", admin = ".$this->admin; // admin flag can be set/unset only by an admin user + if (! empty($user->admin)) $sql.= ", admin = ".(int) $this->admin; // admin flag can be set/unset only by an admin user $sql.= ", address = '".$this->db->escape($this->address)."'"; $sql.= ", zip = '".$this->db->escape($this->zip)."'"; $sql.= ", town = '".$this->db->escape($this->town)."'"; @@ -1502,7 +1502,7 @@ class User extends CommonObject $adh->zip=$this->zip; $adh->state_id=$this->state_id; $adh->country_id=$this->country_id; - + $adh->email=$this->email; $adh->skype=$this->skype; $adh->phone=$this->office_phone; From f8b0e535fae484348da17099e3747b0823ce52f6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 17:30:22 +0100 Subject: [PATCH 137/307] Code comment --- htdocs/main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 0e586e6f4a4..ca182c7b337 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -352,7 +352,7 @@ if ((! empty($conf->global->MAIN_VERSION_LAST_UPGRADE) && ($conf->global->MAIN_V // Creation of a token against CSRF vulnerabilities if (! defined('NOTOKENRENEWAL')) { - // roulement des jetons car cree a chaque appel + // Rolling token at each call ($_SESSION['token'] contains token of previous page) if (isset($_SESSION['newtoken'])) $_SESSION['token'] = $_SESSION['newtoken']; // Save in $_SESSION['newtoken'] what will be next token. Into forms, we will add param token = $_SESSION['newtoken'] From b3b7a12a1623dc914f2aaecb39dbfedaecd82108 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 18:56:29 +0100 Subject: [PATCH 138/307] FIX Look and feel v9 --- htdocs/user/hierarchy.php | 36 ++++++++++++++++++++++++++++-------- htdocs/user/list.php | 28 ++++++++++++++-------------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/htdocs/user/hierarchy.php b/htdocs/user/hierarchy.php index 7882bfb24e2..65723b4d65d 100644 --- a/htdocs/user/hierarchy.php +++ b/htdocs/user/hierarchy.php @@ -52,6 +52,10 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter','a $search_statut=""; } +// Define value to know what current user can do on users +$canadduser=(! empty($user->admin) || $user->rights->user->user->creer); + + /* * View @@ -62,12 +66,7 @@ $form = new Form($db); $arrayofjs=array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.js', '/includes/jquery/plugins/jquerytreeview/lib/jquery.cookie.js'); $arrayofcss=array('/includes/jquery/plugins/jquerytreeview/jquery.treeview.css'); -llxHeader('',$langs->trans("ListOfUsers"). ' ('.$langs->trans("HierarchicView").')','','',0,0,$arrayofjs,$arrayofcss); - -$morehtmlright = '
'.$langs->trans("ViewList").''; - -print load_fiche_titre($langs->trans("ListOfUsers"). ' ('.$langs->trans("HierarchicView").')', $morehtmlright); - +llxHeader('',$langs->trans("ListOfUsers"). ' - '.$langs->trans("HierarchicView"),'','',0,0,$arrayofjs,$arrayofcss); // Load hierarchy of users @@ -138,9 +137,30 @@ foreach($fulltree as $key => $val) //var_dump($data); -print '
'."\n"; +$title = $langs->trans("ListOfUsers"). ' - '.$langs->trans("HierarchicView"); -$param="search_statut=".$search_statut; +$param="search_statut=".urlencode($search_statut); + +$newcardbutton=''; +if ($canadduser) +{ + $newcardbutton = ''.$langs->trans('NewUser').''; + $newcardbutton.= ''; + $newcardbutton.= ''; +} + +$morehtmlright = ''.$langs->trans("ViewList").''; + +print load_fiche_titre($title, $morehtmlright.' '.$newcardbutton); + +print ''."\n"; +if ($optioncss != '') print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; print '
'; + print '
'; print $langs->trans("Ref"); print ''; print $id; @@ -309,8 +319,8 @@ if (empty($action) || $action=="view") print $object->posmodule; print "
'.$langs->trans("InitialBankBalance").''; - print price($object->opening); + print '
'.$langs->trans("CashDesk").' ID'; + print $object->posnumber; print "
'; @@ -326,15 +336,26 @@ if (empty($action) || $action=="view") print '
'; print ''; - print ''; - print '"; + + print '"; + print '"; + print '"; + print "
'; + print '
'; print $langs->trans("DateCreationShort"); print ''; print dol_print_date($object->date_creation, 'dayhour'); print '
'.$langs->trans("CashDesk").' ID'; - print $object->posnumber; + print '
'.$langs->trans("InitialBankBalance").''; + print price($object->opening, 0, $langs, 1, -1, -1, $conf->currency); + print "
'.$langs->trans("Cash").''; + print price($object->cash, 0, $langs, 1, -1, -1, $conf->currency); print "
'.$langs->trans("Cheque").''; + print price($object->cheque, 0, $langs, 1, -1, -1, $conf->currency); + print "
'.$langs->trans("Card").''; + print price($object->card, 0, $langs, 1, -1, -1, $conf->currency); + print "
\n"; print ''; diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index fc83239ea70..0acb9c0dd82 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -32,7 +32,7 @@ class CashControl extends CommonObject /** * @var string ID to identify managed object */ - public $element = 'CashControl'; + public $element = 'cashcontrol'; /** * @var string Name of table without prefix where object is stored @@ -55,29 +55,29 @@ class CashControl extends CommonObject public $picto = 'bank'; public $fields=array( - 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>10), - 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>15), - 'ref' =>array('type'=>'varchar(64)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>18), - 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>19), - 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>20), - 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>24), - 'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25), - 'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30), - 'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>33), - 'card' =>array('type'=>'double(24,8)', 'label'=>'CreditCard', 'enabled'=>1, 'visible'=>1, 'position'=>36), - 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>50), - 'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55), - 'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>60), - 'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500), - 'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505), - 'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510), - 'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>1000, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Brouillon', '1'=>'Validated')), + 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>10), + 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>15), + 'ref' =>array('type'=>'varchar(64)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>18), + 'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>19), + 'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>20), + 'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>24), + 'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25), + 'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30), + 'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>33), + 'card' =>array('type'=>'double(24,8)', 'label'=>'CreditCard', 'enabled'=>1, 'visible'=>1, 'position'=>36), + 'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>50), + 'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55), + 'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>60), + 'date_valid' =>array('type'=>'datetime', 'label'=>'DateValid', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>490), + 'date_creation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500), + 'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505), + 'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510), + 'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>1000, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Brouillon', '1'=>'Validated')), ); public $id; public $opening; public $status; - public $date_creation; public $year_close; public $month_close; public $day_close; @@ -86,6 +86,9 @@ class CashControl extends CommonObject public $cash; public $cheque; public $card; + public $date_valid; + public $date_creation; + public $date_modification; const STATUS_DRAFT = 0; const STATUS_VALIDATED = 1; @@ -125,7 +128,7 @@ class CashControl extends CommonObject $sql .= "entity"; //$sql .= ", ref"; $sql .= ", opening"; - $sql .= ", status"; + $sql .= ", status"; $sql .= ", date_creation"; $sql .= ", posmodule"; $sql .= ", posnumber"; @@ -139,7 +142,7 @@ class CashControl extends CommonObject //$sql .= "'(PROV)', "; $sql .= $conf->entity; $sql .= ", ".($this->opening > 0 ? $this->opening : 0); - $sql .= ", 0"; // Draft by default + $sql .= ", 0"; // Draft by default $sql .= ", '".$this->db->idate(dol_now())."'"; $sql .= ", '".$this->db->escape($this->posmodule)."'"; $sql .= ", '".$this->db->escape($this->posnumber)."'"; @@ -203,14 +206,14 @@ class CashControl extends CommonObject } /* - $posmodule = $this->posmodule; - if (! empty($user->rights->$posmodule->use)) - { - $this->error='NotEnoughPermissions'; - dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR); - return -1; - } - */ + $posmodule = $this->posmodule; + if (! empty($user->rights->$posmodule->use)) + { + $this->error='NotEnoughPermissions'; + dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR); + return -1; + } + */ $now=dol_now(); @@ -231,13 +234,13 @@ class CashControl extends CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."pos_cash_fence"); + $this->status = self::STATUS_VALIDATED; + $this->date_valid = $now; + $this->fk_user_valid = $user->id; } if (! $error && ! $notrigger) { - $this->context=array('date_valid'=>$now); - // Call trigger $result=$this->call_trigger('CASHCONTROL_VALIDATE', $user); if ($result < 0) $error++; @@ -260,48 +263,20 @@ class CashControl extends CommonObject /** - * Load object in memory from database + * Load object in memory from the database * - * @param int $id Id object - * @return int <0 if KO, >0 if OK + * @param int $id Id object + * @param string $ref Ref + * @return int <0 if KO, 0 if not found, >0 if OK */ - public function fetch($id) + public function fetch($id, $ref = null) { - global $conf; - - $sql = "SELECT"; - $sql .= " *"; - $sql .= " FROM ".MAIN_DB_PREFIX."pos_cash_fence"; - $sql .= " WHERE rowid = ".$id; - $sql .= " AND entity = ".$conf->entity; - - 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->ref = $obj->id; - $this->label = $obj->label; - $this->opening = $obj->opening; - $this->status = $obj->status; - $this->year_close = $obj->year_close; - $this->month_close = $obj->month_close; - $this->day_close = $obj->day_close; - $this->posmodule = $obj->posmodule; - $this->posnumber = $obj->posnumber; - $this->date_creation = $obj->date_creation; - $this->tms = $obj->tms; - $this->id=$id; - } - $this->db->free($resql); - - return 1; - } else { - $this->error = "Error ".$this->db->lasterror(); - return -1; - } + $result = $this->fetchCommon($id, $ref); + if ($result > 0 && ! empty($this->table_element_line)) $this->fetchLines(); + return $result; } + /** * Return label of the status * @@ -374,7 +349,7 @@ class CashControl extends CommonObject * @param string $option Where point the link ('stock', 'composition', 'category', 'supplier', '') * @param int $maxlength Maxlength of ref * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking - * @param int $notooltip No tooltip + * @param int $notooltip No tooltip * @return string String with URL */ public function getNomUrl($withpicto=0, $option='', $maxlength=0, $save_lastsearch_value=-1, $notooltip=0) diff --git a/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php b/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php index f2c19394df9..b3eee673198 100644 --- a/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php +++ b/htdocs/core/triggers/interface_50_modBlockedlog_ActionsBlockedLog.class.php @@ -56,10 +56,10 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers */ public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) { - if (empty($conf->blockedlog->enabled)) return 0; // Module not active, we do nothing + if (empty($conf->blockedlog->enabled)) return 0; // Module not active, we do nothing // Test if event/record is qualified - $listofqualifiedelement = array('facture', 'don', 'payment', 'payment_donation', 'subscription','payment_various'); + $listofqualifiedelement = array('facture', 'don', 'payment', 'payment_donation', 'subscription', 'payment_various', 'cashcontrol'); if (! in_array($object->element, $listofqualifiedelement)) return 1; dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); @@ -80,6 +80,7 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers || $action==='BILL_SUPPLIER_VALIDATE' || $action==='BILL_SUPPLIER_DELETE' || $action === 'BILL_SUPPLIER_SENTBYMAIL' || $action==='MEMBER_SUBSCRIPTION_CREATE' || $action==='MEMBER_SUBSCRIPTION_MODIFY' || $action==='MEMBER_SUBSCRIPTION_DELETE' || $action==='DON_VALIDATE' || $action==='DON_MODIFY' || $action==='DON_DELETE' + || $action==='CASHCONTROL_VALIDATE' || (in_array($object->element, array('facture','suplier_invoice')) && $action === 'DOC_DOWNLOAD') || (in_array($object->element, array('facture','suplier_invoice')) && $action === 'DOC_PREVIEW') ) { @@ -88,6 +89,10 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers if (in_array($action, array( 'MEMBER_SUBSCRIPTION_CREATE','MEMBER_SUBSCRIPTION_MODIFY','MEMBER_SUBSCRIPTION_DELETE', 'DON_VALIDATE','DON_MODIFY','DON_DELETE'))) $amounts = (double) $object->amount; + elseif ($action == 'CASHCONTROL_VALIDATE') + { + $amounts = (double) $object->cash + (double) $object->cheque + (double) $object->card; + } else $amounts = (double) $object->total_ttc; } /*if ($action === 'BILL_PAYED' || $action==='BILL_UNPAYED' @@ -103,7 +108,7 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers $amounts = 0; if(!empty($object->amounts)) { foreach($object->amounts as $amount) { - $amounts+= price2num($amount); + $amounts += price2num($amount); } } } From 17b2fd295f09f240be6ef867c0024397769cde4f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 13:57:30 +0100 Subject: [PATCH 102/307] FIX Css of amount on remain to pay on expense report --- htdocs/core/lib/functions.lib.php | 1 + htdocs/expensereport/card.php | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 39476ee97f3..248ac312240 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1442,6 +1442,7 @@ function dol_banner_tab($object, $paramid, $morehtml='', $shownav=1, $fieldid='r { if (empty($conf->global->MAIN_DISABLE_PDF_THUMBS)) // If you experienc trouble with pdf thumb generation and imagick, you can disable here. { + include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $ret = dol_convert_file($file, 'png', $fileimage); if ($ret < 0) $error++; } diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index b5e8ed8151e..eb71a30e083 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1955,16 +1955,26 @@ else } $totalpaid = price2num($totalpaid); // Round $totalpaid to fix floating problem after addition into loop - if ($object->paid == 0) + $remaintopay = price2num($object->total_ttc - $totalpaid); + $resteapayeraffiche = $remaintopay; + + $cssforamountpaymentcomplete = 'amountpaymentcomplete'; + + if ($object->status == ExpenseReport::STATUS_REFUSED) { - print '
'.$langs->trans("AlreadyPaid").':'.price($totalpaid).'
'.$langs->trans("AmountExpected").':'.price($object->total_ttc).'
'.$langs->trans("RemainderToPay").':'.price($remaintopay).'
'.$langs->trans("AlreadyPaid").':'.price($totalpaid).'
'.$langs->trans("AmountExpected").':'.price($object->total_ttc).'
'.$langs->trans("RemainderToPay").':'.price($resteapayeraffiche).'
K0=b@?LT=s0`)+3|SCCkMfPmE`;E0ltJC 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
  • 5J-Ue?=Hsn6?QQOfO4_ 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 Mf}|XUpWcxF0UC=;!Ttrans("NoPageYet"), null, 'warnings'); - setEventMessages($langs->trans("YouCanCreatePageOrImportTemplate"), null, 'warnings'); + if (empty($websitekey) || $websitekey == '-1') + { + setEventMessages($langs->trans("NoWebSiteCreateOneFirst"), null, 'warnings'); + } + else + { + setEventMessages($langs->trans("NoPageYet"), null, 'warnings'); + setEventMessages($langs->trans("YouCanCreatePageOrImportTemplate"), null, 'warnings'); + } } } } @@ -1666,11 +1673,10 @@ if ($action != 'preview' && $action != 'editcontent' && $action != 'editsource') if (! GETPOST('hide_websitemenu')) { -//var_dump($objectpage);exit; -print '
    '; + //var_dump($objectpage);exit; + print '
    '; + -if (count($object->records) > 0) // There is at least one web site -{ // ***** Part for web sites print ''; print '
    '; @@ -1713,12 +1719,15 @@ if (count($object->records) > 0) // There is at least one web site if (! empty($object->virtualhost)) $virtualurl=$object->virtualhost; } - - $array=$objectpage->fetchAll($object->id, 'ASC,ASC', 'type_container,pageurl'); + $array=array(); + if ($object->id > 0) + { + $array=$objectpage->fetchAll($object->id, 'ASC,ASC', 'type_container,pageurl'); + } if (! is_array($array) && $array < 0) dol_print_error('', $objectpage->error, $objectpage->errors); $atleastonepage=(is_array($array) && count($array) > 0); - if ($websitekey && ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')) + if ($websitekey && $websitekey != '-1' && ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')) { $disabled=''; if (empty($user->rights->website->write)) $disabled=' disabled="disabled"'; @@ -1828,7 +1837,7 @@ if (count($object->records) > 0) // There is at least one web site // Toolbar for pages - if ($websitekey && ! in_array($action, array('editcss','editmenu','importsite'))) + if ($websitekey && $websitekey != '-1' && ! in_array($action, array('editcss','editmenu','importsite'))) { print '
    '; // Close current websitebar to open a new one @@ -2125,17 +2134,8 @@ if (count($object->records) > 0) // There is at least one web site } } } -} -else -{ - print '
    '; - $langs->load("errors"); - print $langs->trans("ErrorModuleSetupNotComplete"); - print '
    '; - $action=''; -} -print '
    '; // end current websitebar + print '
    '; // end current websitebar } @@ -2743,7 +2743,8 @@ if ($action == 'editsource') $doleditor->Create(0, '', false); }*/ -print "
    \n\n"; +print "
    \n"; +print "\n"; if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone') @@ -2874,8 +2875,16 @@ if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpa } else { - print '

    '.$langs->trans("PreviewOfSiteNotYetAvailable", $object->ref).'


    '; - print '
    '; + if (empty($websitekey) || $websitekey == '-1') + { + print '

    '.$langs->trans("NoWebSiteCreateOneFirst").'


    '; + print '
    '; + } + else + { + print '

    '.$langs->trans("PreviewOfSiteNotYetAvailable", $object->ref).'


    '; + print '
    '; + } } } From 1faaed504a1fc5cd26e15c6775819f29b53b3b08 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 18:48:41 +0100 Subject: [PATCH 106/307] Fix param attachment --- htdocs/document.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/document.php b/htdocs/document.php index dd7ca2cb79c..ff6c6f6e635 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -107,12 +107,6 @@ if (in_array($modulepart, array('facture_paiement','unpaid'))) * View */ -// Define attachment (attachment=true to force choice popup 'open'/'save as') -$attachment = true; -if (preg_match('/\.(html|htm)$/i',$original_file)) $attachment = false; -if (isset($_GET["attachment"])) $attachment = GETPOST("attachment",'alpha')?true:false; -if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false; - // If we have a hash public (hashp), we guess the original_file. if (! empty($hashp)) { @@ -155,6 +149,12 @@ if (! empty($hashp)) } } +// Define attachment (attachment=true to force choice popup 'open'/'save as') +$attachment = true; +if (preg_match('/\.(html|htm)$/i',$original_file)) $attachment = false; +if (isset($_GET["attachment"])) $attachment = GETPOST("attachment",'alpha')?true:false; +if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false; + // Define mime type $type = 'application/octet-stream'; if (GETPOST('type','alpha')) $type=GETPOST('type','alpha'); From c444ef3b4d1d165aca241aedf0968568f2a77826 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 19:37:17 +0100 Subject: [PATCH 107/307] FIX wrapper could not download shared files --- htdocs/core/lib/website.lib.php | 12 +- htdocs/website/index.php | 8 +- .../page-sample-corporatehome.html | 0 .../{ => samples}/page-sample-empty.html | 0 htdocs/website/samples/wrapper.html | 126 ++++++++++++++++++ 5 files changed, 133 insertions(+), 13 deletions(-) rename htdocs/website/{ => samples}/page-sample-corporatehome.html (100%) rename htdocs/website/{ => samples}/page-sample-empty.html (100%) create mode 100644 htdocs/website/samples/wrapper.html diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 49486870a13..da16b0846c5 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -741,15 +741,9 @@ function dolSaveIndexPage($pathofwebsite, $fileindex, $filetpl, $filewrapper) @chmod($fileindex, octdec($conf->global->MAIN_UMASK)); dol_delete_file($filewrapper); - $wrappercontent = 'mycompany->dir_output."/".$original_file));'."\n"; - $wrappercontent.= "else print 'Bad value for modulepart or file';\n"; - $wrappercontent.= 'if (is_object($db)) $db->close();'."\n"; - $wrappercontent.= '// END PHP ?>'."\n"; + + $wrappercontent=file_get_contents(DOL_DOCUMENT_ROOT.'/website/samples/wrapper.html'); + $result2 = file_put_contents($filewrapper, $wrappercontent); if (! empty($conf->global->MAIN_UMASK)) @chmod($filewrapper, octdec($conf->global->MAIN_UMASK)); diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 5913c32c71a..3606675a1c1 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -653,7 +653,7 @@ if ($action == 'addcontainer') $sample = GETPOST('sample','alpha'); if (empty($sample)) $sample='empty'; - $pathtosample = DOL_DOCUMENT_ROOT.'/website/page-sample-'.$sample.'.html'; + $pathtosample = DOL_DOCUMENT_ROOT.'/website/samples/page-sample-'.$sample.'.html'; // Init content with content into pagetemplate.html, blogposttempltate.html, ... $objectpage->content = make_substitutions(@file_get_contents($pathtosample), $substitutionarray); @@ -1956,7 +1956,7 @@ if (! GETPOST('hide_websitemenu')) print $formconfirm; } - if ($pageid > 0) + if ($pageid > 0 && $atleastonepage) // pageid can be set without pages, if homepage of site is set and all page were removed { // Confirmation to clone if ($action == 'createpagefromclone') { @@ -2034,7 +2034,7 @@ if (! GETPOST('hide_websitemenu')) print '
    '; - if ($pageid > 0 && ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')) + if (($pageid > 0 && $atleastonepage) && ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone')) { $realpage=$urlwithroot.'/public/website/index.php?website='.$websitekey.'&pageref='.$websitepage->pageurl; $pagealias = $websitepage->pageurl; @@ -2749,7 +2749,7 @@ print "\n"; if ($action == 'preview' || $action == 'createfromclone' || $action == 'createpagefromclone') { - if ($pageid > 0) + if ($pageid > 0 && $atleastonepage) { // $filejs // $filecss diff --git a/htdocs/website/page-sample-corporatehome.html b/htdocs/website/samples/page-sample-corporatehome.html similarity index 100% rename from htdocs/website/page-sample-corporatehome.html rename to htdocs/website/samples/page-sample-corporatehome.html diff --git a/htdocs/website/page-sample-empty.html b/htdocs/website/samples/page-sample-empty.html similarity index 100% rename from htdocs/website/page-sample-empty.html rename to htdocs/website/samples/page-sample-empty.html diff --git a/htdocs/website/samples/wrapper.html b/htdocs/website/samples/wrapper.html new file mode 100644 index 00000000000..fb6a10b1264 --- /dev/null +++ b/htdocs/website/samples/wrapper.html @@ -0,0 +1,126 @@ +entity; +$original_file=GETPOST("file","alpha"); + +// If we have a hash public (hashp), we guess the original_file. +if (! empty($hashp)) +{ + include_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmfiles.class.php'; + $ecmfile=new EcmFiles($db); + $result = $ecmfile->fetch(0, '', '', '', $hashp); + if ($result > 0) + { + $tmp = explode('/', $ecmfile->filepath, 2); // $ecmfile->filepath is relative to document directory + // filepath can be 'users/X' or 'X/propale/PR11111' + if (is_numeric($tmp[0])) // If first tmp is numeric, it is subdir of company for multicompany, we take next part. + { + $tmp = explode('/', $tmp[1], 2); + } + $moduleparttocheck = $tmp[0]; // moduleparttocheck is first part of path + + if ($modulepart) // Not required, so often not defined, for link using public hashp parameter. + { + if ($moduleparttocheck == $modulepart) + { + // We remove first level of directory + $original_file = (($tmp[1]?$tmp[1].'/':'').$ecmfile->filename); // this is relative to module dir + //var_dump($original_file); exit; + } + else + { + print 'Bad link. File is from another module part.'; + } + } + else + { + $modulepart = $moduleparttocheck; + $original_file = (($tmp[1]?$tmp[1].'/':'').$ecmfile->filename); // this is relative to module dir + } + } + else + { + print "ErrorFileNotFoundWithSharedLink"; + exit; + } +} + +// Define attachment (attachment=true to force choice popup 'open'/'save as') +$attachment = true; +if (preg_match('/\.(html|htm)$/i',$original_file)) $attachment = false; +if (isset($_GET["attachment"])) $attachment = GETPOST("attachment",'alpha')?true:false; +if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false; + +// Define mime type +$type = 'application/octet-stream'; +if (GETPOST('type','alpha')) $type=GETPOST('type','alpha'); +else $type=dol_mimetype($original_file); + +// Security: Delete string ../ into $original_file +$original_file=str_replace("../","/", $original_file); + +// Find the subdirectory name as the reference +$refname=basename(dirname($original_file)."/"); + +if ($_GET["modulepart"] == "mycompany" && preg_match('/^\/?logos\//', $original_file)) +{ + readfile(dol_osencode($conf->mycompany->dir_output."/".$original_file)); +} +else +{ + include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $check_access = dol_check_secure_access_document($modulepart, $original_file, $entity, $refname); + $accessallowed = $check_access['accessallowed']; + $sqlprotectagainstexternals = $check_access['sqlprotectagainstexternals']; + $fullpath_original_file = $check_access['original_file']; // $fullpath_original_file is now a full path name + if (! empty($_GET["hashp"])) + { + $accessallowed = 1; // When using hashp, link is public so we force $accessallowed + $sqlprotectagainstexternals = ''; + } + + // Security: + // Limit access if permissions are wrong + if (! $accessallowed) + { + print 'Access forbidden'; + exit; + } + + clearstatcache(); + + $filename = basename($fullpath_original_file); + + // Output file on browser + dol_syslog("wrapper.php download $fullpath_original_file filename=$filename content-type=$type"); + $fullpath_original_file_osencoded=dol_osencode($fullpath_original_file); // New file name encoded in OS encoding charset + + // This test if file exists should be useless. We keep it to find bug more easily + if (! file_exists($fullpath_original_file_osencoded)) + { + print "ErrorFileDoesNotExists: ".$original_file; + exit; + } + + // Permissions are ok and file found, so we return it + //top_httphead($type); + header('Content-Description: File Transfer'); + if ($encoding) header('Content-Encoding: '.$encoding); + // Add MIME Content-Disposition from RFC 2183 (inline=automatically displayed, attachment=need user action to open) + if ($attachment) header('Content-Disposition: attachment; filename="'.$filename.'"'); + else header('Content-Disposition: inline; filename="'.$filename.'"'); + header('Content-Length: ' . dol_filesize($fullpath_original_file)); + // Ajout directives pour resoudre bug IE + header('Cache-Control: Public, must-revalidate'); + header('Pragma: public'); + + readfile($fullpath_original_file_osencoded); +} +if (is_object($db)) $db->close(); +// END PHP ?> From 48162db33d90d31c080e26c7bdfa9412f43c8376 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Dec 2018 20:19:11 +0100 Subject: [PATCH 108/307] FIX Rename of image file lose the thumbs --- htdocs/core/actions_linkedfiles.inc.php | 7 +++++-- htdocs/langs/en_US/admin.lang | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/core/actions_linkedfiles.inc.php b/htdocs/core/actions_linkedfiles.inc.php index 58f96b7faf1..f23844e5d3d 100644 --- a/htdocs/core/actions_linkedfiles.inc.php +++ b/htdocs/core/actions_linkedfiles.inc.php @@ -217,11 +217,14 @@ elseif ($action == 'renamefile' && GETPOST('renamefilesave','alpha')) { // Define if we have to generate thumbs or not $generatethumbs = 1; - if (GETPOST('section_dir')) $generatethumbs=0; + // When we rename a file from the file manager in ecm, we must not regenerate thumbs (not a problem, we do pass here) + // When we rename a file from the website module, we must not regenerate thumbs (module = medias in such a case) + // but when we rename from a tab "Documents", we must regenerate thumbs + if (GETPOST('modulepart') == 'medias') $generatethumbs=0; if ($generatethumbs) { - if ($object->id) + if ($object->id) { $object->addThumbs($destpath); } diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 8c62a74024c..1606cc3a7c0 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1845,6 +1845,7 @@ WithDolTrackingID=Dolibarr Tracking ID found WithoutDolTrackingID=Dolibarr Tracking ID not found FormatZip=Zip MainMenuCode=Menu entry code (mainmenu) +ECMAutoTree=Show automatic ECM tree ##### Resource #### ResourceSetup=Configuration du module Resource UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). From 7e2eca661bd289ff76138c2fa6ed081b9133197f Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio Date: Tue, 18 Dec 2018 09:40:58 +0100 Subject: [PATCH 109/307] FIX: contact/adress tab: when changing company ajax combo, the first contact change is not taken into account --- htdocs/core/class/html.form.class.php | 4 ++-- htdocs/core/class/html.formcompany.class.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index bc9aa55f6f6..1dc334560ec 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1355,7 +1355,7 @@ class Form $out .= ajax_combobox($htmlid, $events, $conf->global->CONTACT_USE_SEARCH_TO_SELECT); } - if ($htmlname != 'none' || $options_only) $out.= ''; if ($showempty == 1) $out.= ''; if ($showempty == 2) $out.= ''; $num = $this->db->num_rows($resql); @@ -1417,7 +1417,7 @@ class Form { $out.= ''; } - if ($htmlname != 'none' || $options_only) + if ($htmlname != 'none' && ! $options_only) { $out.= ''; } diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index 63babef655e..317f5fe1af6 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -589,8 +589,8 @@ class FormCompany runJsCodeForEvent'.$htmlname.'(values); } }); - /* Clean contact */ - $("div#s2id_contactid>a>span").html(\'\'); + + $(this).trigger("blur"); }); // Function used to execute events when search_htmlname change From 3ae03d619d16632a5d76d712b80f9c9c2cdb4759 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 11:03:23 +0100 Subject: [PATCH 110/307] Fix tooltip --- htdocs/website/index.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 3606675a1c1..bb9d6ae43e0 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -2540,7 +2540,7 @@ if ($action == 'editmeta' || $action == 'createcontainer') print '
  • '; $htmlhelp=$langs->trans("WEBSITE_IMAGEDesc"); - print $form->textwithpicto($langs->trans('WEBSITE_IMAGE'), $htmlhelp, 1, 'help', '', 0, 2, 'htmlheadertooltip'); + print $form->textwithpicto($langs->trans('WEBSITE_IMAGE'), $htmlhelp, 1, 'help', '', 0, 2, 'imagetooltip'); print ''; print ''; print '
    '; $htmlhelp=$langs->trans("WEBSITE_ALIASALTDesc"); - print $form->textwithpicto($langs->trans('WEBSITE_ALIASALT'), $htmlhelp, 1, 'help', '', 0, 2, 'htmlheadertooltip'); + print $form->textwithpicto($langs->trans('WEBSITE_ALIASALT'), $htmlhelp, 1, 'help', '', 0, 2, 'aliastooltip'); print ''; print ''; print '
    '; - $htmlhelp=$langs->trans("EditTheWebSiteForACommonHeader").'

    '; - $htmlhelp=$langs->trans("Example").' :
    '; + $htmlhelp =$langs->trans("EditTheWebSiteForACommonHeader").'

    '; + $htmlhelp.=$langs->trans("Example").' :
    '; $htmlhelp.=dol_htmlentitiesbr($htmlheadercontentdefault); print $form->textwithpicto($langs->trans('HtmlHeaderPage'), $htmlhelp, 1, 'help', '', 0, 2, 'htmlheadertooltip'); print '
    '; From 16496218d39e762981ac97030d81fed18d601a90 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 13:21:00 +0100 Subject: [PATCH 111/307] css --- htdocs/core/boxes/box_produits.php | 6 +++--- htdocs/core/boxes/box_services_contracts.php | 4 ++-- htdocs/theme/eldy/style.css.php | 7 +++++-- htdocs/theme/md/img/menus/ticket.png | Bin 916 -> 209 bytes htdocs/theme/md/img/object_ticket.png | Bin 520 -> 344 bytes htdocs/theme/md/style.css.php | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/htdocs/core/boxes/box_produits.php b/htdocs/core/boxes/box_produits.php index 24699f0e9f6..3dd66eb1da2 100644 --- a/htdocs/core/boxes/box_produits.php +++ b/htdocs/core/boxes/box_produits.php @@ -42,7 +42,7 @@ class box_produits extends ModeleBoxes * @var DoliDB Database handler. */ public $db; - + var $param; var $info_box_head = array(); @@ -135,13 +135,13 @@ class box_produits extends ModeleBoxes $productstatic->entity = $objp->entity; $this->info_box_contents[$line][] = array( - 'td' => 'class="tdoverflowmax150 maxwidth150onsmartphone"', + 'td' => 'class="tdoverflowmax100 maxwidth100onsmartphone"', 'text' => $productstatic->getNomUrl(1), 'asis' => 1, ); $this->info_box_contents[$line][] = array( - 'td' => 'class="tdoverflowmax150 maxwidth150onsmartphone"', + 'td' => 'class="tdoverflowmax100 maxwidth100onsmartphone"', 'text' => $objp->label, ); diff --git a/htdocs/core/boxes/box_services_contracts.php b/htdocs/core/boxes/box_services_contracts.php index 6a74cd005ab..708b781f092 100644 --- a/htdocs/core/boxes/box_services_contracts.php +++ b/htdocs/core/boxes/box_services_contracts.php @@ -190,7 +190,7 @@ class box_services_contracts extends ModeleBoxes } - $this->info_box_contents[$i][] = array('td' => 'class="tdoverflowmax150 maxwidth150onsmartphone"', + $this->info_box_contents[$i][] = array('td' => 'class="tdoverflowmax100 maxwidth100onsmartphone"', 'text' => $s, 'asis' => 1 ); @@ -200,7 +200,7 @@ class box_services_contracts extends ModeleBoxes 'asis' => 1 ); - $this->info_box_contents[$i][] = array('td' => 'class="tdoverflowmax150 maxwidth150onsmartphone"', + $this->info_box_contents[$i][] = array('td' => 'class="tdoverflowmax100 maxwidth100onsmartphone"', 'text' => $thirdpartytmp->getNomUrl(1), 'asis' => 1 ); diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 84d065280cb..3eb3163ae5d 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1074,10 +1074,13 @@ select.selectarrowonleft option { /* padding: .4em .1em; */ /* border-bottom: 1px solid #BBB; */ /* max-width: inherit; why this ? */ - } - input[type=text], input[type=password] { + } + input[type=text], input[type=password] { max-width: 180px; } + .vmenu .searchform input { + max-width: 138px; /* length of input text in the quick search box when using a smartphone and without dolidroid */ + } .hideonsmartphone { display: none; } .hideonsmartphoneimp { display: none !important; } diff --git a/htdocs/theme/md/img/menus/ticket.png b/htdocs/theme/md/img/menus/ticket.png index 98beeaf593ac4baf79eb72d410a706d124a1ed7c..98a482c47011e3a76ddd3a985879869a241c23e3 100644 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&Vd9T(EcfWS|IVfk$L9 z0|Q?v2s7?X4m1J^vX^-Jy0SlF;pbv94PM!L0w@&c>Eak-aXL9cBItpAt*_=;Cec;d9;E&I!tPuXH#PL0w3 vzi``hX?J0>cLsm{|NmbvbT&gGs?~(ytE{h`R;nVkdg00002VoOIv0063u zBQgL0010qNS#tmY4c7nw4c7reD4Tcy000McNliru;sXv72QWw9ricIl10_jBK~zY` z&6Q0|lvfmnpAU3|aZqCs44nY#v{Xbb5-?PvCPqz&37d*d+J#%%CT>^|ckPO#ach$X zcWf$YH%(z@+DIx%Z7HUrf(dA({DhJygz`7@bTJTSo&wJhr|8)eG z5#w=?eEm{$d55{c93s5S0)xTQYZOPQB#+-%3IN&uo;26g_MiuZo4;bJ< zu$V#Lpq^2l1k39fjeE&M0Pggf13q=!IaTKz_o)M3b0>g@yky)+cn9mYRm9s&P)G}n z6o!j~KxH_drkgLBWH@A>(r_-FPyp>}&nIo4!wNt!!zd72mDei4VRi%K;Vi`xQLd)dA1rc}C`+V5 zbR5{t;cS8kIV4$YYJr4D0X#|~TuDcgBsoN~35Iw@F01OB;w})S27nr(z+G1LUqmji z7|JGi$ShEneySivA06zX8h~nc(LrC3Nb=qQwKmD{oD-3 z!pvgIfq4eA2!drMfpeV9ob(0vDK&1KQtq?Xej4qzo8u#YirZNDFc zfwX1WU_)r4SYoRqYOl3hIYNsQ>Vh5Cn4g8@d%~~$OP#P~YqO4d-RG)4@l(%w#B$3$ z;#oiOv8vC#ZtR~OztLV7O~;IPyyHwbTeR24fAeV+d&8H`I`6Wo%g#INOK(`b$=9|8 qNeQ*oaDr-}pI`ZfpMyX6U&h~dzpw7?&g63d0000bfY3D}R8H&jKqXB1fZl6|kfc zltaOocL!*i=0-$L0Gl=hzCs93s%nd%nH^_vm<61>`#Yd>PyouZe26iMyH5w=s#>&d zt94!9E+(q#y_sFi5(nTirSvik!}DUIyT6**=j@IKe2d7Nh{Q#(@B8h(NlvSVY1RL{ qqpdN!`)>5coE>(WQu;aIlk*GW5>UQdU?z?L0000T)As^H^U+sInh$rLZ%GCccLZLz8{*XDOaC}+Bk{ z_2n(fErVrSD}V2Fc8zHqj|&AY%oosMa_~92^Igv8=tH;3!58Srdu1x~Aw^G%_IC8+ zQjY#S*YqMqkIH;xrb`LyLP1J_6)dAS$1+x=6uHcG)1`DGbxn$WwS~J)yJI=OS22I@ zt1aA-Vh?N3)-)&W;Gq;xjlBG9=H?PUH96C|d#|qGkxoeWv2*fsno)gyR*DB05%EUj z_;rqx-dg}Y^wbI??I@}ohGiLhRb>OBc4g=gXtST{crpN`00p5s)=B200000 LNkvXXu0mjfGT7ki diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 7e4d8ec11d2..f4eb9da3759 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -1990,7 +1990,7 @@ div.login_block { vertical-align: middle; background: rgb(); width: 228px; - height: 43px; + height: 45px; display: none; From c3eb13105409ac05b7e19684dac26e5b736781b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 13:30:22 +0100 Subject: [PATCH 112/307] Debug ticket module --- htdocs/langs/en_US/agenda.lang | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index cd39a43abe8..95fadf00b68 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -92,6 +92,9 @@ EXPENSE_REPORT_REFUSEDInDolibarr=Expense report %s refused PROJECT_CREATEInDolibarr=Project %s created PROJECT_MODIFYInDolibarr=Project %s modified PROJECT_DELETEInDolibarr=Project %s deleted +TICKET_CREATEInDolibarr=Ticket %s created +TICKET_MODIFYInDolibarr=Ticket %s modified +TICKET_DELETEInDolibarr=Ticket %s deleted ##### End agenda events ##### AgendaModelModule=Document templates for event DateActionStart=Start date From 57c41bac5660a613d72b430d82be25b120bbd3cd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 15:06:00 +0100 Subject: [PATCH 113/307] Fix parameter session_cache_limiter --- htdocs/core/js/lib_foot.js.php | 4 +-- htdocs/core/js/lib_gravatar.js.php | 4 +-- htdocs/core/js/lib_head.js.php | 4 +-- htdocs/core/js/lib_notification.js.php | 2 +- htdocs/core/js/timepicker.js.php | 4 +-- .../template/css/mymodule.css.php | 6 ++-- htdocs/public/ticket/index.php | 2 +- htdocs/theme/eldy/style.css.php | 4 +-- htdocs/theme/md/style.css.php | 4 +-- htdocs/ticket/css/styles.css.php | 28 +++++++------------ 10 files changed, 28 insertions(+), 34 deletions(-) diff --git a/htdocs/core/js/lib_foot.js.php b/htdocs/core/js/lib_foot.js.php index cc08af7431f..cfa05289f4b 100644 --- a/htdocs/core/js/lib_foot.js.php +++ b/htdocs/core/js/lib_foot.js.php @@ -29,14 +29,14 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(false); +session_cache_limiter('public'); require_once '../../main.inc.php'; // Define javascript type top_httphead('text/javascript; charset=UTF-8'); // Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); //var_dump($conf); diff --git a/htdocs/core/js/lib_gravatar.js.php b/htdocs/core/js/lib_gravatar.js.php index 485a57ede88..dad6482460a 100644 --- a/htdocs/core/js/lib_gravatar.js.php +++ b/htdocs/core/js/lib_gravatar.js.php @@ -33,14 +33,14 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(false); +session_cache_limiter('public'); require_once '../../main.inc.php'; // Define javascript type top_httphead('text/javascript; charset=UTF-8'); // Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); ?> diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index f2aa6fc521f..5b909c6e148 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -32,14 +32,14 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(false); +session_cache_limiter('public'); require_once '../../main.inc.php'; // Define javascript type top_httphead('text/javascript; charset=UTF-8'); // Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 6900e9b03e7..fa7095c65ac 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -40,7 +40,7 @@ if (! ($_SERVER['HTTP_REFERER'] === $dolibarr_main_url_root . '/' || $_SERVER['H // TODO Try to make a solution with only a javascript timer that is easier. Difficulty is to avoid notification twice when. /* session already started into main - session_cache_limiter(false); + session_cache_limiter('public'); header('Cache-Control: no-cache'); session_set_cookie_params(0, '/', null, false, true); // Add tag httponly on session cookie session_start();*/ diff --git a/htdocs/core/js/timepicker.js.php b/htdocs/core/js/timepicker.js.php index 8e67f517b44..38c450b8e23 100644 --- a/htdocs/core/js/timepicker.js.php +++ b/htdocs/core/js/timepicker.js.php @@ -29,14 +29,14 @@ if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); -session_cache_limiter(false); +session_cache_limiter('public'); require_once '../../main.inc.php'; // Define javascript type top_httphead('text/javascript; charset=UTF-8'); // Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); ?> diff --git a/htdocs/modulebuilder/template/css/mymodule.css.php b/htdocs/modulebuilder/template/css/mymodule.css.php index 486d860e7f5..9f3860f1484 100644 --- a/htdocs/modulebuilder/template/css/mymodule.css.php +++ b/htdocs/modulebuilder/template/css/mymodule.css.php @@ -48,7 +48,9 @@ if (! $res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -session_cache_limiter(false); +session_cache_limiter('public'); +// false or '' = keep cache instruction added by server +// 'public' = remove cache instruction added by server and if no cache-control added later, a default cache delay (10800) will be added by PHP. // Load user to have $user->conf loaded (not done by default here because of NOLOGIN constant defined) and load permission if we need to use them in CSS /*if (empty($user->id) && ! empty($_SESSION['dol_login'])) @@ -62,7 +64,7 @@ session_cache_limiter(false); header('Content-type: text/css'); // Important: Following code is to cache this file to avoid page request by browser at each Dolibarr page access. // You can use CTRL+F5 to refresh your browser cache. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); ?> diff --git a/htdocs/public/ticket/index.php b/htdocs/public/ticket/index.php index 52b3b843fa1..ca774aa7bb9 100644 --- a/htdocs/public/ticket/index.php +++ b/htdocs/public/ticket/index.php @@ -61,7 +61,7 @@ if (!$conf->global->TICKET_ENABLE_PUBLIC_INTERFACE) { } else { print '
    '; print '

    ' . ($conf->global->TICKET_PUBLIC_TEXT_HOME ? $conf->global->TICKET_PUBLIC_TEXT_HOME : $langs->trans("TicketPublicDesc")) . '

    '; - print '
    '; + print '
    '; print ''; print ''; print ''; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 3eb3163ae5d..5421d713e78 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -59,7 +59,7 @@ $fontsizesmaller='0.75em'; if (defined('THEME_ONLY_CONSTANT')) return; -session_cache_limiter(false); +session_cache_limiter('public'); require_once '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; @@ -71,7 +71,7 @@ if (empty($user->id) && ! empty($_SESSION['dol_login'])) $user->fetch('',$_SESSI // Define css type top_httphead('text/css'); // Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +if (!empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); if (GETPOST('theme','alpha')) $conf->theme=GETPOST('theme','alpha'); // If theme was forced on URL diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index f4eb9da3759..4a81142900b 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -60,7 +60,7 @@ $fontsizesmaller='11'; if (defined('THEME_ONLY_CONSTANT')) return; -session_cache_limiter(false); +session_cache_limiter('public'); require_once '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; @@ -72,7 +72,7 @@ if (empty($user->id) && ! empty($_SESSION['dol_login'])) $user->fetch('',$_SESSI // Define css type top_httphead('text/css'); // Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); if (GETPOST('theme','alpha')) $conf->theme=GETPOST('theme','alpha'); // If theme was forced on URL diff --git a/htdocs/ticket/css/styles.css.php b/htdocs/ticket/css/styles.css.php index f8368f7e5f2..2c699461fb5 100644 --- a/htdocs/ticket/css/styles.css.php +++ b/htdocs/ticket/css/styles.css.php @@ -56,14 +56,8 @@ if (! empty($conf->global->TICKET_SHOW_MODULE_LOGO)) { ?> } -body { - font-size: 0.88em; - background: none; - min-height: 600px; - /*padding-bottom:150px;*/ -} -div.corps { +div.ticketform { font-family: arial; position: static; padding: 2em 1em; @@ -78,13 +72,13 @@ div.corps { } -.index_create, .index_display { +div.ticketform .index_create, .index_display { float: left; width: 33%; text-align: center; } -.orange { +div.ticketform .orange { color: #fef4e9; border: solid 1px #da7c0c; background: #f78d1d; @@ -92,22 +86,21 @@ div.corps { background: -moz-linear-gradient(top, #faa51a, #f47a20); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20'); } -.orange:active { +div.ticketform .orange:active { color: #fcd3a5; background: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a)); background: -moz-linear-gradient(top, #f47a20, #faa51a); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f47a20', endColorstr='#faa51a'); } -.orange:hover { +div.ticketform .orange:hover { background: #f47c20; background: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015)); background: -moz-linear-gradient(top, #f88e11, #f06015); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f88e11', endColorstr='#f06015'); } - -.blue { +div.ticketform .blue { color: #d9eef7; border: solid 1px #0076a3; background: #0095cd; @@ -115,22 +108,21 @@ div.corps { background: -moz-linear-gradient(top, #00adee, #0078a5); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5'); } -.blue:active { +div.ticketform .blue:active { color: #80bed6; background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee)); background: -moz-linear-gradient(top, #0078a5, #00adee); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0078a5', endColorstr='#00adee'); } -.blue:hover { +div.ticketform .blue:hover { background: #007ead; background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e)); background: -moz-linear-gradient(top, #0095cc, #00678e); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e'); } -#form_create_ticket, -#form_view_ticket { - +#form_create_ticket, #form_view_ticket +{ margin-left: 10px; margin-right: 10px; padding-left:1em; From 90e87fc4d9bcf56b8bf4c931e2ecb1da9a1de4cc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 15:15:33 +0100 Subject: [PATCH 114/307] Fix cache --- htdocs/theme/eldy/style.css.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 5421d713e78..746ea68969d 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -71,7 +71,7 @@ if (empty($user->id) && ! empty($_SESSION['dol_login'])) $user->fetch('',$_SESSI // Define css type top_httphead('text/css'); // Important: Following code is to avoid page request by browser and PHP CPU at each Dolibarr page access. -if (!empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); +if (empty($dolibarr_nocache)) header('Cache-Control: max-age=10800, public, must-revalidate'); else header('Cache-Control: no-cache'); if (GETPOST('theme','alpha')) $conf->theme=GETPOST('theme','alpha'); // If theme was forced on URL From 96144e18f11db066333bec03cb2df4dd0576e0ac Mon Sep 17 00:00:00 2001 From: ATM-Nicolas Date: Tue, 18 Dec 2018 15:27:32 +0100 Subject: [PATCH 115/307] FIX : Function updatePrice with wrong parameters --- htdocs/product/price.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/price.php b/htdocs/product/price.php index 259f7d24c0a..a56ae34fc84 100644 --- a/htdocs/product/price.php +++ b/htdocs/product/price.php @@ -1440,7 +1440,7 @@ if ((empty($conf->global->PRODUIT_CUSTOMER_PRICES) || $action=='showlog_default_ // Il doit au moins y avoir la ligne de prix initial. // On l'ajoute donc pour remettre a niveau (pb vieilles versions) - $object->updatePrice($object->price, $object->price_base_type, $user, $newprice_min); + $object->updatePrice($object->price, $object->price_base_type, $user, $object->tva_tx, $object->price_min); $result = $db->query($sql); $num = $db->num_rows($result); From 2d2b95a0829ad4ab765d775eb4a6c1df9983fca9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 17:01:57 +0100 Subject: [PATCH 116/307] Fix calculation of top menu entry of user --- htdocs/theme/eldy/style.css.php | 7 ++++++- htdocs/theme/md/style.css.php | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 746ea68969d..ea24aaf20b0 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -65,7 +65,12 @@ require_once '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // Load user to have $user->conf loaded (not done into main because of NOLOGIN constant defined) -if (empty($user->id) && ! empty($_SESSION['dol_login'])) $user->fetch('',$_SESSION['dol_login'],'',1); +// and permission, so we can later calculate number of top menu ($nbtopmenuentries) according to user profile. +if (empty($user->id) && ! empty($_SESSION['dol_login'])) +{ + $user->fetch('',$_SESSION['dol_login'],'',1); + $user->getrights(); +} // Define css type diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 4a81142900b..30c781c2bfe 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -66,7 +66,12 @@ require_once '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // Load user to have $user->conf loaded (not done into main because of NOLOGIN constant defined) -if (empty($user->id) && ! empty($_SESSION['dol_login'])) $user->fetch('',$_SESSION['dol_login'],'',1); +// and permission, so we can later calculate number of top menu ($nbtopmenuentries) according to user profile. +if (empty($user->id) && ! empty($_SESSION['dol_login'])) +{ + $user->fetch('',$_SESSION['dol_login'],'',1); + $user->getrights(); +} // Define css type From 2e6a41228f799a61d6a0fb1f0e4db37e71b88b65 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 20:49:48 +0100 Subject: [PATCH 117/307] Fix removing constant no more required --- htdocs/core/modules/modAccounting.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index 42cd67b9dab..ef152521969 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -80,7 +80,7 @@ class modAccounting extends DolibarrModules "MAIN_COMPANY_CODE_ALWAYS_REQUIRED", "chaine", "1", - "With this constants on, third party code is always required whatever is numbering module behaviour", 0, 'current', 0 + "With this constants on, third party code is always required whatever is numbering module behaviour", 0, 'current', 1 ); $this->const[2] = array( "MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED", From 31d032d5d36c74f1d3a6653832b75dd0cac1b5ea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 21:00:06 +0100 Subject: [PATCH 118/307] FIX Can't create a thirdparty from member if customer code is mandatory. --- htdocs/adherents/subscription.php | 10 +++++++++- htdocs/societe/class/societe.class.php | 13 +++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php index b0b450b10a1..dcad54e535f 100644 --- a/htdocs/adherents/subscription.php +++ b/htdocs/adherents/subscription.php @@ -120,7 +120,7 @@ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights { // Creation of thirdparty $company = new Societe($db); - $result=$company->create_from_member($object, GETPOST('companyname', 'alpha'), GETPOST('companyalias', 'alpha')); + $result=$company->create_from_member($object, GETPOST('companyname', 'alpha'), GETPOST('companyalias', 'alpha'), GETPOST('customercode', 'alpha')); if ($result < 0) { @@ -854,6 +854,14 @@ if ($rowid > 0) array('label' => $langs->trans("NameToCreate"), 'type' => 'text', 'name' => 'companyname', 'value' => $companyname, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"'), array('label' => $langs->trans("AliasNames"), 'type' => 'text', 'name' => 'companyalias', 'value' => $companyalias, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"') ); + // If customer code was forced to "required", we ask it at creation to avoid error later + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) + { + $tmpcompany = new Societe($db); + $tmpcompany->name=$companyname; + $customercode = $tmpcompany->get_codeclient($tmpcompany,0); + $formquestion[]=array('label' => $langs->trans("CustomerCode"), 'type' => 'text', 'name' => 'customercode', 'value' => $customercode, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"'); + } print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id,$langs->trans("CreateDolibarrThirdParty"),$langs->trans("ConfirmCreateThirdParty"),"confirm_create_thirdparty",$formquestion,1); } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index a240c83b89f..4b1f9053353 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -3244,12 +3244,13 @@ class Societe extends CommonObject /** * Create a third party into database from a member object * - * @param Adherent $member Object member - * @param string $socname Name of third party to force - * @param string $socalias Alias name of third party to force - * @return int <0 if KO, id of created account if OK + * @param Adherent $member Object member + * @param string $socname Name of third party to force + * @param string $socalias Alias name of third party to force + * @param string $customercode Customer code + * @return int <0 if KO, id of created account if OK */ - function create_from_member(Adherent $member, $socname='', $socalias='') + function create_from_member(Adherent $member, $socname='', $socalias='', $customercode='') { global $user,$langs; @@ -3274,7 +3275,7 @@ class Societe extends CommonObject $this->skype=$member->skype; $this->client = 1; // A member is a customer by default - $this->code_client = -1; + $this->code_client = ($customercode?$customercode:-1); $this->code_fournisseur = -1; $this->db->begin(); From f2318716ecc06cb9641f022981d960d6881a90af Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 21:27:16 +0100 Subject: [PATCH 119/307] FIX Error reported when creation of thirdparty from member fails --- htdocs/adherents/class/adherent.class.php | 5 +++-- htdocs/adherents/subscription.php | 3 ++- htdocs/core/class/commonobject.class.php | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index a5ca1691096..9d61ea07afa 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -586,13 +586,14 @@ class Adherent extends CommonObject $lthirdparty->phone=$this->phone; $lthirdparty->state_id=$this->state_id; $lthirdparty->country_id=$this->country_id; - $lthirdparty->country_id=$this->country_id; //$lthirdparty->phone_mobile=$this->phone_mobile; - $result=$lthirdparty->update($this->fk_soc,$user,0,1,1,'update'); // Use sync to 0 to avoid cyclic updates + $result=$lthirdparty->update($this->fk_soc, $user, 0, 1, 1, 'update'); // Use sync to 0 to avoid cyclic updates + if ($result < 0) { $this->error=$lthirdparty->error; + $this->errors=$lthirdparty->errors; dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR); $error++; } diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php index dcad54e535f..53d1ff60836 100644 --- a/htdocs/adherents/subscription.php +++ b/htdocs/adherents/subscription.php @@ -359,7 +359,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && ! $outputlangs = new Translate('', $conf); $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang); $outputlangs->loadLangs(array("main", "members")); - // Get email content fro mtemplae + // Get email content from templae $arraydefaultmessage=null; $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION; @@ -862,6 +862,7 @@ if ($rowid > 0) $customercode = $tmpcompany->get_codeclient($tmpcompany,0); $formquestion[]=array('label' => $langs->trans("CustomerCode"), 'type' => 'text', 'name' => 'customercode', 'value' => $customercode, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"'); } + // @TODO Add other extrafields mandatory for thirdparty creation print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id,$langs->trans("CreateDolibarrThirdParty"),$langs->trans("ConfirmCreateThirdParty"),"confirm_create_thirdparty",$formquestion,1); } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index c9b01a6a49d..676e76fe16a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4848,6 +4848,7 @@ abstract class CommonObject if ($this->array_options[$key] === '') $mandatorypb=true; if ($mandatorypb) { + dol_syslog($this->error); $this->errors[]=$langs->trans('ErrorFieldRequired', $attributeLabel); return -1; } @@ -6142,7 +6143,7 @@ abstract class CommonObject if (! is_object($form)) $form=new Form($db); $out = ''; - + if (is_array($extrafields->attributes[$this->table_element]['label']) && count($extrafields->attributes[$this->table_element]['label']) > 0) { $out .= "\n"; @@ -6156,7 +6157,7 @@ abstract class CommonObject && empty($extrafields->attributes[$this->table_element]['list'][$key]) && $mode == 'view'){ continue; } - + $enabled = 1; if ($enabled && isset($extrafields->attributes[$this->table_element]['list'][$key])) { From 6851232314effbe5cbd3cf44e211547e7e7a26b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 20:49:48 +0100 Subject: [PATCH 120/307] Fix removing constant no more required --- htdocs/core/modules/modAccounting.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index 325c504af42..c587ef72cdd 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -80,7 +80,7 @@ class modAccounting extends DolibarrModules "MAIN_COMPANY_CODE_ALWAYS_REQUIRED", "chaine", "1", - "With this constants on, third party code is always required whatever is numbering module behaviour", 0, 'current', 0 + "With this constants on, third party code is always required whatever is numbering module behaviour", 0, 'current', 1 ); $this->const[2] = array( "MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED", From b8429c607ed6a66bf42be81189a07ffac4766994 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 21:00:06 +0100 Subject: [PATCH 121/307] FIX Can't create a thirdparty from member if customer code is mandatory. --- htdocs/adherents/subscription.php | 10 +++++++++- htdocs/societe/class/societe.class.php | 13 +++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php index 5a50c92f3e9..94b101b4de5 100644 --- a/htdocs/adherents/subscription.php +++ b/htdocs/adherents/subscription.php @@ -120,7 +120,7 @@ if ($action == 'confirm_create_thirdparty' && $confirm == 'yes' && $user->rights { // Creation user $company = new Societe($db); - $result=$company->create_from_member($object, GETPOST('companyname', 'alpha'), GETPOST('companyalias', 'alpha')); + $result=$company->create_from_member($object, GETPOST('companyname', 'alpha'), GETPOST('companyalias', 'alpha'), GETPOST('customercode', 'alpha')); if ($result < 0) { @@ -1011,6 +1011,14 @@ if ($rowid > 0) array('label' => $langs->trans("NameToCreate"), 'type' => 'text', 'name' => 'companyname', 'value' => $companyname, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"'), array('label' => $langs->trans("AliasNames"), 'type' => 'text', 'name' => 'companyalias', 'value' => $companyalias, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"') ); + // If customer code was forced to "required", we ask it at creation to avoid error later + if (! empty($conf->global->MAIN_COMPANY_CODE_ALWAYS_REQUIRED)) + { + $tmpcompany = new Societe($db); + $tmpcompany->name=$companyname; + $customercode = $tmpcompany->get_codeclient($tmpcompany,0); + $formquestion[]=array('label' => $langs->trans("CustomerCode"), 'type' => 'text', 'name' => 'customercode', 'value' => $customercode, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"'); + } print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id,$langs->trans("CreateDolibarrThirdParty"),$langs->trans("ConfirmCreateThirdParty"),"confirm_create_thirdparty",$formquestion,1); } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index eaf62bc89ca..1cf8b211d48 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -3079,12 +3079,13 @@ class Societe extends CommonObject /** * Create a third party into database from a member object * - * @param Adherent $member Object member - * @param string $socname Name of third party to force - * @param string $socalias Alias name of third party to force - * @return int <0 if KO, id of created account if OK + * @param Adherent $member Object member + * @param string $socname Name of third party to force + * @param string $socalias Alias name of third party to force + * @param string $customercode Customer code + * @return int <0 if KO, id of created account if OK */ - function create_from_member(Adherent $member, $socname='', $socalias='') + function create_from_member(Adherent $member, $socname='', $socalias='', $customercode='') { global $user,$langs; @@ -3107,7 +3108,7 @@ class Societe extends CommonObject $this->skype=$member->skype; $this->client = 1; // A member is a customer by default - $this->code_client = -1; + $this->code_client = ($customercode?$customercode:-1); $this->code_fournisseur = -1; $this->db->begin(); From 4b6ae9d42402844f8b37fc2a9ef7e0a63d1cedcf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 18 Dec 2018 21:27:16 +0100 Subject: [PATCH 122/307] FIX Error reported when creation of thirdparty from member fails Conflicts: htdocs/adherents/subscription.php htdocs/core/class/commonobject.class.php --- htdocs/adherents/class/adherent.class.php | 5 +++-- htdocs/adherents/subscription.php | 1 + htdocs/core/class/commonobject.class.php | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 8736500757f..11fb1a1a111 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -582,13 +582,14 @@ class Adherent extends CommonObject $lthirdparty->phone=$this->phone; $lthirdparty->state_id=$this->state_id; $lthirdparty->country_id=$this->country_id; - $lthirdparty->country_id=$this->country_id; //$lthirdparty->phone_mobile=$this->phone_mobile; - $result=$lthirdparty->update($this->fk_soc,$user,0,1,1,'update'); // Use sync to 0 to avoid cyclic updates + $result=$lthirdparty->update($this->fk_soc, $user, 0, 1, 1, 'update'); // Use sync to 0 to avoid cyclic updates + if ($result < 0) { $this->error=$lthirdparty->error; + $this->errors=$lthirdparty->errors; dol_syslog(get_class($this)."::update ".$this->error,LOG_ERR); $error++; } diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php index 94b101b4de5..60969908a44 100644 --- a/htdocs/adherents/subscription.php +++ b/htdocs/adherents/subscription.php @@ -1019,6 +1019,7 @@ if ($rowid > 0) $customercode = $tmpcompany->get_codeclient($tmpcompany,0); $formquestion[]=array('label' => $langs->trans("CustomerCode"), 'type' => 'text', 'name' => 'customercode', 'value' => $customercode, 'morecss' => 'minwidth300', 'moreattr' => 'maxlength="128"'); } + // @TODO Add other extrafields mandatory for thirdparty creation print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id,$langs->trans("CreateDolibarrThirdParty"),$langs->trans("ConfirmCreateThirdParty"),"confirm_create_thirdparty",$formquestion,1); } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 32a528c27dc..f2175962c78 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4579,6 +4579,7 @@ abstract class CommonObject if ($this->array_options[$key] === '') $mandatorypb=true; if ($mandatorypb) { + dol_syslog($this->error); $this->errors[]=$langs->trans('ErrorFieldRequired', $attributeLabel); return -1; } From 707af49025f7fcceda13dee05ca9893ca051b5bf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 19 Dec 2018 12:07:26 +0100 Subject: [PATCH 123/307] FIX Missing last month on vat report per month --- htdocs/compta/tva/index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/tva/index.php b/htdocs/compta/tva/index.php index 2fdd1591ead..5c346ca9ced 100644 --- a/htdocs/compta/tva/index.php +++ b/htdocs/compta/tva/index.php @@ -256,7 +256,8 @@ $mend = $tmp['mon']; //var_dump($m); $total=0; $subtotalcoll=0; $subtotalpaye=0; $subtotal=0; $i=0; $mcursor=0; -while ((($y < $yend) || ($y == $yend && $m < $mend)) && $mcursor < 1000) // $mcursor is to avoid too large loop + +while ((($y < $yend) || ($y == $yend && $m <= $mend)) && $mcursor < 1000) // $mcursor is to avoid too large loop { //$m = $conf->global->SOCIETE_FISCAL_MONTH_START + ($mcursor % 12); if ($m == 13) $y++; From b0652494b50c2b271971c0f0ca69f52e03129f3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 19 Dec 2018 15:40:01 +0100 Subject: [PATCH 124/307] Debug cash fence --- htdocs/cashdesk/admin/cashdesk.php | 7 +- .../compta/cashcontrol/cashcontrol_card.php | 189 ++++++++++++++++-- .../cashcontrol/class/cashcontrol.class.php | 4 +- htdocs/langs/en_US/cashdesk.lang | 1 + htdocs/takepos/admin/setup.php | 7 +- 5 files changed, 179 insertions(+), 29 deletions(-) diff --git a/htdocs/cashdesk/admin/cashdesk.php b/htdocs/cashdesk/admin/cashdesk.php index 399a59b4687..7bc587bd67b 100644 --- a/htdocs/cashdesk/admin/cashdesk.php +++ b/htdocs/cashdesk/admin/cashdesk.php @@ -121,7 +121,7 @@ print "
    '.$langs->trans("CashDeskThirdPartyForSell").''; -print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.client in (1,3) AND s.status = 1',1,0,1,array(),0); +print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.client in (1,3) AND s.status = 1', 1, 0, 0, array(), 0); print '
    '; if ($action == 'start' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') { @@ -256,28 +350,81 @@ if ($action=="create" || $action=="start") if ($action == 'start' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '' && GETPOST('posnumber') != '-1') { + $posmodule = GETPOST('posmodule','alpha'); + $terminalid = GETPOST('posnumber','alpha'); + + print '
    '; + print ''; + print ''; - print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print ''; + $i=0; foreach($arrayofpaymentmode as $key => $val) { - print ''; + print ''; + $i++; } print ''; print ''; + print ''; // Initial amount - print ''; + print ''; + print ''; + // Amount per payment type + $i=0; foreach($arrayofpaymentmode as $key => $val) { - print ''; + $i++; } - - print ''; + // Save + print ''; print ''; + + print ''; + print ''; + // Initial amount + print ''; + // Amount per payment type + $i=0; + foreach($arrayofpaymentmode as $key => $val) + { + print ''; + $i++; + } + // Save + print ''; + print ''; + print ''; } print ''; @@ -342,7 +489,7 @@ if (empty($action) || $action=="view") print dol_print_date($object->date_creation, 'dayhour'); print ''; - print '"; diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 0acb9c0dd82..fdf77b17961 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -52,7 +52,7 @@ class CashControl extends CommonObject /** * @var string String with name of icon for pos_cash_fence. Must be the part after the 'object_' into object_pos_cash_fence.png */ - public $picto = 'bank'; + public $picto = 'account'; public $fields=array( 'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>10), @@ -141,7 +141,7 @@ class CashControl extends CommonObject $sql .= ") VALUES ("; //$sql .= "'(PROV)', "; $sql .= $conf->entity; - $sql .= ", ".($this->opening > 0 ? $this->opening : 0); + $sql .= ", ".(is_numeric($this->opening) ? $this->opening : 0); $sql .= ", 0"; // Draft by default $sql .= ", '".$this->db->idate(dol_now())."'"; $sql .= ", '".$this->db->escape($this->posmodule)."'"; diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 353c4ee93ab..73b2b4f6b37 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -42,3 +42,4 @@ Place=Place TakeposConnectorNecesary='TakePOS Connector' required OrderPrinters=Order printers SearchProduct=Search product +AmountAtEndOfPeriod=Amount at end of period (day, month or year) \ No newline at end of file diff --git a/htdocs/takepos/admin/setup.php b/htdocs/takepos/admin/setup.php index e2f944d6641..aaec165baa5 100644 --- a/htdocs/takepos/admin/setup.php +++ b/htdocs/takepos/admin/setup.php @@ -152,7 +152,7 @@ print "\n"; print ''; print ''; if (! empty($conf->banque->enabled)) { @@ -188,7 +188,8 @@ if (! empty($conf->stock->enabled)) if (!$conf->global->CASHDESK_NO_DECREASE_STOCK) { $res = dolibarr_set_const($db,"CASHDESK_NO_DECREASE_STOCK",1,'chaine',0,'',$conf->entity); } - print $langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch'); + print $langs->trans("Yes").'
    '; + print ''.$langs->trans('StockDecreaseForPointOfSaleDisabledbyBatch').''; } print ''; @@ -204,7 +205,7 @@ if (! empty($conf->stock->enabled)) } else { - print $langs->trans("StockDecreaseForPointOfSaleDisabled"); + print ''.$langs->trans("StockDecreaseForPointOfSaleDisabled").''; } print ''; } From d9b8a8c8aea9ae1b86507a711ad22f3cd75a0c2e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 19 Dec 2018 16:12:55 +0100 Subject: [PATCH 125/307] Debug cash fence feature --- htdocs/compta/cashcontrol/report.php | 121 +++++++++++++++------------ htdocs/projet/activity/perday.php | 2 +- htdocs/projet/activity/perweek.php | 2 +- 3 files changed, 68 insertions(+), 57 deletions(-) diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index c1748134444..c85e48f09e7 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -24,7 +24,7 @@ */ /** - * \file htdocs/compta/bank/bankentries_list.php + * \file htdocs/compta/cashcontrol/report.php * \ingroup pos * \brief List of bank transactions */ @@ -53,34 +53,67 @@ $arrayfields=array( 'b.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1, 'position'=>605), ); +$syear = $cashcontrol->year_close; +$smonth = $cashcontrol->month_close; +$sday = $cashcontrol->day_close; + +$posmodule = $cashcontrol->posmodule; +$terminalid = $cashcontrol->posnumber; + + /* * View */ llxHeader('', $langs->trans("CashControl"), '', '', 0, 0, array(), array(), $param); -$sql = "SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro as conciliated, b.num_releve, b.num_chq,"; +/*$sql = "SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro as conciliated, b.num_releve, b.num_chq,"; $sql.= " b.fk_account, b.fk_type,"; $sql.= " ba.rowid as bankid, ba.ref as bankref,"; $sql.= " bu.url_id,"; $sql.= " f.module_source, f.facnumber as facnumber"; $sql.= " FROM "; -if ($bid) $sql.= MAIN_DB_PREFIX."bank_class as l,"; +//if ($bid) $sql.= MAIN_DB_PREFIX."bank_class as l,"; $sql.= " ".MAIN_DB_PREFIX."bank_account as ba,"; $sql.= " ".MAIN_DB_PREFIX."bank as b"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND type = 'payment'"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON bu.url_id = f.rowid"; $sql.= " WHERE b.fk_account = ba.rowid"; -$sql.= " AND f.module_source='$cashcontrol->posmodule'"; -$sql.= " AND ba.entity IN (".getEntity('bank_account').")"; - -$sql.=" AND b.datec>'".$cashcontrol->date_creation."'"; -if ($cashcontrol->date_close>0) $sql.=" AND b.datec<'".$cashcontrol->date_close."'"; -$sql.=" AND (b.fk_account="; -$sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH; -$sql.=" or b.fk_account="; -$sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB; +// Define filter on invoice +$sql.= " AND f.module_source = '".$db->escape($cashcontrol->posmodule)."'"; +$sql.= " AND f.pos_source = '".$db->escape($cashcontrol->posnumber)."'"; +$sql.= " AND f.entity IN (".getEntity('facture').")"; +// Define filter on data +if ($syear && ! $smonth) $sql.= " AND dateo BETWEEN '".$db->idate(dol_get_first_day($syear, 1))."' AND '".$db->idate(dol_get_last_day($syear, 12))."'"; +elseif ($syear && $smonth && ! $sday) $sql.= " AND dateo BETWEEN '".$db->idate(dol_get_first_day($syear, $smonth))."' AND '".$db->idate(dol_get_last_day($syear, $smonth))."'"; +elseif ($syear && $smonth && $sday) $sql.= " AND dateo BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $smonth, $sday, $syear))."' AND '".$db->idate(dol_mktime(23, 59, 59, $smonth, $sday, $syear))."'"; +else dol_print_error('', 'Year not defined'); +// Define filter on bank account +$sql.=" AND (b.fk_account=".$conf->global->CASHDESK_ID_BANKACCOUNT_CASH; +$sql.=" OR b.fk_account=".$conf->global->CASHDESK_ID_BANKACCOUNT_CB; +$sql.=" OR b.fk_account=".$conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE; $sql.=")"; +*/ +$sql = "SELECT f.facnumber, pf.amount as total, cp.code"; +$sql.= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as cp"; +$sql.= " WHERE pf.fk_facture = f.rowid AND p.rowid = pf.fk_paiement AND cp.id = p.fk_paiement"; +$sql.= " AND f.module_source = '".$db->escape($posmodule)."'"; +$sql.= " AND f.pos_source = '".$db->escape($terminalid)."'"; +$sql.= " AND f.paye = 1"; +$sql.= " AND p.entity IN (".getEntity('facture').")"; +/*if ($key == 'cash') $sql.=" AND cp.code = 'LIQ'"; +elseif ($key == 'cheque') $sql.=" AND cp.code = 'CHQ'"; +elseif ($key == 'card') $sql.=" AND cp.code = 'CB'"; +else +{ + dol_print_error('Value for key = '.$key.' not supported'); + exit; +}*/ +if ($syear && ! $smonth) $sql.= " AND datef BETWEEN '".$db->idate(dol_get_first_day($syear, 1))."' AND '".$db->idate(dol_get_last_day($syear, 12))."'"; +elseif ($syear && $smonth && ! $sday) $sql.= " AND datef BETWEEN '".$db->idate(dol_get_first_day($syear, $smonth))."' AND '".$db->idate(dol_get_last_day($syear, $smonth))."'"; +elseif ($syear && $smonth && $sday) $sql.= " AND datef BETWEEN '".$db->idate(dol_mktime(0, 0, 0, $smonth, $sday, $syear))."' AND '".$db->idate(dol_mktime(23, 59, 59, $smonth, $sday, $syear))."'"; +else dol_print_error('', 'Year not defined'); + $resql = $db->query($sql); if ($resql) { @@ -90,7 +123,7 @@ if ($resql) print "

    "; if ($cashcontrol->status==2) print $langs->trans("CashControl")." ".$cashcontrol->id; else print $langs->trans("CashControl")." - ".$langs->trans("Draft"); - print "
    ".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'day')."

    "; + print "
    ".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'dayhour').""; print '
    '; @@ -111,6 +144,7 @@ if ($resql) // Loop on each record $sign = 1; + $first='yes'; $totalarray=array(); while ($i < min($num,$limit)) @@ -149,40 +183,6 @@ if ($resql) else dol_print_error($db); $balancecalculated=true; - - // Output a line with start balance - if ($user->rights->banque->consolidate && $action == 'reconcile') - { - $tmpnbfieldbeforebalance=0; - $tmpnbfieldafterbalance=0; - $balancefieldfound=false; - foreach($arrayfields as $key => $val) - { - if ($key == 'balancebefore' || $key == 'balance') - { - $balancefieldfound=true; - continue; - } - if (! empty($arrayfields[$key]['checked'])) - { - if (! $balancefieldfound) $tmpnbfieldbeforebalance++; - else $tmpnbfieldafterbalance++; - } - } - - print '
    '; - if ($tmpnbfieldbeforebalance) - { - print ''; - } - print ''; - print ''; - print ''; - } } $balance = price2num($balance + ($sign * $objp->amount),'MT'); @@ -200,13 +200,18 @@ if ($resql) } print ''; - if ($first==""){ - print ''; + if ($first == "yes") + { print ''; - $first="no"; + print ''; + print ''; + print ''; + $first = "no"; } - // Ref + print ''; + + // Ref print ''; @@ -222,8 +227,9 @@ if ($resql) // Bank account print '\n"; if (! $i) $totalarray['nbfield']++; @@ -277,16 +283,21 @@ if ($resql) print "
    '.$langs->trans("InitialBankBalance").''.$langs->trans("InitialBankBalance"); + //print '
    '.$langs->trans("TheoricalAmount").'
    '.$langs->trans("RealAmount"); + print '
    '; + print $langs->trans("AmountAtEndOfPeriod"); + print '
    '.$langs->trans("Cash"); + //print '
    '.$langs->trans("TheoricalAmount").'
    '.$langs->trans("RealAmount"); + print '
    '.$langs->trans($val).'
    '.$langs->trans("TheoricalAmount").'
    '.$langs->trans("RealAmount").'
    '.$langs->trans($val); + //print '
    '.$langs->trans("TheoricalAmount").'
    '.$langs->trans("RealAmount"); + print '
    '.$langs->trans("TheoricalAmount").''; + print price($initialbalanceforterminal[$terminalid]['cash']).'
    '; + print '
    '; - print price($theoricalamountforterminal[0][$key]).'
    '; - print ''; + print '
    '; + print price($theoricalamountforterminal[$terminalid][$key]).'
    '; print '
    '.$langs->trans("RealAmount").''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print '
    '.$langs->trans("InitialBankBalance").''; + print '
    '.$langs->trans("InitialBankBalance").' - '.$langs->trans("Cash").''; print price($object->opening, 0, $langs, 1, -1, -1, $conf->currency); print "
    '.$langs->trans("CashDeskThirdPartyForSell").''; -print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY,'socid','s.client in (1,3) AND s.status = 1',1,0,1,array(),0); +print $form->select_company($conf->global->CASHDESK_ID_THIRDPARTY, 'socid', 's.client in (1,3) AND s.status = 1', 1, 0, 0, array(), 0); print '
    '; - print ''; - print price(price2num($balance, 'MT'), 1, $langs); - print ''; - print '
    '.$langs->trans("InitialBankBalance").''.price($cashcontrol->opening).'
    '.$langs->trans("InitialBankBalance").' - '.$langs->trans("Cash").''.price($cashcontrol->opening).'
    '; print $objp->facnumber; print ''; print $bankaccount->getNomUrl(1); - if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->rowid) $cash+=$objp->amount; - if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->rowid) $bank+=$objp->amount; + if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->id) $cash+=$objp->amount; + if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->id) $bank+=$objp->amount; + if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE==$bankaccount->id) $cheque+=$objp->amount; print "
    "; $cash=$cash+$cashcontrol->opening; - print "

    ".$langs->trans("Cash").": ".price($cash)."

    ".$langs->trans("PaymentTypeCB").": ".price($bank)."

    "; - + print "

    "; + print $langs->trans("Cash").": ".price($cash)."

    "; + print $langs->trans("PaymentTypeCB").": ".price($bank)."

    "; + print $langs->trans("PaymentTypeCheque").": ".price($cheque)."

    "; + print "

    "; //save totals to DB + /* $sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence "; $sql .= "SET"; $sql .= " cash='".$cash."'"; $sql .= ", card='".$bank."'"; $sql .= " where rowid=".$id; $db->query($sql); + */ print ""; diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php index 23a0152c19c..5665a2fb505 100644 --- a/htdocs/projet/activity/perday.php +++ b/htdocs/projet/activity/perday.php @@ -388,7 +388,7 @@ $head=project_timesheet_prepare_head($mode, $usertoprocess); dol_fiche_head($head, 'inputperday', $langs->trans('TimeSpent'), -1, 'task'); // Show description of content -print '
    '; +print '
    '; if ($mine || ($usertoprocess->id == $user->id)) print $langs->trans("MyTasksDesc").'.'.($onlyopenedproject?' '.$langs->trans("OnlyOpenedProject"):'').'
    '; else { diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php index cbf72d05788..af468d03921 100644 --- a/htdocs/projet/activity/perweek.php +++ b/htdocs/projet/activity/perweek.php @@ -390,7 +390,7 @@ $head=project_timesheet_prepare_head($mode, $usertoprocess); dol_fiche_head($head, 'inputperweek', $langs->trans('TimeSpent'), -1, 'task'); // Show description of content -print '
    '; +print '
    '; if ($mine || ($usertoprocess->id == $user->id)) print $langs->trans("MyTasksDesc").'.'.($onlyopenedproject?' '.$langs->trans("OnlyOpenedProject"):'').'
    '; else { From 391f916bd564d6b6262de159740cbee52b332c35 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 21 Dec 2018 10:21:56 +0100 Subject: [PATCH 126/307] Fix trans --- htdocs/langs/en_US/main.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index b3ea678aea0..2b23cdf9f5e 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -118,7 +118,7 @@ PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit DoTest=Test ToFilter=Filter NoFilter=No filter -WarningYouHaveAtLeastOneTaskLate=Warning, you have at least one element that has exceeded the tolerance delay. +WarningYouHaveAtLeastOneTaskLate=Warning, you have at least one element that has exceeded the tolerance time. yes=yes Yes=Yes no=no @@ -456,7 +456,7 @@ Duration=Duration TotalDuration=Total duration Summary=Summary DolibarrStateBoard=Database Statistics -DolibarrWorkBoard=Pending Items +DolibarrWorkBoard=Open Items NoOpenedElementToProcess=No opened element to process Available=Available NotYetAvailable=Not yet available From 9b215e117a592bcbe3547496a15fcfb59eb762f7 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 21 Dec 2018 11:23:44 +0100 Subject: [PATCH 127/307] FIX check if "entity" is already defined in "$param" --- htdocs/core/class/html.formfile.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index 2444dc293fd..c7288aa63d3 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -300,8 +300,10 @@ class FormFile return $this->getDocumentsLink($modulepart, $modulesubdir, $filedir); } - // Add entity in $param - $param.= 'entity='.(!empty($object->entity)?$object->entity:$conf->entity); + // Add entity in $param if not already exists + if (!preg_match('/entity\=[0-9]+/', $param)) { + $param.= 'entity='.(!empty($object->entity)?$object->entity:$conf->entity); + } $printer=0; if (in_array($modulepart,array('facture','supplier_proposal','propal','proposal','order','commande','expedition', 'commande_fournisseur', 'expensereport'))) // The direct print feature is implemented only for such elements From 4859d944d80c72ff6d72cadc25228601d4187781 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 21 Dec 2018 12:09:03 +0100 Subject: [PATCH 128/307] Sync transifex --- htdocs/langs/ar_SA/banks.lang | 3 +- htdocs/langs/bg_BG/banks.lang | 3 +- htdocs/langs/bn_BD/banks.lang | 3 +- htdocs/langs/bs_BA/banks.lang | 3 +- htdocs/langs/ca_ES/accountancy.lang | 31 ++-- htdocs/langs/ca_ES/admin.lang | 210 ++++++++++++------------ htdocs/langs/ca_ES/agenda.lang | 19 +-- htdocs/langs/ca_ES/banks.lang | 3 +- htdocs/langs/ca_ES/bills.lang | 14 +- htdocs/langs/ca_ES/boxes.lang | 46 +++--- htdocs/langs/ca_ES/cashdesk.lang | 20 +-- htdocs/langs/ca_ES/categories.lang | 2 + htdocs/langs/ca_ES/companies.lang | 28 ++-- htdocs/langs/ca_ES/contracts.lang | 3 +- htdocs/langs/ca_ES/cron.lang | 20 +-- htdocs/langs/ca_ES/deliveries.lang | 1 + htdocs/langs/ca_ES/dict.lang | 2 +- htdocs/langs/ca_ES/ecm.lang | 2 +- htdocs/langs/ca_ES/products.lang | 27 ++-- htdocs/langs/ca_ES/projects.lang | 6 +- htdocs/langs/ca_ES/propal.lang | 6 +- htdocs/langs/ca_ES/resource.lang | 2 +- htdocs/langs/ca_ES/users.lang | 5 +- htdocs/langs/cs_CZ/banks.lang | 3 +- htdocs/langs/da_DK/admin.lang | 4 +- htdocs/langs/da_DK/banks.lang | 3 +- htdocs/langs/da_DK/main.lang | 4 +- htdocs/langs/da_DK/other.lang | 2 +- htdocs/langs/de_AT/banks.lang | 3 +- htdocs/langs/de_CH/banks.lang | 1 + htdocs/langs/de_DE/banks.lang | 3 +- htdocs/langs/el_GR/admin.lang | 34 ++-- htdocs/langs/el_GR/banks.lang | 3 +- htdocs/langs/en_AU/banks.lang | 3 - htdocs/langs/en_GB/banks.lang | 4 - htdocs/langs/es_CL/banks.lang | 11 +- htdocs/langs/es_CO/banks.lang | 5 + htdocs/langs/es_ES/admin.lang | 46 +++--- htdocs/langs/es_ES/agenda.lang | 7 +- htdocs/langs/es_ES/cashdesk.lang | 4 +- htdocs/langs/es_ES/commercial.lang | 3 +- htdocs/langs/es_ES/dict.lang | 2 +- htdocs/langs/es_ES/ecm.lang | 4 +- htdocs/langs/es_ES/holiday.lang | 2 +- htdocs/langs/es_ES/install.lang | 2 +- htdocs/langs/es_ES/main.lang | 4 +- htdocs/langs/es_ES/other.lang | 4 +- htdocs/langs/es_ES/paybox.lang | 2 +- htdocs/langs/es_ES/propal.lang | 2 +- htdocs/langs/es_ES/website.lang | 12 +- htdocs/langs/es_MX/banks.lang | 5 - htdocs/langs/et_EE/banks.lang | 3 +- htdocs/langs/eu_ES/banks.lang | 3 +- htdocs/langs/fa_IR/banks.lang | 3 +- htdocs/langs/fi_FI/banks.lang | 3 +- htdocs/langs/fr_CA/banks.lang | 2 - htdocs/langs/fr_FR/admin.lang | 6 +- htdocs/langs/fr_FR/banks.lang | 3 +- htdocs/langs/fr_FR/cashdesk.lang | 4 +- htdocs/langs/fr_FR/dict.lang | 2 +- htdocs/langs/fr_FR/ecm.lang | 4 +- htdocs/langs/fr_FR/holiday.lang | 2 +- htdocs/langs/fr_FR/install.lang | 2 +- htdocs/langs/fr_FR/main.lang | 8 +- htdocs/langs/fr_FR/modulebuilder.lang | 2 +- htdocs/langs/fr_FR/other.lang | 2 +- htdocs/langs/fr_FR/products.lang | 2 +- htdocs/langs/fr_FR/stocks.lang | 4 +- htdocs/langs/fr_FR/website.lang | 14 +- htdocs/langs/he_IL/banks.lang | 3 +- htdocs/langs/hr_HR/admin.lang | 14 +- htdocs/langs/hr_HR/banks.lang | 3 +- htdocs/langs/hr_HR/bills.lang | 10 +- htdocs/langs/hr_HR/main.lang | 4 +- htdocs/langs/hr_HR/orders.lang | 6 +- htdocs/langs/hu_HU/banks.lang | 3 +- htdocs/langs/id_ID/banks.lang | 3 +- htdocs/langs/is_IS/banks.lang | 3 +- htdocs/langs/it_IT/banks.lang | 3 +- htdocs/langs/ja_JP/banks.lang | 3 +- htdocs/langs/ka_GE/banks.lang | 3 +- htdocs/langs/kn_IN/banks.lang | 3 +- htdocs/langs/ko_KR/banks.lang | 3 +- htdocs/langs/lo_LA/banks.lang | 3 +- htdocs/langs/lt_LT/banks.lang | 3 +- htdocs/langs/lv_LV/admin.lang | 4 +- htdocs/langs/lv_LV/banks.lang | 3 +- htdocs/langs/lv_LV/cashdesk.lang | 2 +- htdocs/langs/lv_LV/dict.lang | 2 +- htdocs/langs/lv_LV/ecm.lang | 4 +- htdocs/langs/lv_LV/holiday.lang | 4 +- htdocs/langs/lv_LV/install.lang | 2 +- htdocs/langs/lv_LV/main.lang | 4 +- htdocs/langs/lv_LV/other.lang | 2 +- htdocs/langs/lv_LV/website.lang | 10 +- htdocs/langs/mk_MK/banks.lang | 3 +- htdocs/langs/mn_MN/banks.lang | 3 +- htdocs/langs/nb_NO/banks.lang | 3 +- htdocs/langs/nl_NL/banks.lang | 3 +- htdocs/langs/pl_PL/banks.lang | 3 +- htdocs/langs/pt_BR/banks.lang | 10 +- htdocs/langs/pt_PT/banks.lang | 3 +- htdocs/langs/ro_RO/banks.lang | 3 +- htdocs/langs/ru_RU/banks.lang | 3 +- htdocs/langs/sk_SK/banks.lang | 3 +- htdocs/langs/sl_SI/banks.lang | 3 +- htdocs/langs/sq_AL/banks.lang | 3 +- htdocs/langs/sr_RS/banks.lang | 3 +- htdocs/langs/sv_SE/accountancy.lang | 221 +++++++++++++------------ htdocs/langs/sv_SE/admin.lang | 4 +- htdocs/langs/sv_SE/banks.lang | 81 +++++----- htdocs/langs/sv_SE/bills.lang | 32 ++-- htdocs/langs/sv_SE/main.lang | 6 +- htdocs/langs/sv_SE/sendings.lang | 12 +- htdocs/langs/sv_SE/stocks.lang | 38 +++-- htdocs/langs/sv_SE/users.lang | 31 ++-- htdocs/langs/sv_SE/website.lang | 14 +- htdocs/langs/sv_SE/withdrawals.lang | 8 +- htdocs/langs/sw_SW/banks.lang | 3 +- htdocs/langs/th_TH/banks.lang | 3 +- htdocs/langs/tr_TR/accountancy.lang | 79 ++++----- htdocs/langs/tr_TR/admin.lang | 224 +++++++++++++------------- htdocs/langs/tr_TR/agenda.lang | 23 +-- htdocs/langs/tr_TR/banks.lang | 3 +- htdocs/langs/tr_TR/bills.lang | 8 +- htdocs/langs/tr_TR/companies.lang | 26 +-- htdocs/langs/tr_TR/compta.lang | 6 +- htdocs/langs/tr_TR/dict.lang | 2 +- htdocs/langs/tr_TR/ecm.lang | 2 +- htdocs/langs/tr_TR/exports.lang | 88 +++++----- htdocs/langs/tr_TR/holiday.lang | 4 +- htdocs/langs/tr_TR/install.lang | 2 +- htdocs/langs/tr_TR/mails.lang | 32 ++-- htdocs/langs/tr_TR/main.lang | 14 +- htdocs/langs/tr_TR/modulebuilder.lang | 35 ++-- htdocs/langs/tr_TR/oauth.lang | 2 +- htdocs/langs/tr_TR/other.lang | 4 +- htdocs/langs/tr_TR/paypal.lang | 18 +-- htdocs/langs/tr_TR/projects.lang | 36 ++--- htdocs/langs/tr_TR/sms.lang | 38 ++--- htdocs/langs/tr_TR/stocks.lang | 36 +++-- htdocs/langs/tr_TR/stripe.lang | 15 +- htdocs/langs/tr_TR/suppliers.lang | 2 +- htdocs/langs/tr_TR/trips.lang | 66 ++++---- htdocs/langs/tr_TR/website.lang | 12 +- htdocs/langs/tr_TR/withdrawals.lang | 20 +-- htdocs/langs/uk_UA/banks.lang | 3 +- htdocs/langs/uz_UZ/banks.lang | 3 +- htdocs/langs/vi_VN/banks.lang | 3 +- htdocs/langs/zh_CN/banks.lang | 3 +- htdocs/langs/zh_TW/banks.lang | 59 ++++--- htdocs/langs/zh_TW/bills.lang | 4 +- htdocs/langs/zh_TW/members.lang | 7 +- htdocs/langs/zh_TW/users.lang | 9 +- 154 files changed, 1089 insertions(+), 1115 deletions(-) diff --git a/htdocs/langs/ar_SA/banks.lang b/htdocs/langs/ar_SA/banks.lang index 0bf6251340d..0101f4aedb1 100644 --- a/htdocs/langs/ar_SA/banks.lang +++ b/htdocs/langs/ar_SA/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=إضافة دفعات متنوعة SEPAMandate=SEPA mandate YourSEPAMandate=تفويض سيبا الخاص بك FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/bg_BG/banks.lang b/htdocs/langs/bg_BG/banks.lang index 849d4330e3c..bfb631042ae 100644 --- a/htdocs/langs/bg_BG/banks.lang +++ b/htdocs/langs/bg_BG/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/bn_BD/banks.lang b/htdocs/langs/bn_BD/banks.lang index 8403c827174..4d9affc517a 100644 --- a/htdocs/langs/bn_BD/banks.lang +++ b/htdocs/langs/bn_BD/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/bs_BA/banks.lang b/htdocs/langs/bs_BA/banks.lang index 6a077eb3325..f5a842294e5 100644 --- a/htdocs/langs/bs_BA/banks.lang +++ b/htdocs/langs/bs_BA/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Dodaj ostala plaćanja SEPAMandate=SEPA mandate YourSEPAMandate=Vaš SEPA mandat FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/ca_ES/accountancy.lang b/htdocs/langs/ca_ES/accountancy.lang index 33480ff64d8..1873e836d5c 100644 --- a/htdocs/langs/ca_ES/accountancy.lang +++ b/htdocs/langs/ca_ES/accountancy.lang @@ -36,11 +36,15 @@ AlreadyInGeneralLedger=Registrat en el Llibre Major NotYetInGeneralLedger=No s'ha registrat en el Llibre Major GroupIsEmptyCheckSetup=El grup està buit, comproveu la configuració del grup de comptabilitat personalitzat DetailByAccount=Mostra detalls per compte -AccountWithNonZeroValues=Comptes amb valors no nuls +AccountWithNonZeroValues=Compte amb valors no nuls ListOfAccounts=Llista de comptes +CountriesInEEC=Països a la CEE +CountriesNotInEEC=Països no integrats a la CEE +CountriesInEECExceptMe=Països a la CEE excepte %s +CountriesExceptMe=Tots els països, excepte %s MainAccountForCustomersNotDefined=Compte comptable per a clients no definida en la configuració -MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup +MainAccountForSuppliersNotDefined=Compte comptable principal per a proveïdors no definit a la configuració MainAccountForUsersNotDefined=Compte comptable per a usuaris no de definit en la configuració MainAccountForVatPaymentNotDefined=Compte comptable per a IVA no definida en la configuració @@ -55,10 +59,10 @@ AccountancyAreaDescChartModel=PAS %s: Crear un model de pla de comptes des del m AccountancyAreaDescChart=PAS %s: Crear o comprovar el contingut del seu pla de comptes des del menú %s AccountancyAreaDescVat=PAS %s: Defineix comptes comptables per cada tipus d'IVA. Per això, utilitzeu l'entrada del menú %s. -AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s. +AccountancyAreaDescDefault=STEP %s: Definir comptes comptables predeterminats. Per això, utilitzeu l'entrada del menú %s. AccountancyAreaDescExpenseReport=PAS %s: Defineix els comptes comptables per defecte per a cada tipus d'informe de despeses. Per això, utilitzeu l'entrada del menú %s. AccountancyAreaDescSal=PAS %s: Defineix comptes comptables per defecte per al pagament de salaris. Per això, utilitzeu l'entrada del menú %s. -AccountancyAreaDescContrib=PAS %s: Defineix comptes comptables per defecte per despeses especials (impostos diversos). Per això, utilitzeu l'entrada del menú %s. +AccountancyAreaDescContrib=PAS %s: defineix comptes de comptabilitat per defecte per a despeses especials (impostos diversos). Per això, utilitzeu l'entrada del menú %s. AccountancyAreaDescDonation=PAS %s: Defineix comptes comptables per defecte per a les donacions. Per això, utilitzeu l'entrada del menú %s. AccountancyAreaDescMisc=PAS %s: Defineix el compte comptable obligatori per defecte i els comptes comptables per defecte pels assentaments diversos. Per això, utilitzeu l'entrada del menú %s. AccountancyAreaDescLoan=PAS %s: Defineix comptes comptables per defecte per als préstecs. Per això, utilitzeu l'entrada del menú %s. @@ -156,6 +160,7 @@ Docref=Referència LabelAccount=Etiqueta de compte LabelOperation=Etiqueta de l'operació Sens=Significat +LetteringCode=Codi de retolació Codejournal=Diari NumPiece=Número de peça TransactionNumShort=Número de transacció @@ -172,7 +177,7 @@ DelYear=Any a eliminar DelJournal=Diari per esborrar ConfirmDeleteMvt=Això eliminarà totes les línies del Llibre Major de l'any i/o d'un diari específic. Es requereix com a mínim un criteri. ConfirmDeleteMvtPartial=Això eliminarà l'assentament del Llibre Major (se suprimiran totes les línies relacionades amb el mateix assentament) -FinanceJournal=Finance journal +FinanceJournal=Diari de finances ExpenseReportsJournal=Informe-diari de despeses DescFinanceJournal=Finance journal including all the types of payments by bank account DescJournalOnlyBindedVisible=Aquesta és una vista de registres que estan comptabilitzats a un compte comptable i que poden registrar-se al Llibre major. @@ -189,7 +194,7 @@ ListeMvts=Llista de moviments ErrorDebitCredit=El dèbit i el crèdit no poden tenir valors alhora AddCompteFromBK=Afegeix comptes comptables al grup ReportThirdParty=Llista el compte del tercer -DescThirdPartyReport=Consult here the list of the third party customers and vendors and their accounting accounts +DescThirdPartyReport=Consulteu aquí la llista dels clients i proveïdors de tercers i els seus comptes comptables ListAccounts=Llistat dels comptes comptables UnknownAccountForThirdparty=Compte comptable de tercer desconeguda, utilitzarem %s UnknownAccountForThirdpartyBlocking=Compte comptable de tercer desconegut. Error de bloqueig @@ -198,7 +203,7 @@ PaymentsNotLinkedToProduct=Pagament no vinculat a cap producte / servei Pcgtype=Grup de compte Pcgsubtype=Subgrup de compte -PcgtypeDesc=El grup i el subgrup del compte s'utilitzen com a criteris de "filtre" i "agrupació" predefinits per a alguns informes comptables. Per exemple, "INCOME" o "EXPENSE" s'utilitzen com a grups per als comptes comptables de productes per generar l'informe de despeses/ingressos. +PcgtypeDesc=El grup i el subconjunt del compte s'utilitzen com a criteris de "filtre" i "agrupació" predefinits per a alguns informes comptables. Per exemple, "INGRÉS" o "DESPESA" s'utilitzen com a grups per als comptes comptables de productes per generar l'informe de despeses / ingressos. TotalVente=Total turnover before tax TotalMarge=Marge total de vendes @@ -209,8 +214,8 @@ DescVentilDoneCustomer=Consulta aquí la llista de línies de factures de client DescVentilTodoCustomer=Comptabilitza les línies de factura encara no comptabilitzades amb un compte comptable de producte ChangeAccount=Canvia el compte comptable de producte/servei per les línies seleccionades amb el següent compte comptable: Vide=- -DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices vendors and their accounting account +DescVentilSupplier=Consulteu aquí la llista de línies de factures del proveïdor vinculades o que encara no estan vinculades a un compte de comptabilitat de producte +DescVentilDoneSupplier=Consulteu aquí la llista de les línies de venedors de factures i el seu compte comptable DescVentilTodoExpenseReport=Línies d'informes de despeses comptabilitzades encara no comptabilitzades amb un compte comptable de tarifa DescVentilExpenseReport=Consulteu aquí la llista de les línies d'informe de despeses vinculada (o no) a un compte comptable corresponent a tarifa DescVentilExpenseReportMore=Si tu poses el compte comptable sobre les línies del informe per tipus de despesa, l'aplicació serà capaç de fer tots els vincles entre les línies del informe i els comptes comptables del teu pla comptable, només amb un clic amb el botó "%s". Si el compte no estava al diccionari de tarifes o si encara hi ha línies no vinculades a cap compte, hauràs de fer-ho manualment a partir del menú "%s". @@ -221,6 +226,7 @@ AutomaticBindingDone=Comptabilització automàtica realitzada ErrorAccountancyCodeIsAlreadyUse=Error, no pots eliminar aquest compte comptable perquè està en ús MvtNotCorrectlyBalanced=Assentament comptabilitzat incorrectament. Deure = %s | Haver = %s +Balancing=Saldo FicheVentilation=Fitxa de comptabilització GeneralLedgerIsWritten=Els assentaments s'han escrit al Llibre Major GeneralLedgerSomeRecordWasNotRecorded=Alguns dels assentaments no van poder ser registrats al diari. Si no hi ha cap altre missatge d'error, probablement és perquè ja es van registrar al diari. @@ -262,7 +268,8 @@ Modelcsv_quadratus=Exporta cap a Quadratus QuadraCompta Modelcsv_ebp=Exporta cap a EBP Modelcsv_cogilog=Exporta cap a Cogilog Modelcsv_agiris=Exporta a Agiris -Modelcsv_configurable=Exportació configurable +Modelcsv_configurable=Exporta CSV configurable +Modelcsv_FEC=Exportació FEC (Art. L47 A) (prova) ChartofaccountsId=Id pla comptable ## Tools - Init accounting account on product / service @@ -296,10 +303,10 @@ BookeppingLineAlreayExists=Les línies ja existeixen en la comptabilitat NoJournalDefined=Cap diari definit Binded=Línies comptabilitzades ToBind=Línies a comptabilitzar -UseMenuToSetBindindManualy=No es possible auto-detectar, utilitzeu el menú %s per fer l'enllaç manualment +UseMenuToSetBindindManualy=Línies encara no enllaçades, utilitzeu el menú %s per fer l'enllaç manualment ## Import -ImportAccountingEntries=Accounting entries +ImportAccountingEntries=Entrades de comptabilitat WarningReportNotReliable=Avís, aquest informe no està basat en el Llibre Major, de manera que no conté assentaments modificats manualment en el Llibre Major. Si el registre diari està actualitzat, la vista de comptes és més precisa. ExpenseReportJournal=Diari d'informe de despeses diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index c3d79af55e9..f6f8b490e30 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -30,14 +30,14 @@ SessionSaveHandler=Modalitat de desar sessions SessionSavePath=Emmagatzema la localització de les sessions PurgeSessions=Purga de sessions ConfirmPurgeSessions=Estàs segur de voler purgar totes les sessions? Es desconnectaran tots els usuaris (excepte tu mateix) -NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow listing all running sessions. +NoSessionListWithThisHandler=El gestor de sessions configurat al seu PHP no permiteix mostrar les sessions en curs LockNewSessions=Bloquejar connexions noves -ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself? Only user %s will be able to connect after that. +ConfirmLockNewSessions=Esteu segur de voler restringir l'accés a Dolibarr únicament al seu usuari? Només el login %s podrà connectar si confirma. UnlockNewSessions=Eliminar bloqueig de connexions YourSession=La seva sessió Sessions=Sessions d'usuaris WebUserGroup=Servidor web usuari/grup -NoSessionFound=Your PHP seems to not allow listing of active sessions. The directory used to save sessions (%s) might be protected (For example, by OS permissions or by PHP directive open_basedir). +NoSessionFound=Sembla que el seu PHP no pot llistar les sessions actives. El directori de salvaguardat de sessions (%s) pot estar protegit (per exemple, pels permisos del sistema operatiu o per la directiva open_basedir del seu PHP). DBStoringCharset=Codificació base de dades per emmagatzematge de dades DBSortingCharset=Codificació base de dades per classificar les dades ClientCharset=Joc de caràcters del client @@ -118,7 +118,7 @@ Destination=Destinació IdModule=ID del modul IdPermissions=ID de permisos LanguageBrowserParameter=Variable %s -LocalisationDolibarrParameters=Localization parameters +LocalisationDolibarrParameters=Paràmetres de localització ClientTZ=Zona horària client (usuari) ClientHour=Hora client (usuari) OSTZ=Zona horària Servidor SO @@ -191,9 +191,9 @@ IgnoreDuplicateRecords=Ignorar errors de registres duplicats (INSERT IGNORE) AutoDetectLang=Autodetecta (idioma del navegador) FeatureDisabledInDemo=Opció deshabilitada en demo FeatureAvailableOnlyOnStable=Funcionalitat disponible únicament en versions estables oficials -BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the trashcan to disable it. +BoxesDesc=Els panells són components que mostren algunes dades que poden afegir-se per personalitzar algunes pàgines. Pots triar entre mostrar el panell o no seleccionant la pàgina de destí i fent clic a 'Activar', o fent clic en la paperera per desactivar. OnlyActiveElementsAreShown=Només els elements de mòduls activats són mostrats -ModulesDesc=The modules/applications determine which features are available in the software. Some modules require permissions to be granted to users after activating the module. Click the on/off button (at end of module line) to enable/disable a module/application. +ModulesDesc=Els mòduls/aplicacions determinen quines funcions estan disponibles al programa. Alguns mòduls requereixen permisos que es concedeixen als usuaris després d'activar el mòdul. Feu clic al botó d'encès/apagat (al final de la línia del mòdul) per activar/desactivar un mòdul/aplicació. ModulesMarketPlaceDesc=Pots trobar més mòduls per descarregar en pàgines web externes per internet... ModulesDeployDesc=If permissions on your file system allow it, you can use this tool to deploy an external module. The module will then be visible on the tab %s. ModulesMarketPlaces=Trobar mòduls/complements externs @@ -212,7 +212,7 @@ AchatTelechargement=Comprar / Descarregar GoModuleSetupArea=Per instal·lar un nou mòdul, vaja al àrea de configuració de mòduls en %s. DoliStoreDesc=DoliStore, el lloc oficial de mòduls complementaris per Dolibarr ERP / CRM DoliPartnersDesc=List of companies providing custom-developed modules or features.
    Note: since Dolibarr is an open source application, anyone experienced in PHP programming may develop a module. -WebSiteDesc=External websites for more add-on (non-core) modules... +WebSiteDesc=Llocs web de referència per trobar més mòduls (no core)... DevelopYourModuleDesc=Algunes solucions per desenvolupar el vostre propi mòdul... URL=Enllaç BoxesAvailable=Panells disponibles @@ -229,7 +229,7 @@ DoNotStoreClearPassword=No emmagatzemar la contrasenya sense xifrar a la base MainDbPasswordFileConfEncrypted=Encriptar la contrasenya de la base en l'arxiu conf.php InstrucToEncodePass=Per tenir la contrasenya encriptada al fitxer conf.php reemplaça la línia
    $dolibarr_main_db_pass="...";
    per
    $dolibarr_main_db_pass="crypted:%s"; InstrucToClearPass=Per tenir la contrasenya descodificada en el fitxer de configuració conf.php , reemplaça en aquest fitxer la línia
    $dolibarr_main_db_pass="crypted:..."
    per
    $dolibarr_main_db_pass="%s" -ProtectAndEncryptPdfFiles=Protection of generated PDF files NOT recommended (breaks mass PDF generation) +ProtectAndEncryptPdfFiles=Protecció i encriptació dels fitxers PDF generats NO es recomana (es trenca la generació massiva de PDF) ProtectAndEncryptPdfFilesDesc=La protecció d'un document PDF el manté disponible per llegir i imprimir amb qualsevol navegador PDF. No obstant això, l'edició i la còpia ja no és possible. Tingues en compte que l'ús d'aquesta característica fa que la construcció d'un arxiu PDF fusionat global no funcioni. Feature=Funció DolibarrLicense=Llicència @@ -246,8 +246,8 @@ ExternalResources=Recursos externs SocialNetworks=Xarxes socials ForDocumentationSeeWiki=Per a la documentació d'usuari, desenvolupador o Preguntes Freqüents (FAQ), consulteu el wiki Dolibarr:
    %s ForAnswersSeeForum=Per altres qüestions o realitzar les seves pròpies consultes, pot utilitzar el fòrum Dolibarr:
    %s -HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr. -HelpCenterDesc2=Some of these resources are only available in english. +HelpCenterDesc1=Aquests són alguns recursos per obtenir ajuda i suport amb Dolibarr. +HelpCenterDesc2=Alguns d'aquests serveis només estan disponibles en anglès. CurrentMenuHandler=Gestor de menú MeasuringUnit=Unitat de mesura LeftMargin=Marge esquerra @@ -262,35 +262,35 @@ NoticePeriod=Preavís NewByMonth=Nou per mes Emails=Correus EMailsSetup=Configuració de correu -EMailsDesc=This page allows you to override your default PHP parameters for email sending. In most cases on Unix/Linux OS, the PHP setup is correct and these parameters are unnecessary. +EMailsDesc=Aquesta pàgina permet reescriure els paràmetres del PHP en quan a l'enviament de correus. A la majoria dels casos, al sistema operatiu Unix/Linux, la configuració per defecte del PHP és correcta i no calen aquests paràmetres. EmailSenderProfiles=Perfils de remitents de correus electrònics -MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (default value in php.ini: %s) -MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) -MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) -MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) -MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) -MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to -MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) +MAIN_MAIL_SMTP_PORT=Port del servidor SMTP (Per defecte a php.ini: %s) +MAIN_MAIL_SMTP_SERVER=Nom host o ip del servidor SMTP (Per defecte en php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=Port del servidor SMTP (No definit en PHP en sistemes de tipus Unix) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=Nom servidor o ip del servidor SMTP (No definit en PHP en sistemes de tipus Unix) +MAIN_MAIL_EMAIL_FROM=E-mail del remitent per e-mails automàtics (valor predeterminat a php.ini: %s) +MAIN_MAIL_ERRORS_TO=E-mail a utilitzar per als e-mails de missatges d'error (camp 'Errors-To' als e-mails enviats) +MAIN_MAIL_AUTOCOPY_TO= Copia (Bcc) tots els correus enviats a +MAIN_DISABLE_ALL_MAILS=Desactiva tot l'enviament de correu electrònic (per a proves o demostracions) MAIN_MAIL_FORCE_SENDTO=Envieu tots els correus electrònics a (en lloc de destinataris reals, amb finalitats d'assaig) MAIN_MAIL_ENABLED_USER_DEST_SELECT=Add employee users with email into allowed recipient list -MAIN_MAIL_SENDMODE=Email sending method -MAIN_MAIL_SMTPS_ID=SMTP ID (if sending server requires authentication) -MAIN_MAIL_SMTPS_PW=SMTP Password (if sending server requires authentication) -MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption +MAIN_MAIL_SENDMODE=Mètode d'enviament de correu electrònic +MAIN_MAIL_SMTPS_ID=ID d'autenticació SMTP (si el servidor requereix autenticació) +MAIN_MAIL_SMTPS_PW=Contrasenya SMTP (si el servidor requereix autenticació) +MAIN_MAIL_EMAIL_TLS=Utilitza el xifratge TLS (SSL) MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption MAIN_MAIL_EMAIL_DKIM_ENABLED=Use DKIM to generate email signature MAIN_MAIL_EMAIL_DKIM_DOMAIN=Email Domain for use with dkim MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name of dkim selector MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Private key for dkim signing -MAIN_DISABLE_ALL_SMS=Disable all SMS sending (for test purposes or demos) +MAIN_DISABLE_ALL_SMS=Desactivar globalment tot enviament de SMS (per mode de proves o demo) MAIN_SMS_SENDMODE=Mètode d'enviament de SMS -MAIN_MAIL_SMS_FROM=Default sender phone number for SMS sending +MAIN_MAIL_SMS_FROM=Número de telèfon del remitent predeterminat per a l'enviament de SMS MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email or Company email) UserEmail=Correu electrònic de l'usuari CompanyEmail=Correu electrònic de l'empresa FeatureNotAvailableOnLinux=Funcionalitat no disponible en sistemes Unix. Proveu el seu sendmail localment. -SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files in directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ +SubmitTranslation=Si la traducció d'aquest idioma no està completa o trobes errors, pots corregir-ho editant els arxius en el directorilangs/%s i enviant els canvis a www.transifex.com/dolibarr-association/dolibarr/ SubmitTranslationENUS=Si la traducció d'aquest idioma no està completa o trobes errors, pots corregir-ho editant els fitxers en el directorilangs/%s i enviant els fitxers modificats al fòrum de www.dolibarr.es o pels desenvolupadors a github.com/Dolibarr/dolibarr. ModuleSetup=Configuració del mòdul ModulesSetup=Configuració de mòduls/aplicacions @@ -313,15 +313,15 @@ DoNotUseInProduction=No utilitzar en producció ThisIsProcessToFollow=Aquests són els passos per al procés: ThisIsAlternativeProcessToFollow=Aquesta és una configuració alternativa per processar manualment: StepNb=Pas %s -FindPackageFromWebSite=Find a package that provides features you want (for example on official web site %s). +FindPackageFromWebSite=Busca el paquet que t'ofereix les característiques que vols (per exemple en la web oficial %s). DownloadPackageFromWebSite=Descarrega el paquet (per exemple del lloc web oficial %s). -UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into the server directory dedicated to Dolibarr: %s +UnpackPackageInDolibarrRoot=Descomprimeix els fitxers empaquetats en en el directori del servidor dedicat a Dolibarr: %s UnpackPackageInModulesRoot=To deploy/install an external module, unpack/unzip the packaged files into the server directory dedicated to external modules:
    %s -SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. +SetupIsReadyForUse=La instal·lació del mòdul ha finalitzat. No obstant, ha d'habilitar i configurar el mòdul en la seva aplicació, aneu a la pàgina per configurar els mòduls: %s. NotExistsDirect=No s'ha definit el directori arrel alternatiu a un directori existent.
    InfDirAlt=Des de la versió 3, és possible definir un directori arrel alternatiu. Això li permet emmagatzemar, en un directori dedicat, plug-ins i plantilles personalitzades.
    Només ha de crear un directori a l'arrel de Dolibarr (per exemple: custom).
    InfDirExample=
    Declareu-lo al fitxer conf.php
    $dolibarr_main_url_root_alt='/custom'
    $dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
    Si aquestes línies ja hi són però comentades amb un "#", llavors simplement descomenteu-les treient aquest caràcter. -YouCanSubmitFile=Alternatively, you may upload the module .zip file package: +YouCanSubmitFile=Alternativament, pots penjar el paquet de fitxers .zip: CurrentVersion=Versió actual de Dolibarr CallUpdatePage=Ves a la pàgina que actualitza l'estructura de base de dades i les dades: %s LastStableVersion=Última versió estable @@ -351,15 +351,15 @@ SeeWikiForAllTeam=Dona un cop d'ull a la wiki per més detalls de tots els actor UseACacheDelay= Demora en memòria cau de l'exportació en segons (0 o buit sense memòria) DisableLinkToHelpCenter=Amagar l'enllaç "Necessita suport o ajuda" a la pàgina de login DisableLinkToHelp=Amaga l'enllaç a l'ajuda en línia "%s" -AddCRIfTooLong=There is no automatic text wrapping, text that is too long will not display on documents. Please add carriage returns in the text area if needed. -ConfirmPurge=Are you sure you want to execute this purge?
    This will permanently delete all your data files with no way to restore them (ECM files, attached files...). +AddCRIfTooLong=No hi ha línies de tall automátic, així que si el text es massa llarg no es mostrarà en els documents. Per favor afegeix un salt de línia a l'àrea de text si fos necessari. +ConfirmPurge=Estàs segur de voler realitzar aquesta purga?
    Això esborrarà definitivament totes les dades dels seus fitxers (àrea GED, arxius adjunts etc.). MinLength=Longuitud mínima LanguageFilesCachedIntoShmopSharedMemory=arxius .lang en memòria compartida LanguageFile=Fitxer d'idioma -ExamplesWithCurrentSetup=Examples with current configuration +ExamplesWithCurrentSetup=Exemples amb configuració actual ListOfDirectories=Llistat de directoris de plantilles OpenDocument ListOfDirectoriesForModelGenODT=Llista de directoris que contenen fitxers de plantilles amb format OpenDocument.

    Posa aqui el l'adreça completa dels directoris.
    Afegeix un "intro" entre cada directori.
    Per afegir un directori del mòdul GED, afegeix aquí DOL_DATA_ROOT/ecm/yourdirectoryname.

    Els fitxers d'aquests directoris han de tenir l'extensió .odt o .ods. -NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories +NumberOfModelFilesFound=Nombre d'arxius de plantilles ODT/ODS trobats en aquest(s) directori(s) ExampleOfDirectoriesForModelGen=Exemples de sintaxi:
    c:\\mydir
    /home/mydir
    DOL_DATA_ROOT/ecm/ecmdir FollowingSubstitutionKeysCanBeUsed=Posant les següents etiquetes a la plantilla, obtindrà una substitució amb el valor personalitzat en generar el document: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Crear_un_modelo_de_documento_ODT @@ -369,14 +369,14 @@ KeyForWebServicesAccess=Clau per utilitzar els Web Services (paràmetre "dolibar TestSubmitForm=Formulari de proves ThisForceAlsoTheme=Utilitzar aquest gestor de menús predetermina també el tema, sigui quina sigui l'elecció de l'usuari. A més, aquest gestor de menús, especial per a smartphones, només funciona en alguns telèfons. Utilitzar un altre gestor Si veieu qualsevol problema. ThemeDir=Directori dels temes -ConnectionTimeout=Connection timeout +ConnectionTimeout=Temps d'espera de connexió ResponseTimeout=Timeout de resposta SmsTestMessage=Missatge de prova de __PHONEFROM__ per __PHONETO__ ModuleMustBeEnabledFirst=El mòdul "%s" ha d'habilitar-se primer si necessita aquesta funcionalitat. SecurityToken=Clau per encriptar urls -NoSmsEngine=No SMS sender manager available. A SMS sender manager is not installed with the default distribution because they depend on an external supplier, but you can find some on %s +NoSmsEngine=No hi ha cap gestor d'enviament de SMS. Els gestors d'enviament de SMS no s'instal·len per defecte ja que depenen de cada proveïdor, però pot trobar-los a la plataforma %s PDF=PDF -PDFDesc=You can set each global option related to the PDF generation +PDFDesc=Defineix les opcions globals relacionades a la generació de PDF PDFAddressForging=Regles de visualització d'adreces HideAnyVATInformationOnPDF=Amagar qualsevol informació relacionada amb l'IVA al PDF que es genera PDFRulesForSalesTax=Regles per l'IVA @@ -391,7 +391,7 @@ UrlGenerationParameters=Seguretat de les URL SecurityTokenIsUnique=Fer servir un paràmetre securekey únic per a cada URL? EnterRefToBuildUrl=Introduïu la referència de l'objecte %s GetSecuredUrl=Obté la URL calculada -ButtonHideUnauthorized=Hide buttons for non-admin users for unauthorized actions instead of showing greyed disabled buttons +ButtonHideUnauthorized=Amaga els botons a usuaris no administradors per accions no autoritzades enlloc de mostrar-los en gris deshabilitats OldVATRates=Taxa d'IVA antiga NewVATRates=Taxa d'IVA nova PriceBaseTypeToChange=Canviar el preu on la referència de base és @@ -412,7 +412,7 @@ ExtrafieldSelect = Llista de selecció ExtrafieldSelectList = Llista de selecció de table ExtrafieldSeparator=Separador (no és un camp) ExtrafieldPassword=Contrasenya -ExtrafieldRadio=Radio buttons (one choice only) +ExtrafieldRadio=Botons tipus radio (només una opció) ExtrafieldCheckBox=Caselles de verificació ExtrafieldCheckBoxFromList=Caselles de verificació des de taula ExtrafieldLink=Enllaç a un objecte @@ -486,12 +486,12 @@ DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploade # Modules Module0Name=Usuaris i grups Module0Desc=Gestió d'usuaris / empleats i grups -Module1Name=Third Parties -Module1Desc=Companies and contacts management (customers, prospects...) +Module1Name=Tercers +Module1Desc=Gestió de tercers i contactes (clients, clients potencials...) Module2Name=Comercial Module2Desc=Gestió comercial Module10Name=Comptabilitat -Module10Desc=Simple accounting reports (journals, turnover) based on database content. Does not use any ledger table. +Module10Desc=Activació d'informes simples de comptabilitat (diaris, vendes) a partir del contingut de la base de dades. No utilitza cap taula de comptabilitat. Module20Name=Pressupostos Module20Desc=Gestió de pressupostos/propostes comercials Module22Name=E-Mailings @@ -501,7 +501,7 @@ Module23Desc=Realitza el seguiment del consum d'energies Module25Name=Comandes de clients Module25Desc=Gestió de comandes de clients Module30Name=Factures -Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers +Module30Desc=Gestió de factures i abonaments de clients. Gestió de factures i abonaments de proveïdors Module40Name=Proveïdors Module40Desc=Gestió de proveïdors i compres (ordres de compra i factures) Module42Name=Registre de depuració @@ -517,13 +517,13 @@ Module52Desc=Gestió de stocks de productes Module53Name=Serveis Module53Desc=Gestió de serveis Module54Name=Contractes/Subscripcions -Module54Desc=Management of contracts (services or recurring subscriptions) +Module54Desc=Gestió de contractes (serveis o subscripcions recurrents) Module55Name=Codis de barra Module55Desc=Gestió dels codis de barra Module56Name=Telefonia Module56Desc=Gestió de la telefonia Module57Name=Domiciliacions -Module57Desc=Management of Direct Debit payment orders. It includes generation of SEPA file for European countries. +Module57Desc=Gestió de domiciliacions. També inclou generació del fitxer SEPA per als països europeus. Module58Name=ClickToDial Module58Desc=Integració amb ClickToDial Module59Name=Bookmark4u @@ -534,28 +534,28 @@ Module75Name=Notes de despeses i desplaçaments Module75Desc=Gestió de les notes de despeses i desplaçaments Module80Name=Expedicions Module80Desc=Gestió d'expedicions i recepcions -Module85Name=Banks and Cash +Module85Name=Bancs i Efectiu Module85Desc=Gestió de comptes bancaris o efectiu -Module100Name=External Site -Module100Desc=Add external website link into Dolibarr menus to view it in a Dolibarr frame +Module100Name=Lloc extern +Module100Desc=Inclou qualsevol lloc web extern en els menús de Dolibarr, veient-lo en un frame Module105Name=Mailman i SPIP Module105Desc=Interfície amb Mailman o SPIP pel mòdul de Socis Module200Name=LDAP -Module200Desc=LDAP directory synchronization +Module200Desc=Sincronització amb un directori LDAP Module210Name=PostNuke Module210Desc=Integració amb PostNuke Module240Name=Exportacions de dades -Module240Desc=Tool to export Dolibarr data (with assistance) +Module240Desc=Eina d'exportació de dades Dolibarr (amb assistent) Module250Name=Importació de dades -Module250Desc=Tool to import data into Dolibarr (with assistance) +Module250Desc=Eina per importar dades a Dolibarr (amb assistent) Module310Name=Socis Module310Desc=Gestió de socis d'una entitat Module320Name=Fils RSS Module320Desc=Addició de fils d'informació RSS en les pantalles Dolibarr -Module330Name=Bookmarks and shortcuts -Module330Desc=Create shortcuts, always accessible, to the internal or external pages to which you frequently access -Module400Name=Projects or Leads -Module400Desc=Management of projects, leads/opportunities and/or tasks. You can also assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module330Name=Marcadors i dreceres +Module330Desc=Crear marcadors, sempre accessibles, a les pàgines internes o externes a les quals accediu sovint +Module400Name=Projectes o Oportunitats +Module400Desc=Gestió de projectes, oportunitats/leads i/o tasques. Pots asignar també qualsevol element (factura, comanda, pressupost, intervenció...) a un projecte i obtindre una vista transversal del projecte. Module410Name=Webcalendar Module410Desc=Interface amb el calendari webcalendar Module500Name=Impostos i despeses especials @@ -565,7 +565,7 @@ Module510Desc=Record and track employee payments Module520Name=Préstec Module520Desc=Gestió de préstecs Module600Name=Notificacions sobre events de negoci -Module600Desc=Send email notifications triggered by a business event, for users (setup defined on each user), third-party contacts (setup defined on each third party) or to defined emails +Module600Desc=Enviar notificacions per correu arran de cert esdeveniments a usuaris (configuració a establir per a cada usuari), a contactes de tercers (configuració a establir per a cada tercer) o a adreces fixes Module600Long=Note that this module sends emails in real-time when a specific business event occurs. If you are looking for a feature to send email reminders of agenda events, go into the setup of module Agenda. Module610Name=Variants de producte Module610Desc=Creation of product variants (color, size etc.) @@ -582,13 +582,13 @@ Module1520Desc=Generació de documents de correu massiu Module1780Name=Etiquetes Module1780Desc=Crear etiquetes/categories (productes, clients, venedors, contactes o membres) Module2000Name=Editor WYSIWYG -Module2000Desc=Allow text fields to be edited using CKEditor +Module2000Desc=Permetre que els camps de text s'editin mitjançant CKEditor Module2200Name=Multi-preus Module2200Desc=Activar l'ús d'expressions matemàtiques per als preus Module2300Name=Tasques programades Module2300Desc=Gestió de tasques programades (alias cron o taula chrono) Module2400Name=Esdeveniments/Agenda -Module2400Desc=Track events. Let Dolibarr log automatic events for tracking purposes or record manual events or meetings. This is the main module for good Customer or Supplier Relationship Management. +Module2400Desc=Seguiu els esdeveniments o cites. Permitir que Dolibarr registri esdeveniments automàtics per tal de realitzar seguiment o registri esdeveniments manuals o reunions. Aquest és el mòdul més important per a una bona gestió de relacions amb clients o proveïdors. Module2500Name=SGD / GCE Module2500Desc=Sistema de gestió de documents / Gestió de continguts electrònics. Organització automàtica dels vostres documents generats o emmagatzemats. Compartiu-los quan ho necessiteu. Module2600Name=Serveis API/WEB (servidor SOAP) @@ -598,7 +598,7 @@ Module2610Desc=Habilita el servidor REST de Dolibarr que ofereix serveis API Module2660Name=Crida a WebServices (client SOAP) Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Supplier orders currently supported.) Module2700Name=Gravatar -Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Needs Internet access +Module2700Desc=Utilitza el servei en línia de Gravatar (www.gravatar.com) per mostrar fotos dels usuaris/membres (que es troben en els seus missatges de correu electrònic). Necessita un accés a Internet Module2800Desc=Client FTP Module2900Name=GeoIPMaxmind Module2900Desc=Capacitats de conversió GeoIP Maxmind @@ -615,19 +615,19 @@ Module6000Desc=Gestió del flux de treball (creació automàtica d'objectes i / Module10000Name=Pàgines web Module10000Desc=Crear un portal web amb un editor WYSIWG. Només heu de configurar el vostre servidor web (Apache, Nginx, ...) per apuntar al directori dedicat de Dolibarr per tenir-ho publicat en línia amb el vostre propi domini. Module20000Name=Dies lliures -Module20000Desc=Declare and track employees leave requests +Module20000Desc=Gestió dels dies lliures dels empleats Module39000Name=Lots de productes Module39000Desc=Gestió de lots o series, dates de caducitat i venda dels productes Module40000Name=Multidivisa Module40000Desc=Use alternative currencies in prices and documents Module50000Name=PayBox -Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) +Module50000Desc=Ofereix als clients pagaments en línia via PayBox (targetes de crèdit/dèbit). Això pot ser usat per permetre als seus clients realitzar pagaments lliures o pagaments en un objecte de Dolibarr en particular (factura, comanda...) Module50100Name=TPV Module50100Desc=Mòdul Terminal Punt Venda (TPV) Module50150Name=Terminals Punt de Venda Module50150Desc=Point of sales module (Touch screen POS). Module50200Name=Paypal -Module50200Desc=Offer customers a PayPal online payment page (PayPal account or credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) +Module50200Desc=Ofereix als clients pagaments en línia via PayPal (targetes de crèdit/dèbit). Això pot ser usat per permetre als seus clients realitzar pagaments lliures o pagaments en un objecte de Dolibarr en particular (factura, comanda...) Module50400Name=Comptabilitat (avançat) Module50400Desc=Accounting management (double entries, support general and auxiliary ledgers). Export the ledger in several other accounting software formats. Module54000Name=PrintIPP @@ -661,9 +661,9 @@ Permission32=Crear/modificar productes Permission34=Elimina productes Permission36=Veure/gestionar els productes ocults Permission38=Exportar productes -Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) -Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks -Permission44=Delete projects (shared project and projects I'm contact for) +Permission41=Llegir projectes i tasques (projectes compartits i projectes dels que sóc contacte). També pot introduir temps consumits, per a mi o els meus subordinats, en tasques assignades (Fulls de temps). +Permission42=Crea/modifica projectes (projectes compartits i projectes dels que sóc contacte). També pot crear tasques i assignar usuaris a projectes i tasques +Permission44=Elimina projectes (projectes compartits i projectes dels que en sóc contacte) Permission45=Exporta projectes Permission61=Consulta intervencions Permission62=Crea/modifica intervencions @@ -696,7 +696,7 @@ Permission109=Eliminar expedicions Permission111=Consultar comptes financers (comptes bancaris, caixes) Permission112=Crear/modificar quantitat/eliminar registres bancaris Permission113=Configuració de comptes financers (crear i gestionar les categories) -Permission114=Reconcile transactions +Permission114=Reconcilia les transaccions Permission115=Exporta transaccions i extractes Permission116=Captar transferències entre comptes Permission117=Gestionar enviament de xecs @@ -704,15 +704,15 @@ Permission121=Consulta tercers enllaçats a usuaris Permission122=Crea/modifica tercers enllaçats a l'usuari Permission125=Elimina tercers enllaçats a l'usuari Permission126=Exporta tercers -Permission141=Read all projects and tasks (also private projects I am not a contact for) -Permission142=Create/modify all projects and tasks (also private projects I am not a contact for) +Permission141=Consulta tots els projectes i tasques (també els projectes privats dels que no sóc contacte) +Permission142=Crea/modifica tots els projectes i tasques (també projectes privats dels que no sóc el contacte) Permission144=Elimina tots els projectes i tasques (també els projectes privats dels que no sóc contacte) Permission146=Consulta proveïdors Permission147=Consulta estadístiques Permission151=Llegir domiciliacions Permission152=Crear/modificar domiciliacions Permission153=Enviar/Transmetre domiciliacions -Permission154=Record Credits/Rejections of direct debit payment orders +Permission154=Registrar Abonaments/Devolucions de domiciliacions Permission161=Consulta contractes/subscripcions Permission162=Crear/Modificar contractes/subscripcions Permission163=Activar un servei/subscripció d'un contracte @@ -735,7 +735,7 @@ Permission187=Tancar comandes a proveïdors Permission188=Anul·lar comandes a proveïdors Permission192=Crear línies Permission193=Cancel·lar línies -Permission194=Read the bandwidth lines +Permission194=Llegeix les línies d'ample de banda Permission202=Crear connexions ADSL Permission203=Realitzar comanda de connexions Permission204=Demanar connexions @@ -760,12 +760,12 @@ Permission244=Veure contingut de categories ocultes Permission251=Consultar altres usuaris PermissionAdvanced251=Consultar altres usuaris Permission252=Consultar els permisos d'altres usuaris -Permission253=Create/modify other users, groups and permissions +Permission253=Crea/modifica altres usuaris, grups i permisos PermissionAdvanced253=Crear/modificar usuaris interns/externs i els seus permisos Permission254=Crea/modifica només usuaris externs Permission255=Eliminar o desactivar altres usuaris Permission256=Consultar els seus permisos -Permission262=Extend access to all third parties (not only third parties that user is a sale representative for).
    Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
    Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262=Ampliar l'accés a tots els tercers (no sols als tercers dels quals l'usuari és comercial).
    No efectiu per a usuaris externs (sempre limitat a ells mateix per a pressupostos, comandes, factures, contractes, etc).
    No efectiu per a projectes (sols permisos de visió i asignació dels projectes). Permission271=Consultar el CA Permission272=Consultar les factures Permission273=Emetre les factures @@ -775,7 +775,7 @@ Permission283=Elimina contactes Permission286=Exporta contactes Permission291=Consultar tarifes Permission292=Indica permisos en les tarifes -Permission293=Modify customers tariffs +Permission293=Modificar les tarifes de clients Permission300=Consultar codis de barra Permission301=Crear/modificar codis de barra Permission302=Eliminar codi de barra @@ -928,35 +928,35 @@ SetupNotSaved=Configuració no desada BackToModuleList=Retornar llista de mòduls BackToDictionaryList=Back to list of Dictionaries TypeOfRevenueStamp=Tipus de segell fiscal -VATManagement=Sale Tax Management -VATIsUsedDesc=By default when creating prospects, invoices, orders etc. the Sale Tax rate follows the active standard rule:
    If the seller is not subject to Sale tax, then Sale tax defaults to 0. End of rule.
    If the (seller's country = buyer's country), then the Sale tax by default equals the Sale tax of the product in the seller's country. End of rule.
    If the seller and buyer are both in the European Community and goods are transport-related products (haulage, shipping, airline), the default Sale tax is 0. This rule is dependant on the seller's country - please consult with your accountant. The Sale tax should be paid by the buyer to their customs office in their country and not to the seller. End of rule.
    If the seller and buyer are both in the European Community and the buyer is not a company (with a registered intra-Community Sale tax number) then the Sale tax by defaults to the Sale tax of the seller's country. End of rule.
    If the seller and buyer are both in the European Community and the buyer is a company (with a registered intra-Community Sale tax number), then the Sale tax is 0 by default. End of rule.
    In any other case the proposed default is Sale tax=0. End of rule. -VATIsNotUsedDesc=By default the proposed Sale tax is 0 which can be used for cases like associations, individuals or small companies. -VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which Sale tax is declared. -VATIsNotUsedExampleFR=In France, it means associations that are non Sale tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sale tax in franchise) and paid a franchise Sale tax without any Sale tax declaration. This choice will display the reference "Non applicable Sale tax - art-293B of CGI" on invoices. +VATManagement=Gestió IVA +VATIsUsedDesc=Per defecte quan es creen pressupostos, factures, comandes, etc. el tipus d'IVA segueix la regla estàndard seleccionada:
    . Si el venedor no està subjecte a IVA, llavors IVA per defecte és 0. Final de la regla
    Si (el país del venedor = país del comprador), llavors l'IVA per defecte és igual a l'IVA del producte al país del venedor. Fi de la regla.
    Si el venedor i el comprador són de la Comunitat Europea i els béns són productes de transport (cotxe, vaixell, avió), l'IVA per defecte és 0. Aquesta regla depèn del país del venedor - si us plau consulta el teu assessor comptable. L'IVA ha de ser pagat pel comprador a la hisenda del seu país i no al venedor. Fi de la regla.
    Si el venedor i el comprador estan tots dos a la Comunitat Europea i el comprador no és una empresa (no té CIF intracomunitari), llavors l'IVA per defecte és l'IVA del país del venedor. Fi de la regla.
    Si el venedor i el comprador són de la Comunitat Europea i el comprador és una empresa (amb CIF intracomunitari), llavors l'IVA és 0 per defecte. Fi de la regla.
    En qualsevol altre cas l'IVA proposat per defecte és 0. Fi de la regla. +VATIsNotUsedDesc=El tipus d'IVA proposat per defecte és 0. Aquest és el cas d'associacions, particulars o algunes petites societats. +VATIsUsedExampleFR=A França, es tracta de les societats o organismes que trien un règim fiscal general (General simplificat o General normal). Règim en el qual es declara l'IVA. +VATIsNotUsedExampleFR=A França, es tracta d'associacions exemptes d'IVA o societats, organismes o professions liberals que han triat el règim fiscal de mòduls (IVA en franquícia), pagant un IVA en franquícia sense fer declaració d'IVA. Aquesta elecció fa aparèixer l'anotació "IVA no aplicable - art-293B del CGI" en les factures. ##### Local Taxes ##### LTRate=Tarifa LocalTax1IsNotUsed=No subjecte -LocalTax1IsUsedDesc=Use a second type of tax (other than first one) -LocalTax1IsNotUsedDesc=Do not use other type of tax (other than first one) +LocalTax1IsUsedDesc=Utilitzar un 2on tipus d'impost (diferent de l'IVA) +LocalTax1IsNotUsedDesc=No utilitzar un 2on tipus d'impost (diferent de l'IVA) LocalTax1Management=2n tipus d'impost LocalTax1IsUsedExample= LocalTax1IsNotUsedExample= LocalTax2IsNotUsed=No subjecte -LocalTax2IsUsedDesc=Use a third type of tax (other than first one) -LocalTax2IsNotUsedDesc=Do not use other type of tax (other than first one) +LocalTax2IsUsedDesc=Utilitzar un 3er tipus d'impost (diferent de l'IVA) +LocalTax2IsNotUsedDesc=No utilitzar un 3er tipus d'impost (diferent de l'IVA) LocalTax2Management=3r tipus d'impost LocalTax2IsUsedExample= LocalTax2IsNotUsedExample= LocalTax1ManagementES=Gestió Recàrrec d'Equivalència -LocalTax1IsUsedDescES=The RE rate by default when creating prospects, invoices, orders etc. follow the active standard rule:
    If the buyer is not subjected to RE, RE by default=0. End of rule.
    If the buyer is subjected to RE then the RE by default. End of rule.
    +LocalTax1IsUsedDescES=El tipus de RE proposat per defecte en les creacions de pressupostos, factures, comandes, etc. Respon a la següent regla:
    Si el comprador no està subjecte a RE, RE per defecte= 0. Final de regla.
    Si el comprador està subjecte a RE aleshores s'aplica valor de RE per defecte. Final de regla.
    LocalTax1IsNotUsedDescES=El tipus de RE proposat per defecte es 0. Final de regla. LocalTax1IsUsedExampleES=A Espanya, es tracta de persones físiques: autònoms subjectes a uns epígrafs concrets de l'IAE. LocalTax1IsNotUsedExampleES=A Espanya, es tracta d'empreses jurídiques: Societats limitades, anònimes, etc. i persones físiques (autònoms) subjectes a certs epígrafs de l'IAE. LocalTax2ManagementES=Gestió IRPF -LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices, orders etc. follow the active standard rule:
    If the seller is not subjected to IRPF, then IRPF by default=0. End of rule.
    If the seller is subjected to IRPF then the IRPF by default. End of rule.
    +LocalTax2IsUsedDescES=El tipus d'IRPF proposat per defecte en les creacions de pressupostos, factures, comandes, etc. Respon a la següent regla:
    Si el venedor no està subjecte a IRPF, IRPF per defecte= 0. Final de regla.
    Si el venedor està subjecte a IRPF aleshores s'aplica valor d'IRPF per defecte. Final de regla.
    LocalTax2IsNotUsedDescES=El tipus d'IRPF proposat per defecte es 0. Final de regla. LocalTax2IsUsedExampleES=A Espanya, es tracta de persones físiques: autònoms i professionals independents que presten serveis i empreses que han triat el règim fiscal de mòduls. -LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +LocalTax2IsNotUsedExampleES=A Espanya, es tracta d'empreses no subjectes al règim fiscal de mòduls. CalcLocaltax=Informes d'impostos locals CalcLocaltax1=Vendes - Compres CalcLocaltax1Desc=Els informes es calculen amb la diferència entre les vendes i les compres @@ -968,7 +968,7 @@ LabelUsedByDefault=Etiqueta utilitzada per defecte si no es troba cap traducció LabelOnDocuments=Etiqueta sobre documents LabelOrTranslationKey=Label or translation key ValueOfConstantKey=Value of constant -NbOfDays=No. of days +NbOfDays=Nº de dies AtEndOfMonth=A final de mes CurrentNext=Actual/Següent Offset=Decàleg @@ -994,7 +994,7 @@ DatabaseUser=Login de la base de dades DatabasePassword=Contrasenya de la base de dades Tables=Taules TableName=Nom de la taula -NbOfRecord=No. of records +NbOfRecord=Nº de registres Host=Servidor DriverType=Tipus de driver SummarySystem=Resum de la informació de sistemes Dolibarr @@ -1016,7 +1016,7 @@ DefaultLanguage=Idioma per defecte a utilitzar (codi d'idioma) EnableMultilangInterface=Activar interface multiidioma EnableShowLogo=Mostra el logotip en el menú de l'esquerra CompanyInfo=Empresa/Organització -CompanyIds=Company/Organization identities +CompanyIds=Identitats d'empresa/organització CompanyName=Nom/Raó social CompanyAddress=Adreça CompanyZip=Codi postal @@ -1031,18 +1031,18 @@ OwnerOfBankAccount=Titular del compte %s BankModuleNotActive=Mòdul comptes bancaris no activat ShowBugTrackLink=Mostra l'enllaç "%s" Alerts=Alertes -DelaysOfToleranceBeforeWarning=Delays before displaying an alert warning -DelaysOfToleranceDesc=This screen allows you to define the delay before an alert is reported onscreen with a %s icon for each late element. -Delays_MAIN_DELAY_ACTIONS_TODO=Delay (in days) before alert on planned events (agenda events) not completed yet +DelaysOfToleranceBeforeWarning=Terminis de tolerància abans d'alerta +DelaysOfToleranceDesc=Aquesta pantalla permet configura els terminis de tolerància abans que s'alerti amb el símbol %s, sobre cada element en retard. +Delays_MAIN_DELAY_ACTIONS_TODO=Retard (en dies) sobre esdeveniments planificats (esdeveniments de l'agenda) encara no completats Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Delay (in days) before alert on project not closed in time Delays_MAIN_DELAY_TASKS_TODO=Delay (in days) before alert on planned tasks (project tasks) not completed yet -Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay (in days) before alert on orders not processed yet -Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Delay (in days) before alert on purchase orders not processed yet -Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay (in days) before alert on proposals to close -Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay (in days) before alert on proposals not billed -Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Delay (in days) before alert on services to activate -Delays_MAIN_DELAY_RUNNING_SERVICES=Delay (in days) before alert on expired services -Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Delay (in days) before alert on unpaid supplier invoices +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Retard abans de l'alerta (en dies) sobre comandes no processades +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Retard abans de l'alerta (en dies) sobre comandes de proveïdor no processades +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Retard abans de l'alerta (en dies) sobre pressupostos a tancar +Delays_MAIN_DELAY_PROPALS_TO_BILL=Retard abans de l'alerta (en dies) sobre pressupostos no facturats +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Retard abans de l'alerta (en dies) sobre serveis a activar +Delays_MAIN_DELAY_RUNNING_SERVICES=Retard abans de l'alerta (en dies) sobre serveis expirats +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Retard abans de l'alerta (en dies) sobre factures de proveïdor impagades Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Delay (in days) before alert on unpaid client invoices Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Delay (in days) before alert on pending bank reconciliation Delays_MAIN_DELAY_MEMBERS=Delay (in days) before alert on delayed membership fee @@ -1052,9 +1052,9 @@ SetupDescription1=Before starting to use Dolibarr some initial parameters must b SetupDescription2=The mandatory setup steps are the 2 first steps in the Setup menu, namely : SetupDescription3=%s -> %s
    Basic parameters used to customize the default behavior of Dolibarr (e.g for country-related features). SetupDescription4=%s -> %s
    Dolibarr ERP/CRM is a collection of many modules/applications, all more or less independent. The modules relevant to your needs must be enabled and configured. New items/options are added to menus with the activation of a module. -SetupDescription5=Other Setup menu entries provides optional parameters. +SetupDescription5=Altres entrades del menú de configuració proporcionen paràmetres opcionals. LogEvents=Auditoria de la seguretat d'esdeveniments -Audit=Security events +Audit=Esdeveniments de seguretat InfoDolibarr=Sobre Dolibarr InfoBrowser=Sobre el Navegador InfoOS=Sobre S.O. @@ -1118,10 +1118,10 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Ha d'executar la comanda des d' YourPHPDoesNotHaveSSLSupport=Funcions SSL no disponibles al vostre PHP DownloadMoreSkins=Més temes per descarregar SimpleNumRefModelDesc=Retorna el nombre sota el format %syymm-nnnn on yy és l'any, mm el mes i nnnn un comptador seqüencial sense ruptura i sense tornar a 0 -ShowProfIdInAddress=Show professional id with addresses on documents +ShowProfIdInAddress=Mostra l'id professional amb adreces en els documents ShowVATIntaInAddress=Hide intra-Community VAT number with addresses on documents TranslationUncomplete=Traducció parcial -MAIN_DISABLE_METEO=Disable meteorological view +MAIN_DISABLE_METEO=Desactiva la visualització meteorològica MeteoStdMod=Mode estàndard MeteoStdModEnabled=Mode estàndard habilitat MeteoPercentageMod=Mode percentual @@ -1212,7 +1212,7 @@ NotificationsDesc=La funció de les notificacions permet enviar automàticament NotificationsDescUser=* per usuaris, un usuari cada vegada NotificationsDescContact=* per contactes de tercers (clients o proveïdors), un contacte cada vegada NotificationsDescGlobal=* o definint un destí global de correu electrònic en la pàgina de configuració del mòdul -ModelModules=Document Templates +ModelModules=Plantilles de documents DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Marca d'aigua en els documents esborrany JSOnPaimentBill=Activar funció per autocompletar les línies de pagament a les entrades de pagament @@ -1373,8 +1373,8 @@ LDAPFieldLoginSamba=Login (samba, activedirectory) LDAPFieldLoginSambaExample=Exemple : samaccountname LDAPFieldFullname=Nom complet LDAPFieldFullnameExample=Exemple : cn -LDAPFieldPasswordNotCrypted=Password not encrypted -LDAPFieldPasswordCrypted=Password encrypted +LDAPFieldPasswordNotCrypted=Contrasenya no encriptada +LDAPFieldPasswordCrypted=Contrasenya encriptada LDAPFieldPasswordExample=Exemple : userPassword LDAPFieldCommonNameExample=Exemple : cn LDAPFieldName=Nom diff --git a/htdocs/langs/ca_ES/agenda.lang b/htdocs/langs/ca_ES/agenda.lang index c82c124e0f5..edcf0e8063c 100644 --- a/htdocs/langs/ca_ES/agenda.lang +++ b/htdocs/langs/ca_ES/agenda.lang @@ -31,14 +31,15 @@ ViewWeek=Vista setmanal ViewPerUser=Vista d'usuaris ViewPerType=Vista per tipus AutoActions= Inclusió automàtica a l'agenda -AgendaAutoActionDesc= Defineix aqui els esdeveniments pels que vols que Dolibarr crei automàticament un esdeveniment en l'agenda. Si no hi ha res seleccionat, només les accions manuals s'inclouran registrades i visibles en l'agenda. El registre automàtic d'accions de negoci fetes pels objectes (validació, canvi d'estat) no es desaran. -AgendaSetupOtherDesc= Aquesta pàgina permet configurar algunes opcions que permeten exportar una vista de la seva agenda Dolibar a un calendari extern (thunderbird, google calendar, ...) +AgendaAutoActionDesc= Aquí pots definir esdeveniments que vols que Dolibarr creï automàticament a Agenda. Si no hi ha res comprovat, només s'inclouran les accions manuals als registres i es mostraran a Agenda. El seguiment automàtic de les accions empresarials realitzades en objectes (validació, canvi d'estat) no es desarà. +AgendaSetupOtherDesc= Aquesta pàgina ofereix opcions per permetre l'exportació dels teus esdeveniments Dolibarr a un calendari extern (thunderbird, google calendar, ...) AgendaExtSitesDesc=Aquesta pàgina permet configurar calendaris externs per a la seva visualització en l'agenda de Dolibarr. ActionsEvents=Esdeveniments per a què Dolibarr crei una acció de forma automàtica -EventRemindersByEmailNotEnabled=Els recordatoris d'esdeveniments per correu electrònic no estaven habilitats en la configuració del mòdul d'Agenda. +EventRemindersByEmailNotEnabled=Els recordatoris d'esdeveniments per correu electrònic no estaven habilitats en la configuració del mòdul %s. ##### Agenda event labels ##### NewCompanyToDolibarr=Tercer %s creat ContractValidatedInDolibarr=Contracte %s validat +CONTRACT_DELETEInDolibarr=Contracte %s eliminat PropalClosedSignedInDolibarr=Pressupost %s firmat PropalClosedRefusedInDolibarr=Pressupost %s rebutjat PropalValidatedInDolibarr=Pressupost %s validat @@ -53,9 +54,9 @@ MemberValidatedInDolibarr=Soci %s validat MemberModifiedInDolibarr=Soci %s modificat MemberResiliatedInDolibarr=Membre %s acabat MemberDeletedInDolibarr=Soci %s eliminat -MemberSubscriptionAddedInDolibarr=Subscription %s for member %s added -MemberSubscriptionModifiedInDolibarr=Subscription %s for member %s modified -MemberSubscriptionDeletedInDolibarr=Subscription %s for member %s deleted +MemberSubscriptionAddedInDolibarr=Subscripció %s per a membre %s, afegida +MemberSubscriptionModifiedInDolibarr=Subscripció %s per a membre %s, modificada +MemberSubscriptionDeletedInDolibarr=Subscripció %s per a membre %s, eliminada ShipmentValidatedInDolibarr=Expedició %s validada ShipmentClassifyClosedInDolibarr=Expedició %s classificada com a facturada ShipmentUnClassifyCloseddInDolibarr=Expedició %s classificada com a reoberta @@ -100,7 +101,7 @@ AgendaUrlOptions3=logina=%s ​​per a restringir insercions a les accio AgendaUrlOptionsNotAdmin=logina=!%s ​​per a restringir la producció d'accions que no pertanyen a l'usuari %s. AgendaUrlOptions4=logint=%s per a restringir la producció d'accions assignades a l'usuari %s (propietari i altres). AgendaUrlOptionsProject=project=PROJECT_ID per a restringir la sortida d'accions associades al projecta PROJECT_ID. -AgendaUrlOptionsNotAutoEvent=notactiontype = systemauto per excloure l'acció automàtica. +AgendaUrlOptionsNotAutoEvent=notactiontype=systemauto per excloure esdeveniments automàtics. AgendaShowBirthdayEvents=Mostra aniversaris dels contactes AgendaHideBirthdayEvents=Oculta aniversaris dels contactes Busy=Ocupat @@ -110,9 +111,9 @@ DefaultWorkingHours=Hores de treball per defecte durant el dia (Exemple: 9-18) # External Sites ical ExportCal=Exportar calendari ExtSites=Calendaris externs -ExtSitesEnableThisTool=Mostrar calendaris externs (definint a la configuració global) a l'agenda. No afecta als calendaris externs definits per l'usuari +ExtSitesEnableThisTool=Mostra calendaris externs (definit a la configuració global) a Agenda. No afecta els calendaris externs definits pels usuaris. ExtSitesNbOfAgenda=Nombre de calendaris -AgendaExtNb=Calendar no. %s +AgendaExtNb=Calendari núm. %s ExtSiteUrlAgenda=Url d'accés a l'arxiu. ical ExtSiteNoLabel=Sense descripció VisibleTimeRange=Rang de temps visible diff --git a/htdocs/langs/ca_ES/banks.lang b/htdocs/langs/ca_ES/banks.lang index 67e20cea355..410fb07e2e5 100644 --- a/htdocs/langs/ca_ES/banks.lang +++ b/htdocs/langs/ca_ES/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Afegir pagaments extres SEPAMandate=Mandat SEPA YourSEPAMandate=La vostra ordre SEPA FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/ca_ES/bills.lang b/htdocs/langs/ca_ES/bills.lang index 397fccfafcc..9e6291ef975 100644 --- a/htdocs/langs/ca_ES/bills.lang +++ b/htdocs/langs/ca_ES/bills.lang @@ -201,8 +201,8 @@ ConfirmSupplierPayment=Confirmes aquesta entrada de pagament per a %s %s? ConfirmValidatePayment=Estàs segur que vols validar aquest pagament? No es poden fer canvis un cop el pagament s'ha validat. ValidateBill=Validar factura UnvalidateBill=Tornar factura a esborrany -NumberOfBills=No. of invoices -NumberOfBillsByMonth=No. of invoices per month +NumberOfBills=Nº de factures +NumberOfBillsByMonth=Nº de factures per mes AmountOfBills=Import de les factures AmountOfBillsHT=Amount of invoices (net of tax) AmountOfBillsByMonthHT=Import de les factures per mes (Sense IVA) @@ -262,9 +262,9 @@ Repeatables=Recurrents ChangeIntoRepeatableInvoice=Convertir en recurrent CreateRepeatableInvoice=Crear factura recurrent CreateFromRepeatableInvoice=Crear des de factura recurrent -CustomersInvoicesAndInvoiceLines=Customer invoices and invoice details +CustomersInvoicesAndInvoiceLines=Factures del client i detalls de la factura CustomersInvoicesAndPayments=Factures a clients i cobraments -ExportDataset_invoice_1=Customer invoices and invoice details +ExportDataset_invoice_1=Factures del client i detalls de la factura ExportDataset_invoice_2=Factures a clients i cobraments ProformaBill=Factura proforma: Reduction=Reducció @@ -324,7 +324,7 @@ CloneInvoice=Clonar factura ConfirmCloneInvoice=Vols clonar aquesta factura %s? DisabledBecauseReplacedInvoice=Acció desactivada perquè és una factura reemplaçada DescTaxAndDividendsArea=Aquesta pantalla resumeix la llista de tots els impostos i les càrregues socials exigides per a un any determinat. La data presa en compte és el període de pagament. -NbOfPayments=No. of payments +NbOfPayments=Nº de pagaments SplitDiscount=Dividir el dte. en dos ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into 2 smaller discounts? TypeAmountOfEachNewDiscount=Input amount for each of two parts: @@ -410,8 +410,8 @@ PaymentTypeCHQ=Xec PaymentTypeShortCHQ=Xec PaymentTypeTIP=TIP (Documents contra pagament) PaymentTypeShortTIP=Pagament TIP -PaymentTypeVAD=Online payment -PaymentTypeShortVAD=Online payment +PaymentTypeVAD=Pagament en línia +PaymentTypeShortVAD=Pagament en línia PaymentTypeTRA=Banc esborrany PaymentTypeShortTRA=Esborrany PaymentTypeFAC=Factor diff --git a/htdocs/langs/ca_ES/boxes.lang b/htdocs/langs/ca_ES/boxes.lang index cfb78cb1457..58eb339e45f 100644 --- a/htdocs/langs/ca_ES/boxes.lang +++ b/htdocs/langs/ca_ES/boxes.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - boxes -BoxLoginInformation=Informació de inici de sessió +BoxLoginInformation=Informació d'inici de sessió BoxLastRssInfos=Informació RSS BoxLastProducts=Últims %s productes/serveis BoxProductsAlertStock=Alertes d'estoc per a productes @@ -20,22 +20,22 @@ BoxLastMembers=Últims socis BoxFicheInter=Últimes intervencions BoxCurrentAccounts=Balanç de comptes oberts BoxTitleLastRssInfos=Últimes %s notícies de %s -BoxTitleLastProducts=Últims %s productes/serveis modificats -BoxTitleProductsAlertStock=Productes en alerta d'estoc +BoxTitleLastProducts=Products/Services: latest %s modified +BoxTitleProductsAlertStock=Productes: alerta d'estoc BoxTitleLastSuppliers=Últims %s proveïdors registrats -BoxTitleLastModifiedSuppliers=Últims %s proveïdors modificats +BoxTitleLastModifiedSuppliers=Latest %s modified vendors BoxTitleLastModifiedCustomers=Últims %s clients modificats BoxTitleLastCustomersOrProspects=Últims %s clients o clients potencials -BoxTitleLastCustomerBills=Últimes %s factures de client -BoxTitleLastSupplierBills=Últimes %s factures de proveïdor +BoxTitleLastCustomerBills=Latest %s modified customer invoices +BoxTitleLastSupplierBills=Latest %s modified vendor invoices BoxTitleLastModifiedProspects=Últims %s clients potencials modificats -BoxTitleLastModifiedMembers=Últims %s socis +BoxTitleLastModifiedMembers=Últims %s socis modificats BoxTitleLastFicheInter=Últimes %s intervencions modificades -BoxTitleOldestUnpaidCustomerBills=Les %s factures més antigues a clients pendents de cobrament -BoxTitleOldestUnpaidSupplierBills=Les %s factures més antigues de proveïdors pendents de pagament -BoxTitleCurrentAccounts=Balanços de comptes oberts -BoxTitleLastModifiedContacts=Últims %s contactes/adreces -BoxMyLastBookmarks=Els meus últims %s marcadors +BoxTitleOldestUnpaidCustomerBills=Customer Invoices: oldest %s unpaid +BoxTitleOldestUnpaidSupplierBills=Supplier Invoices: oldest %s unpaid +BoxTitleCurrentAccounts=Open Accounts: balances +BoxTitleLastModifiedContacts=Contacts/Addresses: latest %s modified +BoxMyLastBookmarks=Bookmarks: latest %s modified BoxOldestExpiredServices=Serveis antics expirats BoxLastExpiredServices=Últims %s contactes amb serveis actius expirats BoxTitleLastActionsToDo=Últims %s events a realitzar @@ -45,7 +45,7 @@ BoxTitleLastModifiedExpenses=Últimes %s despeses modificades BoxGlobalActivity=Activitat global BoxGoodCustomers=Bons clients BoxTitleGoodCustomers=% bons clients -FailedToRefreshDataInfoNotUpToDate=Error al refrescar el fil RSS. L'última vegada que es refrescà correctament va ser: %s +FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Latest successful refresh date: %s LastRefreshDate=Última data que es va refrescar NoRecordedBookmarks=No hi ha marcadors personals. ClickToAdd=Faci clic aquí per afegir. @@ -65,17 +65,17 @@ NoRecordedContracts=Sense contractes registrats NoRecordedInterventions=No hi ha intervencions registrades BoxLatestSupplierOrders=Últimes comandes a proveïdors NoSupplierOrder=Sense comandes a proveïdors -BoxCustomersInvoicesPerMonth=Factures a clients per mes -BoxSuppliersInvoicesPerMonth=Factures de proveïdors per mes -BoxCustomersOrdersPerMonth=Comandes de clients per mes -BoxSuppliersOrdersPerMonth=Comandes a proveïdors per mes +BoxCustomersInvoicesPerMonth=Customer Invoices per month +BoxSuppliersInvoicesPerMonth=Supplier Invoices per month +BoxCustomersOrdersPerMonth=Customer Orders per month +BoxSuppliersOrdersPerMonth=Supplier Orders per month BoxProposalsPerMonth=Pressupostos per mes -NoTooLowStockProducts=Sense productes per sota de l'estoc mínim -BoxProductDistribution=Distribució de productes/serveis -BoxProductDistributionFor=Distribució de %s per %s -BoxTitleLastModifiedSupplierBills=Últimes %s factures de proveïdor modificades -BoxTitleLatestModifiedSupplierOrders=Últimes %s comandes de proveïdor modificades -BoxTitleLastModifiedCustomerBills=Últimes %s factures de client modificades +NoTooLowStockProducts=No products are under the low stock limit +BoxProductDistribution=Products/Services Distribution +BoxProductDistributionFor=Distribution of %s by %s +BoxTitleLastModifiedSupplierBills=Latest %s modified vendors invoices +BoxTitleLatestModifiedSupplierOrders=Last %s modified purchase orders +BoxTitleLastModifiedCustomerBills=Latest %s modified customers invoices BoxTitleLastModifiedCustomerOrders=Últimes %s comandes de client modificades BoxTitleLastModifiedPropals=Últims %s pressupostos modificats ForCustomersInvoices=Factures a clientes diff --git a/htdocs/langs/ca_ES/cashdesk.lang b/htdocs/langs/ca_ES/cashdesk.lang index 2f99c50625f..a0636abd90c 100644 --- a/htdocs/langs/ca_ES/cashdesk.lang +++ b/htdocs/langs/ca_ES/cashdesk.lang @@ -30,15 +30,15 @@ ShowCompany=Veure empresa ShowStock=Veure magatzem DeleteArticle=Feu clic per treure aquest article FilterRefOrLabelOrBC=Cerca (Ref/Etiq.) -UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that uses POS needs to have permission to edit stock. +UserNeedPermissionToEditStockToUsePos=Es demana disminuir l'estoc en la creació de la factura, de manera que l'usuari que utilitza el TPV ha de tenir permís per editar l'estoc. DolibarrReceiptPrinter=Impressora de tickets de Dolibarr PointOfSale=Terminals Punt de Venda -PointOfSaleShort=POS -CloseBill=Close Bill -Floors=Floors -Floor=Floor -AddTable=Add table -Place=Place -TakeposConnectorNecesary='TakePOS Connector' required -OrderPrinters=Order printers -SearchProduct=Search product +PointOfSaleShort=TPV +CloseBill=Tanca el compte +Floors=Sales +Floor=Sala +AddTable=Afegeix taula +Place=Lloc +TakeposConnectorNecesary=Es requereix el 'connector TakePOS' +OrderPrinters=Impressores de comandes +SearchProduct=Cerca producte diff --git a/htdocs/langs/ca_ES/categories.lang b/htdocs/langs/ca_ES/categories.lang index c917e4e1a52..aafb8cee62d 100644 --- a/htdocs/langs/ca_ES/categories.lang +++ b/htdocs/langs/ca_ES/categories.lang @@ -16,6 +16,7 @@ MembersCategoriesArea=Àrea d'etiquetes de socis ContactsCategoriesArea=Àrea d'etiquetes de contactes AccountsCategoriesArea=Àrea d'etiquetes de comptes ProjectsCategoriesArea=Àrea d'etiquetes de projectes +UsersCategoriesArea=Àrea d'etiquetes d'usuaris SubCats=Subcategories CatList=Llistat d'etiquetes NewCategory=Nova etiqueta @@ -60,6 +61,7 @@ MembersCategoriesShort=Etiquetes de socis ContactCategoriesShort=Etiquetes de contactes AccountsCategoriesShort=Etiquetes de comptes ProjectsCategoriesShort=Etiquetes de projectes +UsersCategoriesShort=Etiquetes d'usuaris ThisCategoryHasNoProduct=Aquesta categoria no conté cap producte. ThisCategoryHasNoSupplier=Aquesta categoria no conté cap proveïdor. ThisCategoryHasNoCustomer=Aquesta categoria no conté cap client. diff --git a/htdocs/langs/ca_ES/companies.lang b/htdocs/langs/ca_ES/companies.lang index 4ab31fa0e46..6b7b230b74e 100644 --- a/htdocs/langs/ca_ES/companies.lang +++ b/htdocs/langs/ca_ES/companies.lang @@ -5,10 +5,10 @@ SelectThirdParty=Seleccionar un tercer ConfirmDeleteCompany=Esteu segur de voler eliminar aquesta empresa i tota la informació dependent? DeleteContact=Eliminar un contacte ConfirmDeleteContact=Esteu segur de voler eliminar aquest contacte i tota la seva informació dependent? -MenuNewThirdParty=New Third Party -MenuNewCustomer=New Customer -MenuNewProspect=New Prospect -MenuNewSupplier=New Vendor +MenuNewThirdParty=Nou tercer +MenuNewCustomer=Nou client +MenuNewProspect=Nou client potencial +MenuNewSupplier=Nou proveïdor MenuNewPrivateIndividual=Nou particular NewCompany=Nova empresa (client potencial, client, proveïdor) NewThirdParty=New Third Party (prospect, customer, vendor) @@ -28,17 +28,17 @@ AliasNames=Àlies (nom comercial, marca, ...) AliasNameShort=Nom comercial Companies=Empreses CountryIsInEEC=Country is inside the European Economic Community -ThirdPartyName=Third Party Name +ThirdPartyName=Nom del tercer ThirdPartyEmail=Correu electrònic del tercer -ThirdParty=Third Party -ThirdParties=Third Parties +ThirdParty=Tercer +ThirdParties=Tercers ThirdPartyProspects=Clients potencials ThirdPartyProspectsStats=Clients potencials ThirdPartyCustomers=Clients ThirdPartyCustomersStats=Clients ThirdPartyCustomersWithIdProf12=Clients amb %s o %s ThirdPartySuppliers=Proveïdors -ThirdPartyType=Type of company +ThirdPartyType=Tipus d'empresa Individual=Particular ToCreateContactWithSameName=Will create a Third Party and a linked Contact/Address with same information as the Third Party. In most cases, even if your Third Party is a physical person, creating a Third Party alone is enough. ParentCompany=Seu Central @@ -75,7 +75,7 @@ Zip=Codi postal Town=Població Web=Web Poste= Càrrec -DefaultLang=Language default +DefaultLang=Idioma per defecte VATIsUsed=Sales tax used VATIsUsedWhenSelling=This defines if this third party includes a sale tax or not when it makes an invoice to its own customers VATIsNotUsed=IVA no està utilitzant-se @@ -312,13 +312,13 @@ SupplierCodeDesc=Vendor Code, unique for all vendors RequiredIfCustomer=Requerida si el tercer és un client o client potencial RequiredIfSupplier=Obligatori si un tercer és proveïdor ValidityControledByModule=Validity controlled by module -ThisIsModuleRules=Rules for this module +ThisIsModuleRules=Regles per a aquest mòdul ProspectToContact=Client potencial a contactar CompanyDeleted=L'empresa "%s" ha estat eliminada ListOfContacts=Llistat de contactes ListOfContactsAddresses=Llistat de contactes -ListOfThirdParties=List of Third Parties -ShowCompany=Show Third Party +ListOfThirdParties=Llista de tercers +ShowCompany=Mostra el tercer ShowContact=Mostrar contacte ContactsAllShort=Tots (sense filtre) ContactType=Tipus de contacte @@ -333,7 +333,7 @@ NoContactForAnyProposal=Aquest contacte no és contacte de cap pressupost NoContactForAnyContract=Aquest contacte no és contacte de cap contracte NoContactForAnyInvoice=Aquest contacte no és contacte de cap factura NewContact=Nou contacte -NewContactAddress=New Contact/Address +NewContactAddress=Nou contacte/adreça MyContacts=Els meus contactes Capital=Capital CapitalOf=Capital de %s @@ -346,7 +346,7 @@ VATIntraCheckableOnEUSite=Check intra-Community VAT on the European Commission w VATIntraManualCheck=You can also check manually on the European Commission website %s ErrorVATCheckMS_UNAVAILABLE=Comprovació impossible. El servei de comprovació no és prestat pel país membre (%s). NorProspectNorCustomer=Not prospect, or customer -JuridicalStatus=Legal Entity Type +JuridicalStatus=Tipus d'entitat legal Staff=Empleats ProspectLevelShort=Potencial ProspectLevel=Nivell de client potencial diff --git a/htdocs/langs/ca_ES/contracts.lang b/htdocs/langs/ca_ES/contracts.lang index c4dec160abc..d032d8f8ca1 100644 --- a/htdocs/langs/ca_ES/contracts.lang +++ b/htdocs/langs/ca_ES/contracts.lang @@ -67,7 +67,7 @@ CloseService=Finalitzar servei BoardRunningServices=Serveis actius expirats ServiceStatus=Estat del servei DraftContracts=Contractes esborrany -CloseRefusedBecauseOneServiceActive=El contracte no pot ser tancat ja que conté almenys un servei obert. +CloseRefusedBecauseOneServiceActive=El contracte no es pot tancar ja que almenys hi ha un servei obert ActivateAllContracts=Activar totes les línies de contracte CloseAllContracts=Tancar tots els serveis DeleteContractLine=Eliminar línia de contracte @@ -89,6 +89,7 @@ CloneContract=Clona el contracte ConfirmCloneContract=Are you sure you want to clone the contract %s? LowerDateEndPlannedShort=Baixa data de finalització planificada dels serveis actius SendContractRef=Informació del contracte __REF__ +OtherContracts=Altres contractes ##### Types de contacts ##### TypeContact_contrat_internal_SALESREPSIGN=Agent comercial signant del contracte TypeContact_contrat_internal_SALESREPFOLL=Agent comercial del seguiment del contracte diff --git a/htdocs/langs/ca_ES/cron.lang b/htdocs/langs/ca_ES/cron.lang index 243a8302d80..4eca72bb589 100644 --- a/htdocs/langs/ca_ES/cron.lang +++ b/htdocs/langs/ca_ES/cron.lang @@ -6,13 +6,13 @@ Permission23102 = Crea/modifica la tasca programada Permission23103 = Elimina la tasca programada Permission23104 = Executa les tasques programades # Admin -CronSetup= Pàgina de configuració del mòdul - Gestió de tasques planificades +CronSetup=Pàgina de configuració del mòdul - Gestió de tasques planificades URLToLaunchCronJobs=URL per comprovar i posar en marxa les tasques automàtiques qualificades OrToLaunchASpecificJob=O per llançar una tasca específica KeyForCronAccess=Codi de seguretat per a la URL de llançament de tasques automàtiques FileToLaunchCronJobs=Línia de comando per verificar i executar tasques cron qualificades CronExplainHowToRunUnix=A entorns Unix s'ha d'utilitzar la següent entrada crontab per executar la comanda cada 5 minuts -CronExplainHowToRunWin=En entorns Microsoft (tm) Windows, pot utilitzar l'eina 'tareas programadas' per executar la comanda cada 5 minuts +CronExplainHowToRunWin=On Microsoft(tm) Windows environment you can use Scheduled Task tools to run the command line each 5 minutes CronMethodDoesNotExists=La classe %s no conté cap mètode %s CronJobDefDesc=Els perfils de tasques programades es defineixen a la fitxa del mòdul descriptor. Quan s'activa el mòdul, es carreguen i estan disponibles per poder administrar les tasques des del menú d'eines d'administració %s. CronJobProfiles=Llista de perfils predefinits de tasques programades @@ -43,11 +43,7 @@ CronNoJobs=Sense treballs actualment CronPriority=Prioritat CronLabel=Etiqueta CronNbRun=Nº execucions -<<<<<<< HEAD -CronMaxRun=Max number launch -======= CronMaxRun=Número màxim d'execucions ->>>>>>> branch '7.0' of git@github.com:Dolibarr/dolibarr.git CronEach=Tota (s) JobFinished=Tasques llançades i finalitzades #Page card @@ -65,11 +61,11 @@ CronStatusInactiveBtn=Desactivar CronTaskInactive=Aquesta tasca es troba desactivada CronId=Id CronClassFile=Filename with class -CronModuleHelp=Nom del directori del mòdul de Dolibarr (també funciona amb mòduls externs).
    Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor pel mòdul és product -CronClassFileHelp=La ruta relativa i el nom del fitxer a carregar (la ruta és relativa al directori arrel del servidor web).
    Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor del nom del fitxer de classe és product/class/product.class.php -CronObjectHelp=El nom de l'objecte a carregar.
    Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor pel nom del fitxer de classe és Product -CronMethodHelp=El mètode d'objecte a cridar.
    Per exemple, per cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor pel mètode és fetch -CronArgsHelp=Els arguments del mètode.
    Per exemple, cridar al mètode "fetch" de l'objecte Producte de Dolibarr /htdocs/product/class/product.class.php, el valor dels paràmetres pot ser
    0, ProductRef +CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
    For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for module is
    product +CronClassFileHelp=The relative path and file name to load (path is relative to web server root directory).
    For example to call the fetch method of Dolibarr Product object htdocs/product/class/product.class.php, the value for class file name is
    product/class/product.class.php +CronObjectHelp=The object name to load.
    For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for class file name is
    Product +CronMethodHelp=The object method to launch.
    For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for method is
    fetch +CronArgsHelp=The method arguments.
    For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for paramters can be
    0, ProductRef CronCommandHelp=El comando del sistema a executar CronCreateJob=Crear nova tasca programada CronFrom=De @@ -83,5 +79,5 @@ CronCannotLoadObject=El "class file" %s s'ha carregat, però l'objecte %s no s'h UseMenuModuleToolsToAddCronJobs=Ves a menú "Inici - Utilitats de sistema - Tasques programades" per veure i editar les tasques programades. JobDisabled=Tasca desactivada MakeLocalDatabaseDumpShort=Còpia de seguretat de la base de dades local -MakeLocalDatabaseDump=Create a local database dump. Parameters are: compression ('gz' or 'bz' or 'none'), backup type ('mysql' or 'pgsql'), 1, 'auto' or filename to build, number of backup files to keep +MakeLocalDatabaseDump=Create a local database dump. Parameters are: compression ('gz' or 'bz' or 'none'), backup type ('mysql', 'pgsql', 'auto'), 1, 'auto' or filename to build, number of backup files to keep WarningCronDelayed=Attention, for performance purpose, whatever is next date of execution of enabled jobs, your jobs may be delayed to a maximum of %s hours, before being run. diff --git a/htdocs/langs/ca_ES/deliveries.lang b/htdocs/langs/ca_ES/deliveries.lang index 30b75552453..ccf1f7fdd97 100644 --- a/htdocs/langs/ca_ES/deliveries.lang +++ b/htdocs/langs/ca_ES/deliveries.lang @@ -28,3 +28,4 @@ ErrorStockIsNotEnough=No hi ha estoc suficient Shippable=Es pot enviar NonShippable=No es pot enviar ShowReceiving=Mostra el rebut d'entrega +NonExistentOrder=Comanda inexistent diff --git a/htdocs/langs/ca_ES/dict.lang b/htdocs/langs/ca_ES/dict.lang index e3442e2863d..e135ad8eac8 100644 --- a/htdocs/langs/ca_ES/dict.lang +++ b/htdocs/langs/ca_ES/dict.lang @@ -306,7 +306,7 @@ DemandReasonTypeSRC_WOM=Boca a boca DemandReasonTypeSRC_PARTNER=Soci DemandReasonTypeSRC_EMPLOYEE=Empleat DemandReasonTypeSRC_SPONSORING=Patrocinador -DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +DemandReasonTypeSRC_SRC_CUSTOMER=Contacte entrant d'un client #### Paper formats #### PaperFormatEU4A0=Format 4A0 PaperFormatEU2A0=Format 2A0 diff --git a/htdocs/langs/ca_ES/ecm.lang b/htdocs/langs/ca_ES/ecm.lang index 26cdb779153..5bf344575a3 100644 --- a/htdocs/langs/ca_ES/ecm.lang +++ b/htdocs/langs/ca_ES/ecm.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - ecm -ECMNbOfDocs=No. of documents in directory +ECMNbOfDocs=Nº de documents en el directori ECMSection=Carpeta ECMSectionManual=Carpeta manual ECMSectionAuto=Carpeta automàtica diff --git a/htdocs/langs/ca_ES/products.lang b/htdocs/langs/ca_ES/products.lang index 5b14fd39672..85ecc84693f 100644 --- a/htdocs/langs/ca_ES/products.lang +++ b/htdocs/langs/ca_ES/products.lang @@ -17,12 +17,12 @@ Reference=Referència NewProduct=Nou producte NewService=Nou servei ProductVatMassChange=Canvi d'IVA massiu -ProductVatMassChangeDesc=Pot utilitzar aquesta pàgina per modificar la tassa d'IVA definida en els productes o serveis d'un valor a un altre. Atenció, ja aquest canvi es realitzara en tota la base de dades. +ProductVatMassChangeDesc=Aquesta pàgina es pot utilitzar per modificar un tipus d'IVA definit en productes o serveis d'un valor a un altre. Avís, aquest canvi és global / fet a tota la base de dades. MassBarcodeInit=Inicialització massiu de codis de barres MassBarcodeInitDesc=Pot utilitzar aquesta pàgina per inicialitzar el codi de barres en els objectes que no tenen un codi de barres definit. Comprovi abans que el mòdul de codis de barres estar ben configurat ProductAccountancyBuyCode=Codi comptable (compra) ProductAccountancySellCode=Codi comptable (venda) -ProductAccountancySellIntraCode=Codi comptable (venda intracomunitària) +ProductAccountancySellIntraCode=Codi de comptabilitat (venda intracomunitària) ProductAccountancySellExportCode=Codi comptable (exportació de venda) ProductOrService=Producte o servei ProductsAndServices=Productes i serveis @@ -97,8 +97,8 @@ NoteNotVisibleOnBill=Nota (no visible en les factures, pressupostos, etc.) ServiceLimitedDuration=Si el servei és de durada limitada: MultiPricesAbility=Diversos nivells de preus per producte/servei (cada client està en un nivell) MultiPricesNumPrices=Nº de preus -AssociatedProductsAbility=Activa la característica per gestionar productes virtuals -AssociatedProducts=Productes compostos +AssociatedProductsAbility=Activa els productes virtuals (kits) +AssociatedProducts=Productes virtuals AssociatedProductsNumber=Nº de productes que composen aquest producte ParentProductsNumber=Nº de productes que aquest compon ParentProducts=Productes pare @@ -115,7 +115,7 @@ ErrorAssociationIsFatherOfThis=Un dels productes seleccionats és pare del produ DeleteProduct=Eliminar un producte/servei ConfirmDeleteProduct=Esteu segur de voler eliminar aquest producte/servei? ProductDeleted=El producte/servei "%s" s'ha eliminat de la base de dades. -ExportDataset_produit_1=Productes i serveis +ExportDataset_produit_1=Productes ExportDataset_service_1=Serveis ImportDataset_produit_1=Productes ImportDataset_service_1=Serveis @@ -134,7 +134,7 @@ PredefinedServicesToSell=Serveis predefinits per vendre PredefinedProductsAndServicesToSell=Productes/serveis predefinits per vendre PredefinedProductsToPurchase=Producte predefinit per comprar PredefinedServicesToPurchase=Serveis predefinits per comprar -PredefinedProductsAndServicesToPurchase=Productes/serveis predefinits per comprar +PredefinedProductsAndServicesToPurchase=Productes / serveis predefinits per comprar NotPredefinedProducts=Sense productes/serveis predefinits GenerateThumb=Generar l'etiqueta ServiceNb=Servei nº %s @@ -145,7 +145,7 @@ Finished=Producte fabricat RowMaterial=Matèria prima CloneProduct=Clonar producte/servei ConfirmCloneProduct=Estàs segur que vols clonar el producte o servei %s? -CloneContentProduct=Clonar només la informació general del producte/servei +CloneContentProduct=Clona tota la informació principal del producte/servei ClonePricesProduct=Clonar preus CloneCompositionProduct=Clonar productes/serveis compostos CloneCombinationsProduct=Clonar variants de producte @@ -156,7 +156,7 @@ BuyingPrices=Preus de compra CustomerPrices=Preus de client SuppliersPrices=Preus de proveïdor SuppliersPricesOfProductsOrServices=Preus de proveïdors (productes o serveis) -CustomCode=Customs / Commodity / HS code +CustomCode=Duana / mercaderia / codi HS CountryOrigin=País d'origen Nature=Caràcter ShortLabel=Etiqueta curta @@ -202,7 +202,7 @@ PriceByQuantity=Preus diferents per quantitat DisablePriceByQty=Desactivar els preus per quantitat PriceByQuantityRange=Rang de quantitats MultipriceRules=Regles de nivell de preu -UseMultipriceRules=Utilitza les regles de preu per nivell (definit en la configuració del mòdul de productes) per autocalcular preus dels altres nivells en funció del primer nivell +UseMultipriceRules=Utilitzeu les regles del segment de preus (definides a la configuració del mòdul de producte) per calcular automàticament els preus de tots els altres segments segons el primer segment PercentVariationOver=%% variació sobre %s PercentDiscountOver=%% descompte sobre %s KeepEmptyForAutoCalculation=Mantingueu-lo buit per obtenir-ho calculat automàticament pel pes o el volum dels productes @@ -252,7 +252,7 @@ DefaultPrice=Preu per defecte ComposedProductIncDecStock=Incrementar/Disminueix estoc en canviar el seu pare ComposedProduct=Sub-producte MinSupplierPrice=Preu mínim de compra -MinCustomerPrice=Minimum selling price +MinCustomerPrice=Preu mínim de venda DynamicPriceConfiguration=Configuració de preu dinàmic DynamicPriceDesc=A la fitxa de producte, amb aquest mòdul habilitat, haureu de poder establir funcions matemàtiques per calcular els preus dels clients o dels proveïdors. Aquesta funció pot utilitzar tots els operadors matemàtics, algunes constants i variables. Podeu definir aquí les variables que voleu utilitzar i si la variable necessita una actualització automàtica, l'URL externa que s'utilitzarà per demanar a Dolibarr que actualitzi automàticament el valor. AddVariable=Afegeix variable @@ -293,7 +293,8 @@ ProductSheet=Fulla de producte ServiceSheet=Fulla de servei PossibleValues=Valors possibles GoOnMenuToCreateVairants=Anar al menu %s - %s per preparar variants de l'atribut (com colors, mides, etc...) - +UseProductFournDesc=Utilitzeu descripcions de proveïdors de productes en documents proveïdors +ProductSupplierDescription=Descripció del proveïdor del producte #Attributes VariantAttributes=Atributs de variants ProductAttributes=Atributs de variants per a productes @@ -325,10 +326,12 @@ DoNotRemovePreviousCombinations=No borrar variants prèvies UsePercentageVariations=Utilitzar variants percentuals PercentageVariation=Variant percentual ErrorDeletingGeneratedProducts=S'ha produït un error al intentar eliminar les variants existents -NbOfDifferentValues=Nº de valors diferents +NbOfDifferentValues=Nombre de valors diferents NbProducts=Nº de productes ParentProduct=Producte pare HideChildProducts=Oculta productes variants +ShowChildProducts=Mostra variants del producte +NoEditVariants=Aneu a la targeta de producte principal i modifiqueu les variacions d'impacte de preus a la pestanya de variants ConfirmCloneProductCombinations=Vols copiar totes les variants del producte a l'altre producte pare amb la referència donada? CloneDestinationReference=Referència del producte destí ErrorCopyProductCombinations=S'ha produït un error al copiar les variants de producte diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index ca92a5f125b..3c521cef506 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -205,10 +205,10 @@ TaskAssignedToEnterTime=Tasca assignada. És possible entrar els temps en aquest IdTaskTime=Id de temps de tasca YouCanCompleteRef=Si vols completar la referència amb més informació (per utilitzar-la als filtres de cerca), es recomana afegir el caràcter - per separar-ho, així la numeració automàtica funcionarà correctament pels propers projectes. Per exemple %s-ABC. També pots preferir afegir claus de cerca en l'etiqueta. Però la millor pràctica pot ser afegir un camp dedicat, també anomenat Atributs complementaris. OpenedProjectsByThirdparties=Projectes oberts per tercers -OnlyOpportunitiesShort=Only leads -OpenedOpportunitiesShort=Open leads +OnlyOpportunitiesShort=Només oportunitats +OpenedOpportunitiesShort=Oportunitats obertes NotOpenedOpportunitiesShort=Not open leads -NotAnOpportunityShort=Not a lead +NotAnOpportunityShort=No és una oportunitat OpportunityTotalAmount=Total amount of leads OpportunityPonderatedAmount=Weighted amount of leads OpportunityPonderatedAmountDesc=Leads amount weighted with probability diff --git a/htdocs/langs/ca_ES/propal.lang b/htdocs/langs/ca_ES/propal.lang index a2a9d818b0c..3408e3acefd 100644 --- a/htdocs/langs/ca_ES/propal.lang +++ b/htdocs/langs/ca_ES/propal.lang @@ -33,7 +33,7 @@ PropalStatusSigned=Signat (a facturar) PropalStatusNotSigned=No signat (tancat) PropalStatusBilled=Facturat PropalStatusDraftShort=Esborrany -PropalStatusValidatedShort=Validated (open) +PropalStatusValidatedShort=Validat (obert) PropalStatusClosedShort=Tancat PropalStatusSignedShort=Signat PropalStatusNotSignedShort=No signat @@ -53,9 +53,9 @@ ErrorPropalNotFound=Pressupost %s inexistent AddToDraftProposals=Afegir a pressupost esborrany NoDraftProposals=Sense pressupostos esborrany CopyPropalFrom=Crea un pressupost per còpia d'un d'existent -CreateEmptyPropal=Create empty commercial proposal or from list of products/services +CreateEmptyPropal=Creeu una proposta comercial buida o des de la llista de productes / serveis DefaultProposalDurationValidity=Termini de validesa per defecte (en dies) -UseCustomerContactAsPropalRecipientIfExist=Use contact/address with type 'Contact following-up proposal' if defined instead of third party address as proposal recipient address +UseCustomerContactAsPropalRecipientIfExist=Utilitzeu el contacte / adreça amb el tipus "proposta de seguiment de contacte" si es defineix en comptes de l'adreça de tercers com a adreça de destinatari de la proposta ClonePropal=Clonar pressupost ConfirmClonePropal=Estàs segur que vols clonar la proposta comercial %s? ConfirmReOpenProp=Estàs segur que vols tornar a obrir la proposta comercial %s? diff --git a/htdocs/langs/ca_ES/resource.lang b/htdocs/langs/ca_ES/resource.lang index 64a8fd5d1a7..34283f04e1b 100644 --- a/htdocs/langs/ca_ES/resource.lang +++ b/htdocs/langs/ca_ES/resource.lang @@ -5,7 +5,7 @@ DeleteResource=Elimina recurs ConfirmDeleteResourceElement=Estàs segur de voler eliminar el recurs d'aquest element? NoResourceInDatabase=Sense recursos a la base de dades. NoResourceLinked=Sense recursos enllaçats - +ActionsOnResource=Esdeveniments sobre aquest recurs ResourcePageIndex=Llistat de recursos ResourceSingular=Recurs ResourceCard=Fitxa de recurs diff --git a/htdocs/langs/ca_ES/users.lang b/htdocs/langs/ca_ES/users.lang index 653167b5de0..370deec44d1 100644 --- a/htdocs/langs/ca_ES/users.lang +++ b/htdocs/langs/ca_ES/users.lang @@ -35,7 +35,7 @@ SuperAdministrator=Super Administrador SuperAdministratorDesc=Administrador global AdministratorDesc=Administrador DefaultRights=Permisos per defecte -DefaultRightsDesc=Definiu aquí els permisos per defecte, és a dir: els permisos que s'assignaran automàticament a un nou usuari en el moment de la seva creació (Veure la fitxa usuari per canviar els permisos a un usuari existent). +DefaultRightsDesc=Defineix aquí els permisos per defecte que es concedeixen automàticament a un usuari nou creat (Ves a la targeta d'usuari per canviar el permís d'un usuari existent). DolibarrUsers=Usuaris Dolibarr LastName=Cognoms FirstName=Nom @@ -66,7 +66,7 @@ CreateDolibarrThirdParty=Crea un tercer LoginAccountDisableInDolibarr=El compte està desactivat en Dolibarr UsePersonalValue=Utilitzar valors personalitzats InternalUser=Usuari intern -ExportDataset_user_1=Usuaris Dolibarr i propietats +ExportDataset_user_1=Usuaris i les seves propietats DomainUser=Usuari de domini Reactivate=Reactivar CreateInternalUserDesc=Aquest formulari permet crear un usuari intern a la teva empresa/organització. Per crear un usuari extern (clients, proveïdors, ...), utilitzeu el botó 'Crea usuari de Dolibarr' a la fitxa de contacte del tercer. @@ -108,3 +108,4 @@ UserAccountancyCode=Codi comptable de l'usuari UserLogoff=Usuari desconnectat UserLogged=Usuari connectat DateEmployment=Data d'ocupació +DateEmploymentEnd=Data de finalització de l'ocupació diff --git a/htdocs/langs/cs_CZ/banks.lang b/htdocs/langs/cs_CZ/banks.lang index 77ec65489cf..510c283a6a3 100644 --- a/htdocs/langs/cs_CZ/banks.lang +++ b/htdocs/langs/cs_CZ/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index a8e0ec00a0d..4ebd376e215 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -1054,7 +1054,7 @@ SetupDescription3= %s -> %s
    Grundlæggende parametre, der SetupDescription4= %s -> %s
    Dolibarr ERP / CRM er en samling af mange moduler / applikationer, alle mere eller mindre uafhængige. Modulerne, der er relevante for dine behov, skal aktiveres og konfigureres. Nye emner / valgmuligheder tilføjes til menuer med aktivering af et modul. SetupDescription5=Andre opsætningsmenuposter indeholder valgfrie parametre. LogEvents=Sikkerhed revision arrangementer -Audit=Security events +Audit=Sikkerhedshændelser InfoDolibarr=Om Dolibarr InfoBrowser=Om Browser InfoOS=Om OS @@ -1829,7 +1829,7 @@ MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector CollectNow=Collect now DateLastResult=Date last collect -LastResult=Last result +LastResult=Sidste resultat EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run the collect for this collector now ? NoNewEmailToProcess=No new email (matching filters) to process diff --git a/htdocs/langs/da_DK/banks.lang b/htdocs/langs/da_DK/banks.lang index 667f12de888..858dbbb1705 100644 --- a/htdocs/langs/da_DK/banks.lang +++ b/htdocs/langs/da_DK/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Tilføj diverse betalinger SEPAMandate=SEPA mandat YourSEPAMandate=Dit SEPA mandat FindYourSEPAMandate=Dette er dit SEPA-mandat til at give vores firma tilladelse til at foretage en direkte debitering til din bank. Ret det underskrevet (scan af det underskrevne dokument) eller send det pr. Mail til -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/da_DK/main.lang b/htdocs/langs/da_DK/main.lang index acebb62521c..e80fded081a 100644 --- a/htdocs/langs/da_DK/main.lang +++ b/htdocs/langs/da_DK/main.lang @@ -837,7 +837,7 @@ Calendar=Kalender GroupBy=Gruppér efter ViewFlatList=Se flad liste RemoveString=Fjern streng '%s' -SomeTranslationAreUncomplete=Nogle af de sprog, der tilbydes, kan kun oversættes eller måske indeholde fejl. Hjælp venligst med at korrigere dit sprog ved at registrere dig på https://transifex.com/projects/p/dolibarr/ < / a> at tilføje dine forbedringer. +SomeTranslationAreUncomplete=Nogle af de sprog, der tilbydes, kan kun oversættes eller måske indeholde fejl. Hjælp venligst med at korrigere dit sprog ved at registrere dig på https://transifex.com/projects/p/dolibarr/ at tilføje dine forbedringer. DirectDownloadLink=Direkte download link (offentlig/ekstern) DirectDownloadInternalLink=Direkte download link (skal logges og har brug for tilladelser) Download=Hent @@ -848,7 +848,7 @@ ModuleBuilder=Modulbygger SetMultiCurrencyCode=Indstil valuta BulkActions=Masse handlinger ClickToShowHelp=Klik for at vise værktøjs tips -WebSite=Website +WebSite=Internet side WebSites=Websites WebSiteAccounts=Website accounts ExpenseReport=Udgiftsrapport diff --git a/htdocs/langs/da_DK/other.lang b/htdocs/langs/da_DK/other.lang index a1753ae741a..3b8f1f354f6 100644 --- a/htdocs/langs/da_DK/other.lang +++ b/htdocs/langs/da_DK/other.lang @@ -261,7 +261,7 @@ WebsiteSetup=Opsætning af modulets hjemmeside WEBSITE_PAGEURL=URL til side WEBSITE_TITLE=Titel WEBSITE_DESCRIPTION=Beskrivelse -WEBSITE_IMAGE=Image +WEBSITE_IMAGE=Billede WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a preview of a list of blog posts). WEBSITE_KEYWORDS=nøgleord LinesToImport=Linjer at importere diff --git a/htdocs/langs/de_AT/banks.lang b/htdocs/langs/de_AT/banks.lang index 26b7f27a744..a56f7dff964 100644 --- a/htdocs/langs/de_AT/banks.lang +++ b/htdocs/langs/de_AT/banks.lang @@ -4,6 +4,7 @@ BankAccount=Kontonummer BankAccounts=Kontonummern AccountRef=Referenznummer CashAccount=Kassa +CashAccounts=Kassen CurrentAccounts=Bargeldkonten BankBalance=Saldo BalanceMinimalAllowed=minimaler Saldo @@ -28,5 +29,3 @@ StatusAccountClosed=geschlossen WithdrawalPayment=Widerrufsrecht Zahlung ShowCheckReceipt=Zeige überprüfen Einzahlungsbeleg Graph=Grafik -FutureTransaction=Transaction in futur. Kein Weg zu versöhnen. -SelectChequeTransactionAndGenerate=Select / Filter prüft, in die Scheckeinreichung Erhalt gehören und klicken Sie auf "Erstellen". diff --git a/htdocs/langs/de_CH/banks.lang b/htdocs/langs/de_CH/banks.lang index c95bf26189d..2004152c911 100644 --- a/htdocs/langs/de_CH/banks.lang +++ b/htdocs/langs/de_CH/banks.lang @@ -4,6 +4,7 @@ BankAccounts=Kontenübersicht AccountRef=Konto-Referenz AccountLabel=Kontobezeichnung CashAccount=Kasse +CashAccounts=Kassen BankBalanceBefore=Bilanz vor BankBalanceAfter=Bilanz nach AllTime=Vom start diff --git a/htdocs/langs/de_DE/banks.lang b/htdocs/langs/de_DE/banks.lang index 9937e762242..60356a5fa76 100644 --- a/htdocs/langs/de_DE/banks.lang +++ b/htdocs/langs/de_DE/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Sonstige Zahlung hinzufügen SEPAMandate=SEPA Mandat YourSEPAMandate=Ihr SEPA-Mandat FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index fd1a95962b1..ea9cb578f32 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - admin Foundation=Οργανισμός Version=Έκδοση -Publisher=Publisher +Publisher=Εκδότης VersionProgram=Έκδοση Προγράμματος VersionLastInstall=Αρχική έκδοση εγκατάστασης VersionLastUpgrade=Έκδοση Τελευταίας Ενημέρωσης @@ -9,22 +9,22 @@ VersionExperimental=Πειραματική VersionDevelopment=Υπό ανάπτυξη VersionUnknown=Άγνωστη VersionRecommanded=Προτεινόμενη -FileCheck=Files integrity checker -FileCheckDesc=This tool allows you to check the integrity of files and the setup of your application, comparing each file with the official one. The value of some setup constants may also be checked. You can use this tool to detect if some files were modified by a hacker, for example. -FileIntegrityIsStrictlyConformedWithReference=Files integrity is strictly conformed with the reference. -FileIntegrityIsOkButFilesWereAdded=Files integrity check has passed, however some new files have been added. -FileIntegritySomeFilesWereRemovedOrModified=Files integrity check has failed. Some files were modified, removed or added. -GlobalChecksum=Global checksum -MakeIntegrityAnalysisFrom=Make integrity analysis of application files from -LocalSignature=Embedded local signature (less reliable) -RemoteSignature=Remote distant signature (more reliable) +FileCheck=Έλεγχος ακεραιότητας αρχείων +FileCheckDesc=Αυτό το εργαλείο σάς επιτρέπει να ελέγχετε την ακεραιότητα των αρχείων και τη ρύθμιση της εφαρμογής σας, συγκρίνοντας κάθε αρχείο με το επίσημο. Μπορεί επίσης να ελεγχθεί η τιμή ορισμένων σταθερών ρύθμισης. Μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο για να ανιχνεύσετε αν ορισμένα αρχεία έχουν τροποποιηθεί από έναν χάκερ, για παράδειγμα. +FileIntegrityIsStrictlyConformedWithReference=Η ακεραιότητα των αρχείων είναι αυστηρά σύμφωνη με την αναφορά. +FileIntegrityIsOkButFilesWereAdded=Ο έλεγχος ακεραιότητας αρχείων ολοκληρώθηκε επιτυχώς, ωστόσο κάποια νέα αρχεία έχουν προστεθεί. +FileIntegritySomeFilesWereRemovedOrModified=Ο έλεγχος ακεραιότητας αρχείων απέτυχε. Κάποια αρχεία έχουν τροποποιηθεί, απουσιάζουν ή έχουν προστεθεί. +GlobalChecksum=Συνολικό άθροισμα ελέγχου +MakeIntegrityAnalysisFrom=Κάντε ανάλυση ακεραιότητας των αρχείων εφαρμογών από το +LocalSignature=Ενσωματωμένη τοπική υπογραφή (λιγότερο αξιόπιστη) +RemoteSignature=Εξωτερική απομακρυσμένη υπογραφή (πιο αξιόπιστη) FilesMissing=Αρχεία που λείπουν FilesUpdated=Ενημερωμένα αρχεία -FilesModified=Modified Files -FilesAdded=Added Files -FileCheckDolibarr=Check integrity of application files -AvailableOnlyOnPackagedVersions=The local file for integrity checking is only available when application is installed from an official package -XmlNotFound=Xml Integrity File of application not found +FilesModified=Τροποποιημένα αρχεία +FilesAdded=Προστέθηκε αρχεία +FileCheckDolibarr=Ελέγξτε την ακεραιότητα των αρχείων εφαρμογών +AvailableOnlyOnPackagedVersions=Το τοπικό αρχείο για τον έλεγχο της ακεραιότητας είναι διαθέσιμο μόνο όταν η εφαρμογή εγκαθίσταται από ένα επίσημο πακέτο +XmlNotFound=Το Xml αρχείο ακεραιότητας της εφαρμογής δεν βρέθηκε SessionId=ID Συνόδου SessionSaveHandler=Φορέας χειρισμού αποθήκευσης συνεδριών SessionSavePath=Αποθήκευση τοπικής προσαρμογής συνεδρίας @@ -32,10 +32,10 @@ PurgeSessions=Διαγραφή συνόδων ConfirmPurgeSessions=Είστε σίγουροι πως θέλετε να διαγράψετε όλες τις συνεδρίες; Αυτό θα αποσυνδέσει όλους τους χρήστες (εκτός από εσάς). NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow listing all running sessions. LockNewSessions=Κλειδώστε τις νέες συνδέσεις -ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself? Only user %s will be able to connect after that. +ConfirmLockNewSessions=Είστε βέβαιοι ότι θέλετε να περιορίσετε οποιαδήποτε νέα σύνδεση Dolibarr στον εαυτό σας; Μόνο ο χρήστης %s θα μπορεί να συνδεθεί μετά από αυτό. UnlockNewSessions=Κατάργηση κλειδώματος σύνδεσης YourSession=Η σύνοδος σας -Sessions=Users sessions +Sessions=Συνεδρίες χρηστών WebUserGroup=Χειριστής/Ομάδα Διακομιστή Web NoSessionFound=Your PHP seems to not allow listing of active sessions. The directory used to save sessions (%s) might be protected (For example, by OS permissions or by PHP directive open_basedir). DBStoringCharset=Σύνολο χαρακτήρων βάσης δεδομένων για την αποθήκευση δεδομένων diff --git a/htdocs/langs/el_GR/banks.lang b/htdocs/langs/el_GR/banks.lang index 462842b62b3..825a7b02c8d 100644 --- a/htdocs/langs/el_GR/banks.lang +++ b/htdocs/langs/el_GR/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/en_AU/banks.lang b/htdocs/langs/en_AU/banks.lang index 3a409c94893..3746466ea96 100644 --- a/htdocs/langs/en_AU/banks.lang +++ b/htdocs/langs/en_AU/banks.lang @@ -1,9 +1,6 @@ # Dolibarr language file - Source file is en_US - banks BankChecks=Bank cheques ShowCheckReceipt=Show cheque deposit receipt -NumberOfCheques=Nb of cheque -FutureTransaction=Transaction in future. No way to conciliate. -SelectChequeTransactionAndGenerate=Select/filter checks to include into the cheque deposit receipt and click on "Create". RejectCheck=Cheque returned RejectCheckDate=Date the cheque was returned CheckRejected=Cheque returned diff --git a/htdocs/langs/en_GB/banks.lang b/htdocs/langs/en_GB/banks.lang index 6bc449c5864..240839e6bea 100644 --- a/htdocs/langs/en_GB/banks.lang +++ b/htdocs/langs/en_GB/banks.lang @@ -1,11 +1,7 @@ # Dolibarr language file - Source file is en_US - banks -RIBControlError=Integrity check of values fails. This means the account details are incomplete or wrong (check country, numbers and IBAN). CheckTransmitter=Drawer BankChecks=Bank cheques ShowCheckReceipt=Show cheque deposit receipt -NumberOfCheques=No. of cheques -FutureTransaction=Transaction in future: cannot be reconciled -SelectChequeTransactionAndGenerate=Select/filter cheques to include in the cheque deposit receipt, then click "Create". InputReceiptNumber=Identify the bank statement to reconcile. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Specify a category in which to classify the records, if required ThenCheckLinesAndConciliate=Select the lines shown on the bank statement and click diff --git a/htdocs/langs/es_CL/banks.lang b/htdocs/langs/es_CL/banks.lang index 0737ac77fb4..73d6e9eae94 100644 --- a/htdocs/langs/es_CL/banks.lang +++ b/htdocs/langs/es_CL/banks.lang @@ -1,9 +1,9 @@ # Dolibarr language file - Source file is en_US - banks +MenuBankCash=Banco | Efectivo MenuVariousPayment=Pagos diversos MenuNewVariousPayment=Nuevo pago misceláneo BankAccount=cuenta bancaria BankAccounts=Cuentas bancarias -BankAccountsAndGateways=Cuentas bancarias | Puertas de enlace AccountRef=Ref de cuenta financiera AccountLabel=Etiqueta de cuenta financiera CashAccount=Cuenta de efectivo @@ -28,7 +28,6 @@ AccountStatementShort=Declaración AccountStatements=Estados de cuenta LastAccountStatements=Últimos estados de cuenta IOMonthlyReporting=Informes mensuales -RIBControlError=La verificación de integridad de los valores falla. Esto significa que la información para este número de cuenta no está completa o es incorrecta (ver país, números e IBAN). CreateAccount=Crear una cuenta MenuNewFinancialAccount=Nueva cuenta financiera EditFinancialAccount=Editar cuenta @@ -72,7 +71,6 @@ WithdrawalPayment=Pago de retiros SocialContributionPayment=Pago de impuestos sociales/fiscales BankTransfer=transferencia bancaria BankTransfers=transferencias bancarias -TransferDesc=Transferencia de una cuenta a otra, Dolibarr escribirá dos registros (un débito en la cuenta de origen y un crédito en la cuenta de destino. Se usará la misma cantidad (excepto el signo), la etiqueta y la fecha para esta transacción) TransferTo=A TransferFromToDone=Una transferencia de %s a %s de %s %s ha sido grabada. CheckTransmitter=Transmisor @@ -83,7 +81,6 @@ ConfirmDeleteCheckReceipt=¿Seguro que quieres eliminar este recibo de cheque? BankChecks=Cheques bancarios BankChecksToReceipt=Cheques en espera de depósito ShowCheckReceipt=Mostrar recibo de depósito de cheques -NumberOfCheques=N° de cheque DeleteTransaction=Eliminar la entrada ConfirmDeleteTransaction=¿Seguro que quieres eliminar esta entrada? ThisWillAlsoDeleteBankRecord=Esto también eliminará la entrada bancaria generada @@ -97,8 +94,7 @@ PaymentDateUpdateSucceeded=Fecha de pago actualizada con éxito PaymentDateUpdateFailed=La fecha de pago no se pudo actualizar Transactions=Actas BankTransactionLine=Entrada bancaria -FutureTransaction=Transacción en futur. No hay manera de conciliar. -SelectChequeTransactionAndGenerate=Seleccione / filtro de cheques para incluir en el recibo de depósito de cheque y haga clic en "Crear". +AllAccounts=Todas las cuentas bancarias y de efectivo InputReceiptNumber=Elija el extracto bancario relacionado con la conciliación. Use un valor numérico ordenable: AAAAMM o AAAAMMDD EventualyAddCategory=Eventualmente, especifique una categoría en la cual clasificar los registros ToConciliate=¿Para reconciliar? @@ -110,12 +106,11 @@ ConfirmDeleteRib=¿Seguro que quieres eliminar este registro de BAN? ConfirmRejectCheck=¿Seguro que quieres marcar este cheque como rechazado? RejectCheckDate=Fecha en que se devolvió el cheque BankAccountModelModule=Plantillas de documentos para cuentas bancarias -DocumentModelSepaMandate=Plantilla del mandato SEPA. Útil para países europeos en EEC solamente. DocumentModelBan=Plantilla para imprimir una página con información de BAN. NewVariousPayment=Nuevos pagos misceláneos VariousPayment=Pagos diversos VariousPayments=Pagos diversos ShowVariousPayment=Mostrar pagos diversos AddVariousPayment=Agregar pagos diversos +SEPAMandate=Mandato de la SEPA YourSEPAMandate=Su mandato de SEPA -FindYourSEPAMandate=Este es su mandato de SEPA para autorizar a nuestra empresa a realizar un pedido de débito directo a su banco. Gracias a devolverlo firmado (escaneo del documento firmado) o enviado por correo a diff --git a/htdocs/langs/es_CO/banks.lang b/htdocs/langs/es_CO/banks.lang index 5fe75379d11..902359fcfb0 100644 --- a/htdocs/langs/es_CO/banks.lang +++ b/htdocs/langs/es_CO/banks.lang @@ -1,3 +1,8 @@ # Dolibarr language file - Source file is en_US - banks +BankAccounts=cuentas bancarias +BankBalance=Equilibrar StatusAccountOpened=Activo StatusAccountClosed=Cerrado +SocialContributionPayment=Pago de impuestos sociales / fiscales +BankTransfer=transferencia bancaria +TransferTo=A diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 54fe556a5a0..9b4cfb9b724 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -305,7 +305,7 @@ ModuleFamilyTechnic=Módulos herramientas o Sistema ModuleFamilyExperimental=Módulos experimentales ModuleFamilyFinancial=Módulos financieros (Contabilidad/tesorería) ModuleFamilyECM=Gestión Electrónica de Documentos (GED) -ModuleFamilyPortal=Websites and other frontal application +ModuleFamilyPortal=Sitios Web y otras aplicaciones frontales ModuleFamilyInterface=Interfaces con sistemas extrenos MenuHandlers=Gestores menú MenuAdmin=Editor menú @@ -464,8 +464,8 @@ DependsOn=Este módulo necesita el módulo(s) RequiredBy=Este módulo es requerido por los módulos TheKeyIsTheNameOfHtmlField=Este es el nombre del del campo HTML. Son necesarios tener conocimientos técnicos para leer el contenido de la página HTML para obtener el nombre clave de un campo. PageUrlForDefaultValues=Debe introducir aquí la URL relativa de la página. Si incluye parámetros en la URL, los valores predeterminados serán efectivos si todos los parámetros están configurados con el mismo valor. -PageUrlForDefaultValuesCreate=
    Example:
    For the form to create a new thirdparty, it is %s.
    For URL of external modules installed into custom directory, do not include the "custom/", so use path like mymodule/mypage.php and not custom/mymodule/mypage.php.
    If you want default value only if url has some parameter, you can use %s -PageUrlForDefaultValuesList=
    Example:
    For the page that list third-parties, it is %s.
    For URL of external modules installed into custom directory, do not include the "custom/" so use path like mymodule/mypagelist.php and not custom/mymodule/mypagelist.php.
    If you want default value only if url has some parameter, you can use %s +PageUrlForDefaultValuesCreate=
    Ejemplo:
    Para el formulario para crear un nuevo tercero, es %s .
    Para la URL de los módulos externos instalados en el directorio custom, no incluya "custom/", así que use la ruta como mymodule/mypage.php y no custom/mymodule/mypage.php.
    Si desea un valor predeterminado solo si la url tiene algún parámetro, puede usar %s +PageUrlForDefaultValuesList=
    Ejemplo:
    Para la página que lista a terceros, es %s .
    Para la URL de los módulos externos instalados en el directorio custom, no incluya "custom/" así que use la ruta como mymodule/mypagelist.php y no custom/mymodule/mypagelist.php.
    Si desea un valor predeterminado solo si url tiene algún parámetro, puede usar %s EnableDefaultValues=Habilitar el uso de valores predeterminados personalizados EnableOverwriteTranslation=Habilitar el uso de la traducción sobrescrita GoIntoTranslationMenuToChangeThis=Se ha encontrado una traducción para la clave con este código. Para cambiar este valor, debe editarlo desde Inicio-Configuración-Traducción. @@ -487,7 +487,7 @@ DAV_ALLOW_ECM_DIRTooltip=El directorio raíz donde se cargan manualmente todos l Module0Name=Usuarios y grupos Module0Desc=Gestión de Usuarios / Empleados y grupos Module1Name=Terceros -Module1Desc=Companies and contacts management (customers, prospects...) +Module1Desc=Gestión de terceros y contactos (clientes, clientes potenciales...) Module2Name=Comercial Module2Desc=Gestión comercial Module10Name=Contabilidad @@ -501,7 +501,7 @@ Module23Desc=Realiza el seguimiento del consumo de energías Module25Name=Pedidos de clientes Module25Desc=Gestión de pedidos de clientes Module30Name=Facturas y abonos -Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers +Module30Desc=Gestión de facturas y abonos a clientes. Gestión facturas y abonos de proveedores Module40Name=Proveedores Module40Desc=Proveedores y gestión de compras (pedidos de compra y facturación) Module42Name=Registros de depuración @@ -902,7 +902,7 @@ DictionaryVAT=Tasa de IVA (Impuesto sobre ventas en EEUU) DictionaryRevenueStamp=Importes de sellos fiscales DictionaryPaymentConditions=Condiciones de pago DictionaryPaymentModes=Modos de pago -DictionaryTypeContact=Contacts/addresses types +DictionaryTypeContact=Tipos de contactos/direcciones DictionaryTypeOfContainer=Tipo de página/contenedor DictionaryEcotaxe=Baremos CEcoParticipación (DEEE) DictionaryPaperFormat=Formatos de papel @@ -967,7 +967,7 @@ CalcLocaltax3Desc=Los informes se basan en el total de las ventas LabelUsedByDefault=Etiqueta que se utilizará si no se encuentra traducción para este código LabelOnDocuments=Etiqueta sobre documentos LabelOrTranslationKey=Clave de traducción o cadena -ValueOfConstantKey=Value of constant +ValueOfConstantKey=Valor de la constante NbOfDays=Nº de días AtEndOfMonth=A fin de mes CurrentNext=Actual/Siguiente @@ -1054,7 +1054,7 @@ SetupDescription3=Los parámetros del menú %s->%s
    Parámet SetupDescription4=%s -> %s
    Dolibarr ERP/CRM es una colección de varios módulos, todos más o menos independientes. Los módulos relevantes para tus necesidades deben ser activados y configurados. Se añadirán nuevas funcionalidades a los menús por cada módulo que se active. SetupDescription5=Las otras entradas de configuración gestionan parámetros opcionales. LogEvents=Auditoría de la seguridad de eventos -Audit=Security events +Audit=Auditoría InfoDolibarr=Acerca de Dolibarr InfoBrowser=Acerca del Navegador InfoOS=Acerca del SO @@ -1066,7 +1066,7 @@ BrowserName=Nombre del navegador BrowserOS=S.O. del navegador ListOfSecurityEvents=Listado de eventos de seguridad Dolibarr SecurityEventsPurged=Eventos de seguridad purgados -LogEventDesc=You can enable here the logging for security events. Administrators can then see its content via menu %s - %s. Warning, this feature can consume a large amount of data in database. +LogEventDesc=Puede habilitar el registro de eventos de seguridad aquí. Los administradores pueden ver su contenido a través de menú %s-%s.Atención, esta característica puede consumir una gran cantidad de datos en la base de datos. AreaForAdminOnly=Los parámetros de configuración solamente pueden ser tratados por usuarios administrador SystemInfoDesc=La información del sistema es información técnica accesible solamente en solo lectura a los administradores. SystemAreaForAdminOnly=Esta área solo es accesible a los usuarios de tipo administradores. Ningún permiso Dolibarr permite extender el círculo de usuarios autorizados a esta área. @@ -1077,7 +1077,7 @@ DisplayDesc=Puede encontrar aquí todos los parámetros relacionados con la apar AvailableModules=Módulos disponibles ToActivateModule=Para activar los módulos, vaya al área de Configuración (Inicio->Configuración->Módulos). SessionTimeOut=Timeout de sesiones -SessionExplanation=Este número garantiza que la sesión nunca caducará antes de este retraso, si el limpiador de sesión se realiza mediante un limpiador de sesión interno de PHP (y nada más). El limpiador interno de sesiones de PHP no garantiza que la sesión caduque después de este retraso. Expirará, después de este retraso, y cuando se ejecute el limpiador de sesiones, por lo que cada acceso %s/%s , pero solo durante el acceso realizado por otras sesiones.
    Nota: en algunos servidores con un mecanismo externo de limpieza de sesión (cron bajo debian, ubuntu...), las sesiones se pueden destruir después de un período definido por una configuración externa, sin importar el valor introducido aquí +SessionExplanation=Este número garantiza que la sesión nunca caducará antes de este retraso, si el limpiador de sesión se realiza mediante un limpiador de sesión interno de PHP (y nada más). El limpiador interno de sesiones de PHP no garantiza que la sesión caduque después de este retraso. Expirará, después de este retraso, y cuando se ejecute el limpiador de sesiones, por lo que cada acceso %s/%s , pero solo durante el acceso realizado por otras sesiones (si el valor es 0, significa que la limpieza de sesiones solo se realiza por un proceso externo).
    Nota: en algunos servidores con un mecanismo externo de limpieza de sesión (cron bajo debian, ubuntu...), las sesiones se pueden destruir después de un período definido por una configuración externa, sin importar el valor introducido aquí TriggersAvailable=Triggers disponibles TriggersDesc=Los triggers son archivos que, une vez copiados en el directorio htdocs/core/triggers, modifican el comportamiento del workflow de Dolibarr. Realizan acciones suplementarias, desencadenadas por los eventos Dolibarr (creación de empresa, validación factura...). TriggerDisabledByName=Triggers de este archivo desactivados por el sufijo -NORUN en el nombre del archivo. @@ -1097,7 +1097,7 @@ MAIN_ROUNDING_RULE_TOT=Salto de rango de redondeo (para países donde el redonde UnitPriceOfProduct=Precio unitario sin IVA de un producto TotalPriceAfterRounding=Precio total después del redondeo ParameterActiveForNextInputOnly=Parámetro efectivo solamente a partir de las próximas sesiones -NoEventOrNoAuditSetup=No security event has been recorded yet. This can be normal if audit has not been enabled on "Setup - Security - Events" page. +NoEventOrNoAuditSetup=No se han registrado eventos de seguridad todavía. Esto puede ser normal si la auditoría no ha sido habilitada en la página "Configuración->Seguridad->Auditoría". NoEventFoundWithCriteria=No se han encontrado eventos de seguridad para tales criterios de búsqueda. SeeLocalSendMailSetup=Ver la configuración local de sendmail BackupDesc=Para realizar una copia de seguridad completa de Dolibarr, usted debe: @@ -1142,7 +1142,7 @@ ExtraFieldsLinesRec=Campos adicionales (plantillas de líneas de facturas) ExtraFieldsSupplierOrdersLines=Campos adicionales (líneas de pedido) ExtraFieldsSupplierInvoicesLines=Campos adicionales (líneas de factura) ExtraFieldsThirdParties=Campos adicionales (terceros) -ExtraFieldsContacts=Complementary attributes (contacts/address) +ExtraFieldsContacts=Campos adicionales (contactos/direcciones) ExtraFieldsMember=Campos adicionales (miembros) ExtraFieldsMemberType=Campos adicionales (tipos de miembros) ExtraFieldsCustomerInvoices=Campos adicionales (facturas a clientes) @@ -1213,7 +1213,7 @@ NotificationsDescUser=* por usuarios, un usuario a la vez. NotificationsDescContact=* por contactos de terceros (clientes o proveedores), un contacto a la vez. NotificationsDescGlobal=* o configurando destinatarios globlalmente en la configuración del módulo. ModelModules=Plantillas de documentos -DocumentModelOdt=Generación desde los documentos OpenDocument (Archivo .ODT OpenOffice, KOffice, TextEdit,...) +DocumentModelOdt=Generación desde los documentos OpenDocument (Archivo .ODT / .ODS de LibreOffice, OpenOffice, KOffice, TextEdit...) WatermarkOnDraft=Marca de agua en los documentos borrador JSOnPaimentBill=Activar función para autocompletar las líneas de pago en la entrada de pagos CompanyIdProfChecker=Reglas sobre los ID profesionales @@ -1452,11 +1452,11 @@ ProductSetup=Configuración del módulo Productos ServiceSetup=Configuración del módulo Servicios ProductServiceSetup=Configuración de los módulos Productos y Servicios NumberOfProductShowInSelect=Nº de productos máx. en las listas (0=sin límite) -ViewProductDescInFormAbility=Visualización de las descripciones de los productos en los formularios +ViewProductDescInFormAbility=Visualización de las descripciones de los productos en los formularios (en caso contrario como tooltip) MergePropalProductCard=Activar en el producto/servicio la pestaña Documentos una opción para fusionar documentos PDF de productos al presupuesto PDF azur si el producto/servicio se encuentra en el presupuesto ViewProductDescInThirdpartyLanguageAbility=Visualización de las descripciones de productos en el idioma del tercero UseSearchToSelectProductTooltip=También si usted tiene una gran cantidad de producto (> 100 000), puede aumentar la velocidad mediante el establecimiento PRODUCT_DONOTSEARCH_ANYWHERE constante a 1 en Configuración-> Otros. La búsqueda será limitada al inicio de la cadena. -UseSearchToSelectProduct=Esperar a que presione una tecla antes de cargar el contenido de la lista combinada de productos (Esto puede incrementar el rendimiento si tiene un gran número de productos) +UseSearchToSelectProduct=Esperar a que presione una tecla antes de cargar el contenido de la lista combinada de productos (Esto puede incrementar el rendimiento si tiene un gran número de productos, pero es menos conveniente) SetDefaultBarcodeTypeProducts=Tipo de código de barras utilizado por defecto para los productos SetDefaultBarcodeTypeThirdParties=Tipo de código de barras utilizado por defecto para los terceros UseUnits=Definir una unidad de medida para la Cantidad en la edición de líneas de pedidos, presupuetos o facturas @@ -1536,7 +1536,7 @@ FCKeditorForMail=Creación/edición WYSIWIG de todos los e-mails ( excepto Utili ##### OSCommerce 1 ##### OSCommerceErrorConnectOkButWrongDatabase=La conexión se ha establecido, pero la base de datos no parece de OSCommerce. (la clave %s no se encuentra en la tabla %s). OSCommerceTestOk=Conectado correctamente al servidor '%s', base de datos '%s', usuario '%s'. -OSCommerceTestKo1=La conexión al servidor '%s' sobre la base '%s' no se pudo efectuar. +OSCommerceTestKo1=La conexión al servidor '%s' ha sido correcta pero sobre la base de datos '%s' no se pudo efectuar. OSCommerceTestKo2=La conexión al servidor '%s' por el usuario '%s' ha fallado. ##### Stock ##### StockSetup=Configuración del módulo Almacenes @@ -1577,7 +1577,7 @@ OptionVatDefaultDesc=La carga del IVA es:
    -en el envío de los bienes (en la OptionVatDebitOptionDesc=La carga del IVA es:
    -en el envío de los bienes (en la práctica se usa la fecha de la factura)
    -sobre la facturación de los servicios OptionPaymentForProductAndServices=Base de efectivo para productos y servicios OptionPaymentForProductAndServicesDesc=La carga del IVA es:
    -en el pago de los bienes
    -sobre el pago por los servicios -SummaryOfVatExigibilityUsedByDefault=Tiempo de exigibilidad de IVA por defecto según la opción elegida +SummaryOfVatExigibilityUsedByDefault=Tiempo de exigibilidad de IVA por defecto según la opción elegida: OnDelivery=En la entrega OnPayment=En el pago OnInvoice=En la factura @@ -1834,15 +1834,15 @@ EmailCollectorConfirmCollectTitle=Confirmación recolección e-mail EmailCollectorConfirmCollect=¿Desea ejecutar la recolección de este recolector ahora? NoNewEmailToProcess=No hay e-mails nuevos (filtros coincidentes) para procesar NothingProcessed=Nada hecho -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfuly processed (for %s record/actions done) by collector -RecordEvent=Record email event +XEmailsDoneYActionsDone=%s e-mails analizados, %s e-mails procesados ​​con éxito (para %s registro/acciones realizadas) por el recolector +RecordEvent=Registro de evento de email CreateLeadAndThirdParty=Crear lead (y tercero si es necesario) CodeLastResult=Código de resultado de la última recogida NbOfEmailsInInbox=Número de emails en el directorio fuente -LoadThirdPartyFromName=Load thirdparty from name (load only) -LoadThirdPartyFromNameOrCreate=Load thirdparty from name (create if not found) -WithDolTrackingID=Dolibarr Tracking ID found -WithoutDolTrackingID=Dolibarr Tracking ID not found +LoadThirdPartyFromName=Cargar terceros a partir del nombre (solo cargar) +LoadThirdPartyFromNameOrCreate=Cargar terceros a partir del nombre (crear si no se encuentra) +WithDolTrackingID=Dolibarr Tracking ID encontrado +WithoutDolTrackingID=Dolibarr Tracking ID no encontrado FormatZip=Código postal ##### Resource #### ResourceSetup=Configuración del módulo Recursos diff --git a/htdocs/langs/es_ES/agenda.lang b/htdocs/langs/es_ES/agenda.lang index 72cb945c46a..a5fca1abe74 100644 --- a/htdocs/langs/es_ES/agenda.lang +++ b/htdocs/langs/es_ES/agenda.lang @@ -32,13 +32,14 @@ ViewPerUser=Vista por usuario ViewPerType=Vista por tipo AutoActions= Inclusión automática en la agenda AgendaAutoActionDesc= Defina aquí los eventos que desea que Dolibarr cree automáticamente como evento en la agenda. Si no selecciona nada solamente serán visibles en la agenda las acciones manuales. No se guardará el seguimiento automático de las acciones comerciales realizadas sobre los objetos (validación, cambio de estado). -AgendaSetupOtherDesc= Esta página le permite configurar algunas opciones que permiten exportar una vista de su agenda Dolibar a un calendario externo (thunderbird, google calendar, ...) +AgendaSetupOtherDesc= Esta página le permite configurar algunas opciones que permiten exportar una vista de su agenda Dolibar a un calendario externo (thunderbird, google calendar...) AgendaExtSitesDesc=Esta página le permite configurar calendarios externos para su visualización en la agenda de Dolibarr. ActionsEvents=Eventos para que Dolibarr cree un evento en la agenda de forma automática -EventRemindersByEmailNotEnabled=Los recordatorios de eventos por e.mail no se habilitaron en la configuración del módulo Agenda. +EventRemindersByEmailNotEnabled=Los recordatorios de eventos por e-mail no se activaron en la configuración del módulo %s. ##### Agenda event labels ##### NewCompanyToDolibarr=Tercero %s creado ContractValidatedInDolibarr=Contrato %s validado +CONTRACT_DELETEInDolibarr=Contrato %s eliminado PropalClosedSignedInDolibarr=Presupuesto %s firmado PropalClosedRefusedInDolibarr=Presupuesto %s rechazado PropalValidatedInDolibarr=Presupuesto %s validado @@ -112,7 +113,7 @@ ExportCal=Exportar calendario ExtSites=Calendarios externos ExtSitesEnableThisTool=Mostrar calendarios externos (definido en la configuración global) en la agenda. No afecta a los calendarios externos definidos por los usuarios ExtSitesNbOfAgenda=Número de calendarios -AgendaExtNb=Calendar no. %s +AgendaExtNb=Calendario nº %s ExtSiteUrlAgenda=Url de acceso al archivo .ical ExtSiteNoLabel=Sin descripción VisibleTimeRange=Rango de tiempo visible diff --git a/htdocs/langs/es_ES/cashdesk.lang b/htdocs/langs/es_ES/cashdesk.lang index f5158188810..e4ef7fa3d37 100644 --- a/htdocs/langs/es_ES/cashdesk.lang +++ b/htdocs/langs/es_ES/cashdesk.lang @@ -33,12 +33,12 @@ FilterRefOrLabelOrBC=Búsqueda (Ref/Etiq.) UserNeedPermissionToEditStockToUsePos=Ha configurado el decremento de stock en la creación de facturas, por lo que el usuario que utilice el TPV deberá tener permiso para editar stock. DolibarrReceiptPrinter=Impresora de tickets Dolibarr PointOfSale=Terminales Punto de Venta -PointOfSaleShort=POS +PointOfSaleShort=TPV CloseBill=Cerrar factura Floors=Pisos Floor=Piso AddTable=Agregar tabla Place=Lugar -TakeposConnectorNecesary='TakePOS Connector' required +TakeposConnectorNecesary='Conector TakePOS' requerido OrderPrinters=Impresoras de pedidos SearchProduct=Buscar producto diff --git a/htdocs/langs/es_ES/commercial.lang b/htdocs/langs/es_ES/commercial.lang index 94a6697ec05..5fe49a5b4f4 100644 --- a/htdocs/langs/es_ES/commercial.lang +++ b/htdocs/langs/es_ES/commercial.lang @@ -52,6 +52,7 @@ ActionAC_TEL=Llamada telefónica ActionAC_FAX=Envío Fax ActionAC_PROP=Envío presupuesto por correo ActionAC_EMAIL=Envío E-Mail +ActionAC_EMAIL_IN=Recepción de Email ActionAC_RDV=Cita ActionAC_INT=Intervención in situ ActionAC_FAC=Envío factura a cliente por correo @@ -61,7 +62,7 @@ ActionAC_EMAILING=Envío mailing masivo ActionAC_COM=Envío pedido de cliente por correo ActionAC_SHIP=Envío expedición por correo ActionAC_SUP_ORD=Envío pedido a proveedor por correo -ActionAC_SUP_INV=Envío de factura de proveedor por correo +ActionAC_SUP_INV=Envío factura de proveedor por correo ActionAC_OTH=Otra ActionAC_OTH_AUTO=Eventos creados automáticamente ActionAC_MANUAL=Eventos creados manualmente diff --git a/htdocs/langs/es_ES/dict.lang b/htdocs/langs/es_ES/dict.lang index 3282ed02af9..09aa139c04a 100644 --- a/htdocs/langs/es_ES/dict.lang +++ b/htdocs/langs/es_ES/dict.lang @@ -306,7 +306,7 @@ DemandReasonTypeSRC_WOM=Boca a boca DemandReasonTypeSRC_PARTNER=Socio DemandReasonTypeSRC_EMPLOYEE=Empleado DemandReasonTypeSRC_SPONSORING=Patrocinador -DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +DemandReasonTypeSRC_SRC_CUSTOMER=Contacto entrante de un cliente #### Paper formats #### PaperFormatEU4A0=Formato 4A0 PaperFormatEU2A0=Formato 2A0 diff --git a/htdocs/langs/es_ES/ecm.lang b/htdocs/langs/es_ES/ecm.lang index eb6b96507c8..fb443e7bd8c 100644 --- a/htdocs/langs/es_ES/ecm.lang +++ b/htdocs/langs/es_ES/ecm.lang @@ -34,8 +34,8 @@ ECMDocsByProjects=Documentos enlazados a proyectos ECMDocsByUsers=Documentos enlazados a usuarios ECMDocsByInterventions=Documentos enlazados a intervenciones ECMDocsByExpenseReports=Documentos enlazados a informes de gastos -ECMDocsByHolidays=Documents linked to holidays -ECMDocsBySupplierProposals=Documents linked to supplier proposals +ECMDocsByHolidays=Documentos vinculados a días libres +ECMDocsBySupplierProposals=Documentos vinculados a presupuestos de proveedores. ECMNoDirectoryYet=No se ha creado el directorio ShowECMSection=Mostrar directorio DeleteSection=Eliminación directorio diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang index dfdc9c2453b..c66e6c7122c 100644 --- a/htdocs/langs/es_ES/holiday.lang +++ b/htdocs/langs/es_ES/holiday.lang @@ -112,7 +112,7 @@ NoticePeriod=Plazo de aviso HolidaysToValidate=Días libres retribuidos a validar HolidaysToValidateBody=A continuación encontrará una solicitud de días libres retribuidos para validar HolidaysToValidateDelay=Esta solicitud de días libres retribuidos tendrá lugar en un plazo de menos de %s días. -HolidaysToValidateAlertSolde=The user who made this leave request does not have enough available days. +HolidaysToValidateAlertSolde=El usuario que ha realizado la solicitud de días retribuidos no dispone de suficientes días disponibles. HolidaysValidated=Días libres retribuidos validados HolidaysValidatedBody=Su solicitud de días libres retribuidos desde el %s al %s ha sido validada. HolidaysRefused=Días libres retribuidos denegados diff --git a/htdocs/langs/es_ES/install.lang b/htdocs/langs/es_ES/install.lang index 3ec51aa9d80..605c6f1fbb4 100644 --- a/htdocs/langs/es_ES/install.lang +++ b/htdocs/langs/es_ES/install.lang @@ -200,7 +200,7 @@ MigrationRemiseEntity=Actualizando el campo entity de llx_societe_remise MigrationRemiseExceptEntity=Actualizando el campo entity de llx_societe_remise_except MigrationUserRightsEntity=Actualizando el campo entity de llx_user_rights MigrationUserGroupRightsEntity=Actualizando el campo entity de llx_usergroup_rights -MigrationUserPhotoPath=Migration of photo paths for users +MigrationUserPhotoPath=Migración de la ruta de las fotos para los usuarios MigrationReloadModule=Recargar módulo %s MigrationResetBlockedLog=Restablecer el módulo BlockedLog para el algoritmo v7 ShowNotAvailableOptions=Mostrar opciones no disponibles diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index a34f3a52899..2d63474b8bf 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -848,9 +848,9 @@ ModuleBuilder=Módulo Builder SetMultiCurrencyCode=Establecer moneda BulkActions=Acciones masivas ClickToShowHelp=Haga clic para mostrar la ayuda sobre herramientas -WebSite=Website +WebSite=Sitio web WebSites=Sitios web -WebSiteAccounts=Website accounts +WebSiteAccounts=Cuentas del sitio web ExpenseReport=Gasto ExpenseReports=Informes de gastos HR=RRHH diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang index fd13746007a..09dd18f2a70 100644 --- a/htdocs/langs/es_ES/other.lang +++ b/htdocs/langs/es_ES/other.lang @@ -261,7 +261,7 @@ WebsiteSetup=Configuración del módulo website WEBSITE_PAGEURL=URL de la página WEBSITE_TITLE=Título WEBSITE_DESCRIPTION=Descripción -WEBSITE_IMAGE=Image -WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a preview of a list of blog posts). +WEBSITE_IMAGE=Imagen +WEBSITE_IMAGEDesc=Ruta relativa de las imágenes. Puede mantenerla vacío, ya que rara vez se usa (puede ser usada por el contenido dinámico para mostrar una vista previa de una lista de publicaciones de blog). WEBSITE_KEYWORDS=Claves LinesToImport=Líneas a importar diff --git a/htdocs/langs/es_ES/paybox.lang b/htdocs/langs/es_ES/paybox.lang index 8f1c3724b96..7bfc70a0603 100644 --- a/htdocs/langs/es_ES/paybox.lang +++ b/htdocs/langs/es_ES/paybox.lang @@ -20,7 +20,7 @@ ToOfferALinkForOnlinePaymentOnInvoice=URL que ofrece una interfaz de pago en lí ToOfferALinkForOnlinePaymentOnContractLine=URL que ofrece una interfaz de pago en línea %s basada en el importe de una línea de contrato ToOfferALinkForOnlinePaymentOnFreeAmount=URL que ofrece una interfaz de pago en línea %s basada en un importe libre ToOfferALinkForOnlinePaymentOnMemberSubscription=URL que ofrece una interfaz de pago en línea %s basada en la cotización de un miembro -ToOfferALinkForOnlinePaymentOnDonation=URL to offer a %s online payment user interface for payment of donation +ToOfferALinkForOnlinePaymentOnDonation=URL para pfrecer un %s interfaz de usuario para un pago o donació online YouCanAddTagOnUrl=También puede añadir el parámetro url &tag=value para cualquiera de estas direcciones (obligatorio solamente para el pago libre) para ver su propio código de comentario de pago. SetupPayBoxToHavePaymentCreatedAutomatically=Configure su url PayBox %s para que el pago se cree automáticamente al validar. YourPaymentHasBeenRecorded=Esta página confirma que su pago se ha registrado correctamente. Gracias. diff --git a/htdocs/langs/es_ES/propal.lang b/htdocs/langs/es_ES/propal.lang index 32d8e38ee7c..b46a7a1d8e5 100644 --- a/htdocs/langs/es_ES/propal.lang +++ b/htdocs/langs/es_ES/propal.lang @@ -55,7 +55,7 @@ NoDraftProposals=Sin presupuestos borrador CopyPropalFrom=Crear presupuesto por copia de uno existente CreateEmptyPropal=Crear propuesta comercial vacía o desde lista de productos/servicios. DefaultProposalDurationValidity=Plazo de validez por defecto (en días) -UseCustomerContactAsPropalRecipientIfExist=Use contact/address with type 'Contact following-up proposal' if defined instead of third party address as proposal recipient address +UseCustomerContactAsPropalRecipientIfExist=Utilizar dirección del contacto de seguimiento de cliente definido, en vez de la dirección del tercero como destinatario de los presupuestos ClonePropal=Clonar presupuesto ConfirmClonePropal=¿Está seguro de querer clonar el presupuesto %s? ConfirmReOpenProp=¿Está seguro de querer reabrir el presupuesto %s? diff --git a/htdocs/langs/es_ES/website.lang b/htdocs/langs/es_ES/website.lang index 662b1297b8e..d14f606b40a 100644 --- a/htdocs/langs/es_ES/website.lang +++ b/htdocs/langs/es_ES/website.lang @@ -13,7 +13,7 @@ WEBSITE_CSS_INLINE=Contenido del archivo CSS (común a todas las páginas) WEBSITE_JS_INLINE=Contenido del archivo Javascript (común a todas las páginas) WEBSITE_HTML_HEADER=Adición en la parte inferior del encabezado HTML (común a todas las páginas) WEBSITE_ROBOT=Archivo de robots (robots.txt) -WEBSITE_HTACCESS=Website .htaccess file +WEBSITE_HTACCESS=Archivo .htaccess del sitio web HtmlHeaderPage=Encabezado HTML (específico de esta página solamente) PageNameAliasHelp=Nombre o alias de la página.
    Este alias es utilizado también para construir una URL SEO cuando el website sea lanzado desde un Host Virtual de un servidor (como Apache, Nginx...). Usar el botón "%s" para editar este alias. EditTheWebSiteForACommonHeader=Nota: Si desea definir un encabezado personalizado para todas las páginas, edite el encabezado en el nivel del sitio en lugar de en la página/contenedor. @@ -54,7 +54,7 @@ YouCanEditHtmlSourceckeditor=Puede editar código fuente HTML utilizando el bot YouCanEditHtmlSource=
    Puede incluir código PHP en este fuente usando los tags <?php ?>. Dispone de estas variables globales: $conf, $langs, $db, $mysoc, $user, $website.

    También puede incluir contenido de otra Página/Contenedor con la siguiente sintaxis:
    <?php includeContainer('alias_of_container_to_include'); ?>

    Para incluir un enlace para descargar un archivo guardado en el directorio documents, use el wrapper document.php :
    Por ejemplo, para un archivo de documents/ecm (es necesario estar logueado), la sintaxis:
    <a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
    Para un archivo de into documents/medias (directorio abierto para acceso público), la sintaxis es:
    <a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
    Para un archivo compartido mediante un enlace compartido (acceso abierto utilizando la clave hash para compartir del archivo), la sintaxis es:
    <a href="/document.php?hashp=publicsharekeyoffile">

    Para incluir una imagen guardada en el directorio documents , use el wrapper viewimage.php :
    Ejemplo para una imagen de documents/medias (acceso abierto), la sintaxis es:
    <a href="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
    ClonePage=Clonar página/contenedor CloneSite=Clonar sitio -SiteAdded=Website added +SiteAdded=Sitio web agregado ConfirmClonePage=Por favor ingrese el código/alias de la nueva página y si es una traducción de la página clonada. PageIsANewTranslation=¿La nueva página es una traducción de la página actual? LanguageMustNotBeSameThanClonedPage=Usted clona una página como una traducción. El idioma de la nueva página debe ser diferente al idioma de la página de origen. @@ -68,8 +68,8 @@ ImportSite=Importar plantilla de sitio web IDOfPage=Id de la página Banner=Banner BlogPost=Entrada en el blog -WebsiteAccount=Website account -WebsiteAccounts=Website accounts +WebsiteAccount=Cuenta del sitio web +WebsiteAccounts=Cuentas del sitio web AddWebsiteAccount=Crear cuenta de sitio web BackToListOfThirdParty=Volver a la lista de Terceros DisableSiteFirst=Deshabilite primero el sitio web @@ -78,7 +78,7 @@ AnotherContainer=Otro contenedor WEBSITE_USE_WEBSITE_ACCOUNTS=Habilitar tabla de cuentas del sitio web WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Habilitar tabla para almacenar cuentas del sitio web (inicio de sesión/contraseña) para cada sitio web/tercero YouMustDefineTheHomePage=Antes debe definir la página de inicio por defecto -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved to experienced user. Depending on the complexity of source page, the result of importation may differs once imported from original. Also if the source page use common CSS style or not compatible javascript, it may break the look or features of the Website editor when working on this page. This method is faster way to have a page but it is recommanded to create your new page from scratch or from a suggested page template.
    Note also that only edition of HTML source will be possible when a page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Atención: la creación de una página web mediante la importación de una página web externa está reservada para usuarios experimentados. Dependiendo de la complejidad de la página de origen, el resultado de la importación puede diferir una vez importado del original. Además, si la página de origen utiliza un estilo CSS común o un javascript no compatible, puede interrumpir el aspecto o las características del editor del sitio web al trabajar en esta página. Este método es una forma más rápida de tener una página, pero se recomienda crear su nueva página desde cero o desde una plantilla de página sugerida.
    También tenga en cuenta que solo será posible la edición de código HTML cuando el contenido de una página se haya inicializado al agarrar desde una página externa (el editor "en línea" NO estará disponible) OnlyEditionOfSourceForGrabbedContent=Nota: solo será posible editar una fuente HTML cuando el contenido de una página se integre utilizando una página externa GrabImagesInto=Obtener también imágenes encontradas en css y página. ImagesShouldBeSavedInto=Las imágenes deben guardarse en el directorio @@ -89,7 +89,7 @@ CorporateHomePage=Página de inicio corporativa EmptyPage=Página vacía ExternalURLMustStartWithHttp=La URL externa debe comenzar con http:// o https:// ZipOfWebsitePackageToImport=Archivo zip del paquete de sitio web -ShowSubcontainers=Include dynamic content +ShowSubcontainers=Incluir contenido dinámico InternalURLOfPage=URL interna de la página ThisPageIsTranslationOf=Esta página/contenedor es traducción de ThisPageHasTranslationPages=Esta página/contenedor tiene traducción diff --git a/htdocs/langs/es_MX/banks.lang b/htdocs/langs/es_MX/banks.lang index 60345a1ec6e..37a09ed7694 100644 --- a/htdocs/langs/es_MX/banks.lang +++ b/htdocs/langs/es_MX/banks.lang @@ -17,7 +17,6 @@ AccountStatementShort=Estado AccountStatements=Estados de cuenta LastAccountStatements=Últimos estados de cuenta IOMonthlyReporting=Reporte mensual -RIBControlError=Falló la comprobación de integridad de los valores. Esto significa que la información para éste número de cuenta está incompleta o incorrecta (compruebe el país, números y CLABE). MenuNewFinancialAccount=Nueva cuenta financiera EditFinancialAccount=Editar cuenta LabelBankCashAccount=Etiqueta de cuenta o caja @@ -50,7 +49,6 @@ BankLineConciliated=Entrada reconciliada CustomerInvoicePayment=Pago de cliente WithdrawalPayment=Pago de retiro SocialContributionPayment=Pago de impuesto social/fiscal -TransferDesc=Transferencia de una cuenta a otra, Dolibarr escribirá dos registros (un débito en la cuenta de origen y un crédito en la cuenta de destino, para esta transacción se utilizará la misma cantidad (excepto signo), etiqueta y fecha) TransferFromToDone=La transferencia de %s hacia %s de %s %s ha sido registrada. ValidateCheckReceipt=¿Validar este recibo de cheque? ConfirmValidateCheckReceipt=¿Está seguro de que desea validar este recibo de cheques, ningún cambio será posible una vez hecho esto? @@ -58,7 +56,6 @@ DeleteCheckReceipt=¿Eliminar este recibo de cheque? BankChecks=Cheques bancarios BankChecksToReceipt=Cheques en espera de depósito ShowCheckReceipt=Mostrar recibo de depósito de cheque -NumberOfCheques=Número de cheque DeleteTransaction=Eliminar la entrada ExportDataset_banque_2=Ficha de depósito TransactionOnTheOtherAccount=Transacción en la otra cuenta @@ -67,8 +64,6 @@ PaymentNumberUpdateFailed=Número de pago no se pudo actualizar PaymentDateUpdateSucceeded=Fecha de pago actualizada con éxito PaymentDateUpdateFailed=La fecha de pago no se pudo actualizar ShowAllAccounts=Mostrar todas las cuentas -FutureTransaction=Transacción futura. No hay manera de conciliar. -SelectChequeTransactionAndGenerate=Seleccione/filtre los cheques a incluir en el recibo de depósito de cheque y haga clic en "Crear". InputReceiptNumber=Seleccione el estado de cuenta bancaria relacionado con la conciliación. Utilice un valor numérico ordenable: AAAAMM o AAAAMMDD EventualyAddCategory=Eventualmente, especifique una categoría en la que clasificar los registros ThenCheckLinesAndConciliate=A continuación, compruebe las líneas presentes en el estado de cuenta bancaria y haga clic diff --git a/htdocs/langs/et_EE/banks.lang b/htdocs/langs/et_EE/banks.lang index 7a49c2fa6ed..8a259c319af 100644 --- a/htdocs/langs/et_EE/banks.lang +++ b/htdocs/langs/et_EE/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/eu_ES/banks.lang b/htdocs/langs/eu_ES/banks.lang index 536cd97472a..6d2f6f8dc4b 100644 --- a/htdocs/langs/eu_ES/banks.lang +++ b/htdocs/langs/eu_ES/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/fa_IR/banks.lang b/htdocs/langs/fa_IR/banks.lang index 18b90e887a3..74533e317b4 100644 --- a/htdocs/langs/fa_IR/banks.lang +++ b/htdocs/langs/fa_IR/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/fi_FI/banks.lang b/htdocs/langs/fi_FI/banks.lang index 29fddbc2f71..8bd40de387b 100644 --- a/htdocs/langs/fi_FI/banks.lang +++ b/htdocs/langs/fi_FI/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Lisää muita maksuja SEPAMandate=SEPA mandate YourSEPAMandate=SEPA-toimeksiantonne FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/fr_CA/banks.lang b/htdocs/langs/fr_CA/banks.lang index 86feb35c9f2..27d96e5a47b 100644 --- a/htdocs/langs/fr_CA/banks.lang +++ b/htdocs/langs/fr_CA/banks.lang @@ -24,7 +24,6 @@ Reconciled=Réconcilié NotReconciled=Non réconcilié SocialContributionPayment=Règlement charge sociale MenuBankInternalTransfer=Transfert interne -TransferDesc=Transfert d'un compte à un autre, Dolibarr écrira deux enregistrements (un compte débiteur dans un compte source et un crédit dans un compte cible. Le même montant (sauf le signe), l'étiquette et la date seront utilisés pour cette transaction) ValidateCheckReceipt=Validez cette facture? ConfirmValidateCheckReceipt=Êtes-vous sûr de vouloir valider cette facture, aucun changement ne sera possible une fois que cela sera fait? DeleteCheckReceipt=Supprimer ce reçu de facturation? @@ -49,5 +48,4 @@ ConfirmRejectCheck=Êtes-vous sûr de vouloir marquer ce contrôle comme rejeté RejectCheckDate=Date à laquelle le chèque a été retourné CheckRejected=Chèque renvoyé CheckRejectedAndInvoicesReopened=Chèques retournés et factures rouvertes -DocumentModelSepaMandate=Modèle de mandat SEPA. Utile pour les pays européens en CEE seulement. DocumentModelBan=Modèle pour imprimer une page avec des informations BAN. diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index ad93ef9427b..fba0fdd7152 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -305,7 +305,7 @@ ModuleFamilyTechnic=Outils multi-modules ModuleFamilyExperimental=Modules expérimentaux ModuleFamilyFinancial=Modules financiers (Compta/trésorerie) ModuleFamilyECM=Gestion électronique de documents (GED) -ModuleFamilyPortal=Websites and other frontal application +ModuleFamilyPortal=Sites web et autres applications frontales ModuleFamilyInterface=Interfaces avec des systèmes externes MenuHandlers=Gestionnaires de menu MenuAdmin=Édition menu @@ -487,7 +487,7 @@ DAV_ALLOW_ECM_DIRTooltip=Répertoire racine où tous les fichiers sont télécha Module0Name=Utilisateurs & Groupes Module0Desc=Gestion des utilisateurs / employés et groupes Module1Name=Tiers -Module1Desc=Companies and contacts management (customers, prospects...) +Module1Desc=Gestion des tiers (clients, prospects) et contacts Module2Name=Commercial Module2Desc=Gestion commerciale Module10Name=Comptabilité @@ -1843,7 +1843,7 @@ LoadThirdPartyFromName=Charger le tiers à partir du nom (charger uniquement) LoadThirdPartyFromNameOrCreate=Charger le tiers à partir du nom (créer si non trouvé) WithDolTrackingID=ID Tracker Dolibarr trouvé WithoutDolTrackingID=ID Tracker Dolibarr non trouvé -FormatZip=Code postal +FormatZip=Zip ##### Resource #### ResourceSetup=Configuration du module Ressource UseSearchToSelectResource=Utilisez un champ avec auto-complétion pour choisir les ressources (plutôt qu'une liste déroulante). diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang index ac689ef4e18..93ab0eaf858 100644 --- a/htdocs/langs/fr_FR/banks.lang +++ b/htdocs/langs/fr_FR/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Créer paiements divers SEPAMandate=Mandat SEPA YourSEPAMandate=Votre mandat SEPA FindYourSEPAMandate=Voici votre mandat SEPA pour autoriser notre société à réaliser les prélèvements depuis votre compte bancaire. Merci de retourner ce mandat signé (scan du document signé) ou en l'envoyant par courrier à -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Remplissez automatiquement le champ 'numéro de relevé bancaire' avec le dernier numéro lors du rapprochement diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index 5ac48903600..7e3edff4ce6 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -33,12 +33,12 @@ FilterRefOrLabelOrBC=Recherche (Ref/Lib.) UserNeedPermissionToEditStockToUsePos=Vous demandez de réduire le stock lors de la création de la facture. L'utilisateur qui utilise le Point De Vente doit donc avoir l'autorisation de modifier le stock. DolibarrReceiptPrinter=Imprimante reçu PointOfSale=Point de Vente -PointOfSaleShort=POS +PointOfSaleShort=PdV CloseBill=Fermer la facture Floors=Etages Floor=Etage AddTable=Ajouter une table Place=Marché -TakeposConnectorNecesary='TakePOS Connector' required +TakeposConnectorNecesary='Connecteur TakePOS' requis OrderPrinters=Commande imprimantes SearchProduct=Rechercher un produit diff --git a/htdocs/langs/fr_FR/dict.lang b/htdocs/langs/fr_FR/dict.lang index 932e41305b0..b9d965ca425 100644 --- a/htdocs/langs/fr_FR/dict.lang +++ b/htdocs/langs/fr_FR/dict.lang @@ -306,7 +306,7 @@ DemandReasonTypeSRC_WOM=Bouche à oreille DemandReasonTypeSRC_PARTNER=Partenaire DemandReasonTypeSRC_EMPLOYEE=Employé DemandReasonTypeSRC_SPONSORING=Parrainage/Sponsoring -DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +DemandReasonTypeSRC_SRC_CUSTOMER=Contact entrant d'un client #### Paper formats #### PaperFormatEU4A0=Format 4A0 PaperFormatEU2A0=Format 2A0 diff --git a/htdocs/langs/fr_FR/ecm.lang b/htdocs/langs/fr_FR/ecm.lang index e7e330c1279..daea9b744da 100644 --- a/htdocs/langs/fr_FR/ecm.lang +++ b/htdocs/langs/fr_FR/ecm.lang @@ -34,8 +34,8 @@ ECMDocsByProjects=Documents associés aux projets ECMDocsByUsers=Documents associés aux utilisateurs ECMDocsByInterventions=Documents associés aux interventions ECMDocsByExpenseReports=Documents associés aux notes de frais -ECMDocsByHolidays=Documents linked to holidays -ECMDocsBySupplierProposals=Documents linked to supplier proposals +ECMDocsByHolidays=Documents liés aux congès +ECMDocsBySupplierProposals=Documents liés aux propositions fournisseurs ECMNoDirectoryYet=Aucun répertoire créé ShowECMSection=Afficher répertoire DeleteSection=Suppression répertoire diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang index 6916df8ba60..2799105a3e8 100644 --- a/htdocs/langs/fr_FR/holiday.lang +++ b/htdocs/langs/fr_FR/holiday.lang @@ -112,7 +112,7 @@ NoticePeriod=Délai de prévenance HolidaysToValidate=Valider les demandes de congés HolidaysToValidateBody=Veuillez trouver ci-dessous une demande de congés à valider. HolidaysToValidateDelay=Cette demande de congés a été effectuée dans un délai de moins de %s jours avant ceux-ci. -HolidaysToValidateAlertSolde=The user who made this leave request does not have enough available days. +HolidaysToValidateAlertSolde=L'utilisateur ayant fait cette demande de congés payés n'a pas le solde requis. HolidaysValidated=Validation de la demande de congés HolidaysValidatedBody=Votre demande de congés du %s au %s vient d'être approuvée. HolidaysRefused=Congés refusés diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 6774bf12834..d54e0034bc1 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -200,7 +200,7 @@ MigrationRemiseEntity=Mettre à jour le champ "entity" de la table "llx_societe_ MigrationRemiseExceptEntity=Mettre à jour le champ "entity" de la table "llx_societe_remise_except" MigrationUserRightsEntity=Mise à jour du champ entity de llx_user_rights MigrationUserGroupRightsEntity=Mise à jour du champ entity de llx_usergroup_rights -MigrationUserPhotoPath=Migration of photo paths for users +MigrationUserPhotoPath=Migration des chemins de photos pour les utilisateurs MigrationReloadModule=Rechargement du module %s MigrationResetBlockedLog=Réinitialiser le module BlockedLog pour l'algorithme v7 ShowNotAvailableOptions=Afficher les options non disponibles diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index 1b6468fb574..c1abf964395 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -848,9 +848,9 @@ ModuleBuilder=Générateur de Module SetMultiCurrencyCode=Choisir la devise BulkActions=Actions de masse ClickToShowHelp=Cliquez pour montrer l'info-bulle d'aide -WebSite=Website +WebSite=Site web WebSites=Sites web -WebSiteAccounts=Website accounts +WebSiteAccounts=Comptes de site web ExpenseReport=Note de frais ExpenseReports=Notes de frais HR=HR @@ -868,9 +868,9 @@ LeadOrProject=Opportunités | Projet LeadsOrProjects=Opportunités | Projets Lead=Opportunité Leads=Opportunités -ListOpenLeads=Liste des opportunités ouvertes +ListOpenLeads=Liste des opp. ouvertes ListOpenProjects=Liste des projets ouverts -NewLeadOrProject=Nouvelle opportunité ou projet +NewLeadOrProject=Nouvelle opp. ou projet Rights=Permissions LineNb=No ligne IncotermLabel=Incoterms diff --git a/htdocs/langs/fr_FR/modulebuilder.lang b/htdocs/langs/fr_FR/modulebuilder.lang index 215e6c13172..fce1f10b7cd 100644 --- a/htdocs/langs/fr_FR/modulebuilder.lang +++ b/htdocs/langs/fr_FR/modulebuilder.lang @@ -64,7 +64,7 @@ TestClassFile=Fichier de tests unitaires PHP SqlFile=Fichier SQL PageForLib=Fichier pour les librairies PHP SqlFileExtraFields=Fichier SQL pour les attributs complémentaires -SqlFileKey=Fichier Sql pour les clés +SqlFileKey=Fichier SQL pour les clés et index AnObjectAlreadyExistWithThisNameAndDiffCase=Un objet existe déjà avec ce nom dans une casse différente UseAsciiDocFormat=Vous pouvez utiliser le format Markdown, mais il est recommandé d'utiliser le format Asciidoc (comparaison entre .md et .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) IsAMeasure=Est une mesure diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index ebb13aca043..d6d7f092877 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -262,6 +262,6 @@ WEBSITE_PAGEURL=URL de la page WEBSITE_TITLE=Titre WEBSITE_DESCRIPTION=Description WEBSITE_IMAGE=Image -WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a preview of a list of blog posts). +WEBSITE_IMAGEDesc=Chemin relatif du média image. Vous pouvez garder ce champ vide car il est rarement utilisé (cela peut être utilisé par du contenu dynamique pour afficher un aperçu de page de type "blog_post"). WEBSITE_KEYWORDS=Mots clés LinesToImport=Lignes à importer diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index 3c66c355246..571376ebeb0 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -281,7 +281,7 @@ ProductsOrServicesTranslations=Traduction des produits ou des services TranslatedLabel=Titre traduit TranslatedDescription=Description traduite TranslatedNote=Notes traduites -ProductWeight=Poids pour 1 articlejavascript:; +ProductWeight=Poids pour 1 article ProductVolume=Volume pour 1 article WeightUnits=Unité de poids VolumeUnits=Unité de volume diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index 8cd53d0aed4..7b904e37bea 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -204,7 +204,7 @@ ListInventory=Liste StockSupportServices=La gestion des stocks prend en charge les services StockSupportServicesDesc=Par défaut, seul les produits/services de type "produit" peuvent bénéficier d'une gestion de stock. En activant ce paramètre, et si le module Services est activé, la gestion de stock pourra être appliquée aux articles de type "service". ReceiveProducts=Recevoir produits -StockIncreaseAfterCorrectTransfer=Augmenter par correction / transfert -StockDecreaseAfterCorrectTransfer=Diminution par correction / transfert +StockIncreaseAfterCorrectTransfer=Augmentation par correction/transfert +StockDecreaseAfterCorrectTransfer=Diminution par correction/transfert StockIncrease=Augmentation du stock StockDecrease=Diminution du stock diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang index 2b1e2371731..55c9df5d9b8 100644 --- a/htdocs/langs/fr_FR/website.lang +++ b/htdocs/langs/fr_FR/website.lang @@ -13,15 +13,15 @@ WEBSITE_CSS_INLINE=Contenu du fichier CSS (commun à toute les pages) WEBSITE_JS_INLINE=Contenu du fichier Javascript (commun à toutes les pages) WEBSITE_HTML_HEADER=Ajout en bas de l'en-tête HTML (commun à toutes les pages) WEBSITE_ROBOT=Fichier robot (robots.txt) -WEBSITE_HTACCESS=Website .htaccess file +WEBSITE_HTACCESS=Fichier .htaccess du site web HtmlHeaderPage=En-tête HTML (spécifique pour la page uniquement) PageNameAliasHelp=Nom ou alias de la page.
    Cet alias est également utilisé pour forger une URL SEO lorsque le site Web est exécuté à partir d'un hôte virtuel d'un serveur Web (comme Apache, Nginx, ...). Utilisez le bouton "%s" pour modifier cet alias. EditTheWebSiteForACommonHeader=Remarque: Si vous souhaitez définir un en-tête personnalisé pour toutes les pages, modifiez l'en-tête au niveau du site plutôt qu'au niveau page/container. MediaFiles=Répertoire de médias -EditCss=Modifier les propriétés du site web +EditCss=Propriétés du site web EditMenu=Modifier menu EditMedias=Editer médias -EditPageMeta=Modifier les propriétés de la page/container +EditPageMeta=Propriétés page/container EditInLine=Editer en ligne AddWebsite=Ajouter site web Webpage=Page/container Web @@ -54,7 +54,7 @@ YouCanEditHtmlSourceckeditor=Vous pouvez éditer le code source en activant l'é YouCanEditHtmlSource=
    Vous pouvez inclure du code PHP dans le source en utilisant le tags <?php ?>. Les variables globales suivantes sont disponibles: $conf, $langs, $db, $mysoc, $user, $website, $websitepage, $weblang.

    Vous pouvez aussi inclure le contenu d'une autre page/containeur avec la syntaxe suivante:
    <?php includeContainer('alias_of_container_to_include'); ?>

    Vous pouvez faire une redirection sur une autre Page/Containeur avec la syntax (Note: N'afficher pas de contenu avant un redirect):
    <?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

    Pour ajouter un lien vers une autre page, utilisez la syntax
    <a href="alias_of_page_to_link_to.php">mylink<a>

    Pour inclure un lien pour télécharger un fichier stocké dans le répertoire documentsutilisez le wrapper documents.php:
    Example, pour un fichier dans documents/ecm (besoin d'être loggué), la syntaxe est:
    <a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
    Pour un fichier dans documents/mdedias (répertoire ouvert au publique), la syntaxe est:
    <a href="/document.php?modulepart=medias&file=[relative_dir]/filename.ext">.
    Pour un fichier partagé avec un lien de partage (accès ouvert en utilisant la clé de partage du fichier), la syntaxe est:
    <a href="/document.php?hashp=publicsharekeyoffile">

    Pour inclure une image stockée dans le répertoire documents, utilisez le wrapper viewimage.php:
    Example, pour une image dans documents/medias (accès ouvert), la syntax est:
    <a href="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
    ClonePage=Cloner la page/container CloneSite=Cloner le site -SiteAdded=Website added +SiteAdded=Site web ajouté ConfirmClonePage=Veuillez entrer le code/alias de la nouvelle page et s'il s'agit d'une traduction de la page clonée. PageIsANewTranslation=La nouvelle page est une traduction de la page en cours ? LanguageMustNotBeSameThanClonedPage=Vous clonez une page comme traduction. La langue de la nouvelle page doit être différente de la langue de la page source. @@ -68,8 +68,8 @@ ImportSite=Importer modèle de site web IDOfPage=Id de page Banner=Bandeau BlogPost=Article de Blog -WebsiteAccount=Website account -WebsiteAccounts=Website accounts +WebsiteAccount=Compte de site Web +WebsiteAccounts=Comptes de site web AddWebsiteAccount=Créer un compte sur le site web BackToListOfThirdParty=Retour à la liste pour le Tiers DisableSiteFirst=Désactiver le site Web d'abord @@ -78,7 +78,7 @@ AnotherContainer=Un autre container WEBSITE_USE_WEBSITE_ACCOUNTS=Activer la table des comptes du site Web WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Activer la table pour stocker les comptes de site Web (login/pass) pour chaque site / tiers YouMustDefineTheHomePage=Vous devez d'abord définir la page d'accueil par défaut -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved to experienced user. Depending on the complexity of source page, the result of importation may differs once imported from original. Also if the source page use common CSS style or not compatible javascript, it may break the look or features of the Website editor when working on this page. This method is faster way to have a page but it is recommanded to create your new page from scratch or from a suggested page template.
    Note also that only edition of HTML source will be possible when a page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Avertissement: La création d'une page Web en important une page Web externe est réservée à un utilisateur expérimenté. Selon la complexité de la page source, le résultat de l'importation peut différer une fois importé de l'original. De même, si la page source utilise un style CSS commun ou un code JavaScript non compatible, cela peut casser l'apparence ou les fonctionnalités de l'éditeur de site Web lorsque vous travaillez sur cette page. Cette méthode est un moyen plus rapide d’avoir une page, mais il est recommandé de créer votre nouvelle page à partir de rien ou à partir d’un modèle de page suggéré.
    Notez également que seule l’édition de la source HTML sera possible lorsqu’un contenu de page aura été initialisé par une capture. à partir d'une page externe (l'éditeur "en ligne" ne sera PAS disponible) OnlyEditionOfSourceForGrabbedContent=Seule l'édition de source HTML est possible lorsque le contenu a été aspiré depuis un site externe GrabImagesInto=Aspirer aussi les images trouvées dans les css et la page. ImagesShouldBeSavedInto=Les images doivent être sauvegardées dans le répertoire diff --git a/htdocs/langs/he_IL/banks.lang b/htdocs/langs/he_IL/banks.lang index 37a1d03a2d3..5bc061f31f3 100644 --- a/htdocs/langs/he_IL/banks.lang +++ b/htdocs/langs/he_IL/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index 0f9c332728f..cec053ef84d 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -498,7 +498,7 @@ Module22Name=Masovno slanje e-pošte Module22Desc=Upravljanje masovnim slanjem e-pošte Module23Name=Energija Module23Desc=Praćenje potrošnje energije -Module25Name=Narudžbe kupaca +Module25Name=Narudžbe kupca Module25Desc=Upravljanje narudžbama kupaca Module30Name=Računi Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers @@ -677,11 +677,11 @@ Permission76=Izvoz podataka Permission78=Čitaj pretplate Permission79=Kreiraj/izmjeni pretplate Permission81=Čitaj narudžbe kupca -Permission82=Kreiraj/izmjeni narudžbe kupaca -Permission84=Ovjeri narudžbe kupaca -Permission86=Pošalji narudžbe kupaca -Permission87=Zatvori narudžbe kupaca -Permission88=Otkaži narudžbe kupaca +Permission82=Izradi/izmjeni narudžbe kupaca +Permission84=Ovjeri narudžbu kupca +Permission86=Pošalji narudžbu kupca +Permission87=Zatvori narudžbu kupca +Permission88=Otkaži potvrdu Permission89=Obriši narudžbe kupaca Permission91=Čitaj društvene ili fiskalne poreze i PDV Permission92=Kreiraj/izmjeni društvene ili fiskalne poreze i PDV @@ -1750,7 +1750,7 @@ MailToSendInvoice=Računi za kupce MailToSendShipment=Isporuke MailToSendIntervention=Intervencije MailToSendSupplierRequestForQuotation=Quotation request -MailToSendSupplierOrder=Narudžbenice +MailToSendSupplierOrder=Narudžbe dobavljačima MailToSendSupplierInvoice=Računi dobavljača MailToSendContract=Ugovori MailToThirdparty=Treće osobe diff --git a/htdocs/langs/hr_HR/banks.lang b/htdocs/langs/hr_HR/banks.lang index 4b3ee46de97..72ee683d1ed 100644 --- a/htdocs/langs/hr_HR/banks.lang +++ b/htdocs/langs/hr_HR/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/hr_HR/bills.lang b/htdocs/langs/hr_HR/bills.lang index f3310b08fd8..44fe2b0ec3e 100644 --- a/htdocs/langs/hr_HR/bills.lang +++ b/htdocs/langs/hr_HR/bills.lang @@ -26,10 +26,10 @@ InvoiceProFormaDesc=Proforma invoice is an image of a true invoice but ha InvoiceReplacement=Zamjenski račun InvoiceReplacementAsk=Zamjenski račun za račun InvoiceReplacementDesc=Replacement invoice is used to cancel and completely replace an invoice with no payment already received.

    Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. -InvoiceAvoir=Knjižno odobrenje -InvoiceAvoirAsk=Knjižno odobrenje za ispravak računa +InvoiceAvoir=Storno računa/knjižno odobrenje +InvoiceAvoirAsk=Storno računa/knjižno odobrenje za ispravak računa InvoiceAvoirDesc=The credit note is a negative invoice used to correct the fact that an invoice has an amount that differs from the amount really paid (eg customer paid too much by mistake, or will not pay completely since he returned some products). -invoiceAvoirWithLines=Izradi knjižno odobrenje sa stavkama iz izvornog računa +invoiceAvoirWithLines=Izradi storno računa sa stavkama iz izvornog računa invoiceAvoirWithPaymentRestAmount=Izradi knjižno odobrenje s preostalim neplaćenim iznosom iz izvornog računa invoiceAvoirLineWithPaymentRestAmount=Knjižno odobrenje za preostali neplaćeni iznos ReplaceInvoice=Zamijeni račun %s @@ -100,7 +100,7 @@ ClassifyClosed=Označi kao zatvoreno ClassifyUnBilled=Označi kao "nezaračunato" CreateBill=Izradi račun CreateCreditNote=Create credit note -AddBill=Izradi račun ili knjižno odobrenje +AddBill=Izradi račun ili storno računa/knjižno odobrenje AddToDraftInvoices=Dodati u predložak računa DeleteBill=Izbriši račun SearchACustomerInvoice=Traži račun za kupca @@ -284,7 +284,7 @@ RelativeDiscount=Relativni popust GlobalDiscount=Opći popust CreditNote=Bonifikacija CreditNotes=Bonifikacija -CreditNotesOrExcessReceived=Credit notes or excess received +CreditNotesOrExcessReceived=Storno računa/knjižno odobrenje Deposit=Down payment Deposits=Down payments DiscountFromCreditNote=Popust iz bonifikacije %s diff --git a/htdocs/langs/hr_HR/main.lang b/htdocs/langs/hr_HR/main.lang index d4be6ef829f..66d8d43c11f 100644 --- a/htdocs/langs/hr_HR/main.lang +++ b/htdocs/langs/hr_HR/main.lang @@ -615,7 +615,7 @@ CustomerPreview=Pregled kupca SupplierPreview=Prikaz dobavljača ShowCustomerPreview=Prikaži kupca ShowSupplierPreview=Prikaži dobavljača -RefCustomer=Oznaka kupca +RefCustomer=Vezani dokument pri kupcu Currency=Valuta InfoAdmin=Podaci za administratore Undo=Povrati @@ -925,7 +925,7 @@ SearchIntoTasks=Zadaci SearchIntoCustomerInvoices=Računi za kupce SearchIntoSupplierInvoices=Računi dobavljača SearchIntoCustomerOrders=Narudžbe kupaca -SearchIntoSupplierOrders=Narudžbenice +SearchIntoSupplierOrders=Narudžbe dobavljačima SearchIntoCustomerProposals=Ponude kupca SearchIntoSupplierProposals=Ponude dobavljača SearchIntoInterventions=Zahvati diff --git a/htdocs/langs/hr_HR/orders.lang b/htdocs/langs/hr_HR/orders.lang index d5f32c6267d..2f5b9e34621 100644 --- a/htdocs/langs/hr_HR/orders.lang +++ b/htdocs/langs/hr_HR/orders.lang @@ -14,8 +14,8 @@ NewOrder=Nova narudžba ToOrder=Napravi narudžbu MakeOrder=Napravi narudžbu SupplierOrder=Narudžbenica -SuppliersOrders=Narudžbenice -SuppliersOrdersRunning=Otvorene narudžbenice +SuppliersOrders=Narudžbe dobavljačima +SuppliersOrdersRunning=Otvorene narudžbe dobavljačima CustomerOrder=Narudžba kupca CustomersOrders=Narudžbe kupaca CustomersOrdersRunning=Trenutne narudžbe kupaca @@ -99,7 +99,7 @@ ClassifyShipped=Označi kao isporučeno DraftOrders=Skica narudžbi DraftSuppliersOrders=Draft purchase orders OnProcessOrders=Narudžbe u obradi -RefOrder=Broj narudžbenice +RefOrder=Broj narudžbe kupca RefCustomerOrder=Ref. narudžba kupca RefOrderSupplier=Ref. order for vendor RefOrderSupplierShort=Ref. order vendor diff --git a/htdocs/langs/hu_HU/banks.lang b/htdocs/langs/hu_HU/banks.lang index 8e42a362e85..814936a0b75 100644 --- a/htdocs/langs/hu_HU/banks.lang +++ b/htdocs/langs/hu_HU/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/id_ID/banks.lang b/htdocs/langs/id_ID/banks.lang index 20f87cf09a7..3b81a4074df 100644 --- a/htdocs/langs/id_ID/banks.lang +++ b/htdocs/langs/id_ID/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/is_IS/banks.lang b/htdocs/langs/is_IS/banks.lang index 8047926cc58..b1a53b40503 100644 --- a/htdocs/langs/is_IS/banks.lang +++ b/htdocs/langs/is_IS/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/it_IT/banks.lang b/htdocs/langs/it_IT/banks.lang index f1c1a7b2020..589f7688804 100644 --- a/htdocs/langs/it_IT/banks.lang +++ b/htdocs/langs/it_IT/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Aggiungi pagamenti vari SEPAMandate=Mandato SEPA YourSEPAMandate=I tuoi mandati SEPA FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/ja_JP/banks.lang b/htdocs/langs/ja_JP/banks.lang index c02f3ae141e..1ec50d96bf1 100644 --- a/htdocs/langs/ja_JP/banks.lang +++ b/htdocs/langs/ja_JP/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/ka_GE/banks.lang b/htdocs/langs/ka_GE/banks.lang index 37a1d03a2d3..5bc061f31f3 100644 --- a/htdocs/langs/ka_GE/banks.lang +++ b/htdocs/langs/ka_GE/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/kn_IN/banks.lang b/htdocs/langs/kn_IN/banks.lang index 2e846c6bfb2..dc383eba5cb 100644 --- a/htdocs/langs/kn_IN/banks.lang +++ b/htdocs/langs/kn_IN/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/ko_KR/banks.lang b/htdocs/langs/ko_KR/banks.lang index d8a5177d742..7968c2efef8 100644 --- a/htdocs/langs/ko_KR/banks.lang +++ b/htdocs/langs/ko_KR/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/lo_LA/banks.lang b/htdocs/langs/lo_LA/banks.lang index 1fae4489cd5..a9459fc9326 100644 --- a/htdocs/langs/lo_LA/banks.lang +++ b/htdocs/langs/lo_LA/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/lt_LT/banks.lang b/htdocs/langs/lt_LT/banks.lang index eed0e0f8ec8..a7e11ea50d9 100644 --- a/htdocs/langs/lt_LT/banks.lang +++ b/htdocs/langs/lt_LT/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index f4745ab2fa7..3cae2e5aa41 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -305,7 +305,7 @@ ModuleFamilyTechnic=Multi-moduļu rīki ModuleFamilyExperimental=Eksperimentālie moduļi ModuleFamilyFinancial=Finanšu Moduļi (Grāmatvedība/kase) ModuleFamilyECM=Elektroniskais Satura Vadība (ESV) -ModuleFamilyPortal=Websites and other frontal application +ModuleFamilyPortal=Mājas lapas un citi frontālie lietojumi ModuleFamilyInterface=Interfaces with external systems MenuHandlers=Izvēlnes manipulatori MenuAdmin=Izvēlnes redaktors @@ -487,7 +487,7 @@ DAV_ALLOW_ECM_DIRTooltip=Saknes direktorija, kurā visi faili tiek manuāli aug Module0Name=Lietotāji un grupas Module0Desc=Lietotāju / Darbinieku un Grupu vadība Module1Name=Trešās puses -Module1Desc=Companies and contacts management (customers, prospects...) +Module1Desc=Uzņēmumu un kontaktu pārvaldība (klienti, izredzes ...) Module2Name=Tirdzniecība Module2Desc=Komerciālā pārvaldība Module10Name=Grāmatvedība diff --git a/htdocs/langs/lv_LV/banks.lang b/htdocs/langs/lv_LV/banks.lang index 8f4b7f15ad4..f09df469ba7 100644 --- a/htdocs/langs/lv_LV/banks.lang +++ b/htdocs/langs/lv_LV/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Pievienot dažādus maksājumus SEPAMandate=SEPA mandāts YourSEPAMandate=Jūsu SEPA mandāts FindYourSEPAMandate=Tas ir jūsu SEPA mandāts, lai pilnvarotu mūsu uzņēmumu veikt tiešā debeta pasūtījumu savai bankai. Atgriezt to parakstu (skenēt parakstīto dokumentu) vai nosūtīt pa pastu uz -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automātiski aizpildiet lauku "Bankas izziņu numurs" ar pēdējo paziņojuma numuru, veicot saskaņošanu diff --git a/htdocs/langs/lv_LV/cashdesk.lang b/htdocs/langs/lv_LV/cashdesk.lang index e153eb4610e..77aa33d00ba 100644 --- a/htdocs/langs/lv_LV/cashdesk.lang +++ b/htdocs/langs/lv_LV/cashdesk.lang @@ -39,6 +39,6 @@ Floors=Stāvi Floor=Stāvs AddTable=Pievienot tabulu Place=Vieta -TakeposConnectorNecesary='TakePOS Connector' required +TakeposConnectorNecesary=Ir nepieciešams "TakePOS Connector" OrderPrinters=Pasūtīt printerus SearchProduct=Meklēt produktu diff --git a/htdocs/langs/lv_LV/dict.lang b/htdocs/langs/lv_LV/dict.lang index 1a045f00f62..aa89e81ce7c 100644 --- a/htdocs/langs/lv_LV/dict.lang +++ b/htdocs/langs/lv_LV/dict.lang @@ -306,7 +306,7 @@ DemandReasonTypeSRC_WOM=No mutes mutē DemandReasonTypeSRC_PARTNER=Partneris DemandReasonTypeSRC_EMPLOYEE=Darbinieks DemandReasonTypeSRC_SPONSORING=Sponsorēšana -DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +DemandReasonTypeSRC_SRC_CUSTOMER=Klienta ienākošais kontakts #### Paper formats #### PaperFormatEU4A0=Formāts 4A0 PaperFormatEU2A0=Formāts 2A0 diff --git a/htdocs/langs/lv_LV/ecm.lang b/htdocs/langs/lv_LV/ecm.lang index 12168b0f773..b6db88ee895 100644 --- a/htdocs/langs/lv_LV/ecm.lang +++ b/htdocs/langs/lv_LV/ecm.lang @@ -34,8 +34,8 @@ ECMDocsByProjects=Dokumenti, kas saistīti ar projektiem ECMDocsByUsers=Ar lietotājiem saistītie dokumenti ECMDocsByInterventions=Documents linked to interventions ECMDocsByExpenseReports=Ar izdevumu ziņojumiem saistītie dokumenti -ECMDocsByHolidays=Documents linked to holidays -ECMDocsBySupplierProposals=Documents linked to supplier proposals +ECMDocsByHolidays=Ar brīvdienām saistītie dokumenti +ECMDocsBySupplierProposals=Dokumenti, kas saistīti ar piegādātāju priekšlikumiem ECMNoDirectoryYet=Nav izveidots katalogs ShowECMSection=Rādīt katalogu DeleteSection=Dzēst direktoriju diff --git a/htdocs/langs/lv_LV/holiday.lang b/htdocs/langs/lv_LV/holiday.lang index 9d3967a9f61..8a4177c433b 100644 --- a/htdocs/langs/lv_LV/holiday.lang +++ b/htdocs/langs/lv_LV/holiday.lang @@ -112,7 +112,7 @@ NoticePeriod=Paziņojuma periods HolidaysToValidate=Validate leave requests HolidaysToValidateBody=Zemāk ir atvaļinājuma pieprasījums kuru jāapstiprina HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. -HolidaysToValidateAlertSolde=The user who made this leave request does not have enough available days. +HolidaysToValidateAlertSolde=Lietotājam, kurš ir iesniedzis šo atvaļinājuma pieprasījumu, nav pietiekami daudz pieejamo dienu. HolidaysValidated=Apstiprinātie atvaļinājumu pieprasījumi HolidaysValidatedBody=Jūsu atvaļinājuma pieprasījums no %s līdz %s ir ticis apstiprināts. HolidaysRefused=Pieprasījums noraidīts @@ -124,6 +124,6 @@ NoLeaveWithCounterDefined=There is no leave types defined that need to be follow GoIntoDictionaryHolidayTypes=Iet uz Sākums - Iestatīšana - Vārdnīcas - Atvaļinājuma veids , lai iestatītu dažādu veidu lapas. HolidaySetup=Moduļa brīvdienas uzstādīšana HolidaysNumberingModules=Atvaļinājuma pieprasījumu numerācijas modeļi -TemplatePDFHolidays=Veidne atvaļinājumu pieprasīšanai PDF +TemplatePDFHolidays=PDF veidne atvaļinājumu pieprasīšanai FreeLegalTextOnHolidays=Brīvs teksts PDF WatermarkOnDraftHolidayCards=Ūdenszīmes uz atvaļinājuma pieprasījumiem diff --git a/htdocs/langs/lv_LV/install.lang b/htdocs/langs/lv_LV/install.lang index e2e7307f7e9..8e3851d9194 100644 --- a/htdocs/langs/lv_LV/install.lang +++ b/htdocs/langs/lv_LV/install.lang @@ -200,7 +200,7 @@ MigrationRemiseEntity=Atjauniniet llx_societe_remise objekta lauka vērtību MigrationRemiseExceptEntity=Atjauniniet llx_societe_remise_except objekta lauka vērtību MigrationUserRightsEntity=Atjauniniet llx_user_rights objekta lauka vērtību MigrationUserGroupRightsEntity=Atjauniniet llx_usergroup_rights objekta lauka vērtību -MigrationUserPhotoPath=Migration of photo paths for users +MigrationUserPhotoPath=Lietotāju fotoattēlu migrēšana MigrationReloadModule=Reload module %s MigrationResetBlockedLog=Atjaunot moduli BlockedLog par v7 algoritmu ShowNotAvailableOptions=Parādīt nepieejamās iespējas diff --git a/htdocs/langs/lv_LV/main.lang b/htdocs/langs/lv_LV/main.lang index 9aee459cc9b..3244668bee9 100644 --- a/htdocs/langs/lv_LV/main.lang +++ b/htdocs/langs/lv_LV/main.lang @@ -848,9 +848,9 @@ ModuleBuilder=Moduļu veidotājs SetMultiCurrencyCode=Iestatīt valūtu BulkActions=Lielapjoma darbības ClickToShowHelp=Noklikšķiniet, lai parādītu rīka padomju palīdzību -WebSite=Website +WebSite=Tīmekļa vietne WebSites=Mājas lapas -WebSiteAccounts=Website accounts +WebSiteAccounts=Tīmekļa vietnes konti ExpenseReport=Izdevumu pārskats ExpenseReports=Izdevumu atskaites HR=HR diff --git a/htdocs/langs/lv_LV/other.lang b/htdocs/langs/lv_LV/other.lang index 9a735b24f8c..6695aaa1777 100644 --- a/htdocs/langs/lv_LV/other.lang +++ b/htdocs/langs/lv_LV/other.lang @@ -262,6 +262,6 @@ WEBSITE_PAGEURL=Lapas URL WEBSITE_TITLE=Virsraksts WEBSITE_DESCRIPTION=Apraksts WEBSITE_IMAGE=Attēls -WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a preview of a list of blog posts). +WEBSITE_IMAGEDesc=Attēlu nesēja relatīvais ceļš. Jūs varat to paturēt tukša, jo to reti izmanto (to var izmantot dinamiskais saturs, lai parādītu emuāra ziņu saraksta priekšskatījumu). WEBSITE_KEYWORDS=Atslēgas vārdi LinesToImport=Importējamās līnijas diff --git a/htdocs/langs/lv_LV/website.lang b/htdocs/langs/lv_LV/website.lang index 7b7f4383464..589965895bc 100644 --- a/htdocs/langs/lv_LV/website.lang +++ b/htdocs/langs/lv_LV/website.lang @@ -13,7 +13,7 @@ WEBSITE_CSS_INLINE=CSS file content (common to all pages) WEBSITE_JS_INLINE=Javascript failu saturs (kopīgs visām lapām) WEBSITE_HTML_HEADER=Addition at bottom of HTML Header (common to all pages) WEBSITE_ROBOT=Robotfails (robots.txt) -WEBSITE_HTACCESS=Website .htaccess file +WEBSITE_HTACCESS=Tīmekļa vietne .htaccess fails HtmlHeaderPage=HTML virsraksts (tikai šai lapai) PageNameAliasHelp=Lapas nosaukums vai pseidonīms.
    Šis aizstājvārds tiek izmantots arī, lai izveidotu SEO vietrādi, ja vietne tiek izmantota no Web servera virtuālās saimniekdatora (piemēram, Apacke, Nginx, ...). Izmantojiet pogu " %s , lai rediģētu šo aizstājvārdu. EditTheWebSiteForACommonHeader=Piezīme: ja vēlaties norādīt personalizētu galveni visām lapām, rediģējiet virsrakstu vietnes līmenī, nevis lapā / konteinerā. @@ -54,7 +54,7 @@ YouCanEditHtmlSourceckeditor=Jūs varat rediģēt HTML avota kodu, izmantojot re YouCanEditHtmlSource=
    Jūs varat iekļaut PHP kodu šajā avotā, izmantojot tagus <? php? > . Pieejami šādi globālie mainīgie: $ conf, $ db, $ mysoc, $ user, $ website, $ websitepage, $ weblangs.

    Jūs var iekļaut arī citu lapas / konteinera saturu ar šādu sintaksi:
    <? php includeContainer ('alias_of_container_to_include'); ? >

    Jūs varat veikt novirzīšanu uz citu lapu / konteineru ar šādu sintaksi (Piezīme: novirzīšana):
    <? php redirectToContainer ('alias_ofcontainer_to_redirect_to'); ? >

    Lai pievienotu saiti uz citu lapu, izmantojiet sintaksi:
    <a href = "alias_of_page_to_link_to .php ">mylink<a>

    Lai iekļautu saiti, lai lejupielādētu failu, kas saglabāts dokumentiem , izmantojiet iesaiņojuma document.php mapi:
    Piemēram, failam dokumentos / ecm (jāreģistrē) sintakse ir:
    <a href = "/ document.php? modulepart = ecm & file = [relative_dir /] filename.ext" >
    Ja failā ir dokumenti / mediji (atvērtā direktorijā publiskai piekļuvei), sintakse ir:
    < strong> <a href = "/ document.php? modulepart = media & file =" [relative_dir /] filename.ext ">
    par failu, kas koplietots ar koplietošanas saiti (atvērtā piekļuve, izmantojot faila koplietošanas hash atslēgu) , sintakse ir:
    <a href = "/ document.php? hashp = publicsharekeyoffile" >

    Lai iekļautu attēlu , kas saglabāts direktorijā documents , izmantojiet viewimage.php iesaiņojums:
    Piemērs, lai attēls būtu pieejams dokumentos / plašsaziņas līdzekļos (atvērtā direktorijā publiskai piekļuvei), sintakse ir:
    <img src = "/ viewimage.php? modulepart = medias&file = [relative_dir /] filename .ext ">
    ClonePage=Klonēt lapu / konteineru CloneSite=Klonēt vietni -SiteAdded=Website added +SiteAdded=Tīmekļa vietne ir pievienota ConfirmClonePage=Lūdzu, ievadiet jaunās lapas kodu / aizstājvārdu un, ja tas ir klonētas lapas tulkojums. PageIsANewTranslation=Jaunā lapa ir pašreizējās lapas tulkojums? LanguageMustNotBeSameThanClonedPage=Jūs klons lapas kā tulkojumu. Jaunās lapas valodai jābūt atšķirīgai no avota lapas valodas. @@ -68,8 +68,8 @@ ImportSite=Importēt vietnes veidni IDOfPage=Lapas ID Banner=Baneris BlogPost=Emuāra ziņa -WebsiteAccount=Website account -WebsiteAccounts=Website accounts +WebsiteAccount=Tīmekļa vietnes konts +WebsiteAccounts=Tīmekļa vietnes konti AddWebsiteAccount=Izveidot mājas lapas kontu BackToListOfThirdParty=Atpakaļ uz trešo pušu sarakstu DisableSiteFirst=Vispirms atspējojiet vietni @@ -78,7 +78,7 @@ AnotherContainer=Vēl viens konteiners WEBSITE_USE_WEBSITE_ACCOUNTS=Iespējot tīmekļa vietnes kontu tabulu WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Iespējojiet tabulu, lai saglabātu tīmekļa vietnes kontus (login / pass) katram vietnei / trešās puses kontam YouMustDefineTheHomePage=Vispirms ir jādefinē noklusējuma sākumlapa -OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved to experienced user. Depending on the complexity of source page, the result of importation may differs once imported from original. Also if the source page use common CSS style or not compatible javascript, it may break the look or features of the Website editor when working on this page. This method is faster way to have a page but it is recommanded to create your new page from scratch or from a suggested page template.
    Note also that only edition of HTML source will be possible when a page content has been initialized by grabbing it from an external page ("Online" editor will NOT be available) +OnlyEditionOfSourceForGrabbedContentFuture=Brīdinājums: tīmekļa lapas izveide, importējot ārēju tīmekļa lapu, ir rezervēta pieredzējušam lietotājam. Atkarībā no avota lapas sarežģītības, importēšanas rezultāts var atšķirties, kad tas tiek importēts no oriģināla. Arī tad, ja avota lapā tiek izmantots visbiežāk izmantotais CSS stils vai nesaderīgs javascript, tad, strādājot šajā lapā, tas var sabojāt vietnes redaktora izskatu vai funkcijas. Šī metode ir ātrāks veids, kā izveidot lapu, bet tā tiek ieteikta, lai izveidotu savu jauno lapu no jauna vai no ieteiktās lapas veidnes.
    Jāņem vērā arī tas, ka tikai HTML avota izdevums būs pieejams tikai tad, ja lapas saturs ir inicializēts, satverot tas no ārējās lapas ("Online" redaktors NĒ būs pieejams) OnlyEditionOfSourceForGrabbedContent=Tikai HTML avota izdevums ir pieejams, ja saturs tiek satverts no ārējas vietnes GrabImagesInto=Grab arī attēlus, kas atrodami CSS un lapā. ImagesShouldBeSavedInto=Attēli jāuzglabā mapē diff --git a/htdocs/langs/mk_MK/banks.lang b/htdocs/langs/mk_MK/banks.lang index 37a1d03a2d3..5bc061f31f3 100644 --- a/htdocs/langs/mk_MK/banks.lang +++ b/htdocs/langs/mk_MK/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/mn_MN/banks.lang b/htdocs/langs/mn_MN/banks.lang index 37a1d03a2d3..5bc061f31f3 100644 --- a/htdocs/langs/mn_MN/banks.lang +++ b/htdocs/langs/mn_MN/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/nb_NO/banks.lang b/htdocs/langs/nb_NO/banks.lang index 60248f9fa90..c4cd4dc4727 100644 --- a/htdocs/langs/nb_NO/banks.lang +++ b/htdocs/langs/nb_NO/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Legg til Diverse betalinger SEPAMandate=SEPA mandat YourSEPAMandate=Ditt SEPA-mandat FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/nl_NL/banks.lang b/htdocs/langs/nl_NL/banks.lang index d6f6d0d6ef3..e3dc159e1ad 100644 --- a/htdocs/langs/nl_NL/banks.lang +++ b/htdocs/langs/nl_NL/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Voeg verschillende betalingen toe SEPAMandate=SEPA-mandaat YourSEPAMandate=Uw SEPA-mandaat FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/pl_PL/banks.lang b/htdocs/langs/pl_PL/banks.lang index 0b14db44f38..981a0585f05 100644 --- a/htdocs/langs/pl_PL/banks.lang +++ b/htdocs/langs/pl_PL/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Dodaj inne płatności SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/pt_BR/banks.lang b/htdocs/langs/pt_BR/banks.lang index 6153514723e..75d60abddc7 100644 --- a/htdocs/langs/pt_BR/banks.lang +++ b/htdocs/langs/pt_BR/banks.lang @@ -32,7 +32,6 @@ BankAccountDomiciliation=Endereço da conta BankAccountCountry=País da conta BankAccountOwner=Nome do titular da conta BankAccountOwnerAddress=Endereço do titular da conta -RIBControlError=Verificação da integridade dos valores falhou. Isso significa que esse número de conta não esta completo ou errado (verifique país, número e agência). CreateAccount=Criar conta EditFinancialAccount=Editar conta LabelBankCashAccount=Rótulo do banco ou caixa @@ -79,7 +78,6 @@ NotReconciled=Não conciliada SupplierInvoicePayment=Pagamento a fornecedores SocialContributionPayment=Pagamento de contribuição social BankTransfers=Transferências bancárias -TransferDesc=Transferência de uma conta para outra, o Dolibarr criará dois registros (um débito na conta de origem e um crédito na conta de destino. A mesma quantia (exceto o sinal), rótulo e data serão usados para esta transação). TransferFromToDone=Uma transferência de %s para %s de %s %s foi registrado. ValidateCheckReceipt=Validar este comprovante de cheque? ConfirmValidateCheckReceipt=Você tem certeza que deseja validar este comprovante de cheque, mesmo sabendo que nenhuma mudança poderá ser feita depois? @@ -88,6 +86,7 @@ ConfirmDeleteCheckReceipt=Você tem certeza que deseja excluir este comprovante BankChecks=Cheques do banco BankChecksToReceipt=Cheques aguardando depósito ShowCheckReceipt=Mostrar recibo de depósito do cheque +NumberOfCheques=Nº do Cheque DeleteTransaction=Excluir transação ConfirmDeleteTransaction=Você tem certeza que deseja excluir esta transação? ThisWillAlsoDeleteBankRecord=Isto também excluirá as transações geradas @@ -100,10 +99,10 @@ PaymentNumberUpdateFailed=Número de pagamento não foi possível ser atualizada PaymentDateUpdateFailed=Data de pagamento não foi possível ser atualizada Transactions=Transações BankTransactionLine=Entrada no bancária +AllAccounts=Todas as contas Banco e Caixa BackToAccount=Voltar para conta ShowAllAccounts=Mostrar todas as contas -FutureTransaction=Transação futura. Não pode ser conciliada. -SelectChequeTransactionAndGenerate=Selecionar/filtrar cheques para incluir dentro de recibos de cheques depositados e clique em "Criar". +SelectChequeTransactionAndGenerate=Selecione / filtrar cheques para incluir no recibo do cheque caução e clique em "Criar". InputReceiptNumber=Escolha um estrato bancário relacionado com conciliação. Use um valor numérico classificável (tal como, YYYYMM) EventualyAddCategory=Eventualmente, especifique a categoria na qual os registros será classificado ToConciliate=Conciliar? @@ -115,7 +114,6 @@ ConfirmDeleteRib=Você tem certeza que deseja excluir este registro BAN? ConfirmRejectCheck=Você tem certeza que deseja marcar este cheque como recusado? RejectCheckDate=Data que o cheque foi devolvido BankAccountModelModule=Temas de documentos para as contas bancárias. -DocumentModelSepaMandate=Tema do mandato SEPA. Útil somente para os países europeus na Comunidade Europeia. +DocumentModelSepaMandate=Modelo de mandato SEPA. Uso somente em países da União Européia DocumentModelBan=Tema para imprimir a página com a informação BAN. YourSEPAMandate=Seu mandato Área Única de Pagamentos em Euros -FindYourSEPAMandate=Este é o seu mandato da SEPA (Área Única de Pagamentos em Euros) para autorizar a nossa empresa a fazer uma ordem de débito direto para o seu banco. Obrigado em devolvê-lo assinado (digitalização do documento assinado) ou enviado por correio para diff --git a/htdocs/langs/pt_PT/banks.lang b/htdocs/langs/pt_PT/banks.lang index c680b1a08b9..fecc9f68825 100644 --- a/htdocs/langs/pt_PT/banks.lang +++ b/htdocs/langs/pt_PT/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Adicionar pagamentos diversos SEPAMandate=Mandato SEPA YourSEPAMandate=Seu mandato SEPA FindYourSEPAMandate=Este é o seu mandato da SEPA para autorizar a nossa empresa a efetuar um pedido de débito direto ao seu banco. Devolva-o assinado (digitalização do documento assinado) ou envie-o por correio para -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/ro_RO/banks.lang b/htdocs/langs/ro_RO/banks.lang index dc504710664..0ba7e8bd7bf 100644 --- a/htdocs/langs/ro_RO/banks.lang +++ b/htdocs/langs/ro_RO/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/ru_RU/banks.lang b/htdocs/langs/ru_RU/banks.lang index 9fc5e51f0bc..299d1baa17b 100644 --- a/htdocs/langs/ru_RU/banks.lang +++ b/htdocs/langs/ru_RU/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Добавить смешанные платежи SEPAMandate=Мандат SEPA YourSEPAMandate=Ваш мандат SEPA FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/sk_SK/banks.lang b/htdocs/langs/sk_SK/banks.lang index 008fcbd5526..3a157f1d2ee 100644 --- a/htdocs/langs/sk_SK/banks.lang +++ b/htdocs/langs/sk_SK/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/sl_SI/banks.lang b/htdocs/langs/sl_SI/banks.lang index 272972f4943..6dca963b12f 100644 --- a/htdocs/langs/sl_SI/banks.lang +++ b/htdocs/langs/sl_SI/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/sq_AL/banks.lang b/htdocs/langs/sq_AL/banks.lang index 013dc28dd00..e5729066e4d 100644 --- a/htdocs/langs/sq_AL/banks.lang +++ b/htdocs/langs/sq_AL/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/sr_RS/banks.lang b/htdocs/langs/sr_RS/banks.lang index 7a5b65a2bec..b5815363cb5 100644 --- a/htdocs/langs/sr_RS/banks.lang +++ b/htdocs/langs/sr_RS/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/sv_SE/accountancy.lang b/htdocs/langs/sv_SE/accountancy.lang index 0ffe09de816..8a87252af7e 100644 --- a/htdocs/langs/sv_SE/accountancy.lang +++ b/htdocs/langs/sv_SE/accountancy.lang @@ -4,61 +4,65 @@ ACCOUNTING_EXPORT_SEPARATORCSV=Kolumnseparator för exportfil ACCOUNTING_EXPORT_DATE=Datumformat för exportfil ACCOUNTING_EXPORT_PIECE=Export the number of piece ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Export with global account -ACCOUNTING_EXPORT_LABEL=Export label -ACCOUNTING_EXPORT_AMOUNT=Export amount -ACCOUNTING_EXPORT_DEVISE=Export currency +ACCOUNTING_EXPORT_LABEL=Exportera titel +ACCOUNTING_EXPORT_AMOUNT=Exportera belopp +ACCOUNTING_EXPORT_DEVISE=Exportera valuta Selectformat=Select the format for the file ACCOUNTING_EXPORT_FORMAT=Select the format for the file -ACCOUNTING_EXPORT_ENDLINE=Select the carriage return type +ACCOUNTING_EXPORT_ENDLINE=Välj vagnens returtyp ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name -ThisService=This service -ThisProduct=This product -DefaultForService=Default for service -DefaultForProduct=Default for product -CantSuggest=Can't suggest -AccountancySetupDoneFromAccountancyMenu=Most setup of the accountancy is done from the menu %s +ThisService=Tjänsten +ThisProduct=Den här produkten +DefaultForService=Standard för service +DefaultForProduct=Standard för produkter +CantSuggest=Kan inte föreslå +AccountancySetupDoneFromAccountancyMenu=De flesta inställningarna för bokföringen görs från menyn %s ConfigAccountingExpert=Konfiguration av modulen redovisningsexpert -Journalization=Journalization +Journalization=Journalisering Journaux=Journaler JournalFinancial=Finansiella journaler BackToChartofaccounts=Avkastning kontoplan Chartofaccounts=Kontoplan CurrentDedicatedAccountingAccount=Current dedicated account -AssignDedicatedAccountingAccount=New account to assign -InvoiceLabel=Invoice label -OverviewOfAmountOfLinesNotBound=Overview of amount of lines not bound to an accounting account -OverviewOfAmountOfLinesBound=Overview of amount of lines already bound to an accounting account -OtherInfo=Other information -DeleteCptCategory=Remove accounting account from group -ConfirmDeleteCptCategory=Are you sure you want to remove this accounting account from the accounting account group ? -JournalizationInLedgerStatus=Status of journalization -AlreadyInGeneralLedger=Already journalized in ledgers -NotYetInGeneralLedger=Not yet journalized in ledgers -GroupIsEmptyCheckSetup=Group is empty, check setup of the personalized accounting group -DetailByAccount=Show detail by account -AccountWithNonZeroValues=Accounts with non zero values -ListOfAccounts=List of accounts +AssignDedicatedAccountingAccount=Nytt konto att tilldela +InvoiceLabel=Faktura etikett +OverviewOfAmountOfLinesNotBound=Översikt över antalet linjer som inte är kopplade till ett bokföringskonto +OverviewOfAmountOfLinesBound=Översikt över antalet linjer som redan är kopplade till ett bokföringskonto +OtherInfo=Övrig information +DeleteCptCategory=Ta bort redovisningskontot från gruppen +ConfirmDeleteCptCategory=Är du säker på att du vill ta bort det här bokföringskontot från kontogruppen? +JournalizationInLedgerStatus=Status för journalisering +AlreadyInGeneralLedger=Redan journaliserad i ledgers +NotYetInGeneralLedger=Ännu inte journaliserad i ledgers +GroupIsEmptyCheckSetup=Gruppen är tom, kontrollera inställningen av den personliga redovisningsgruppen +DetailByAccount=Visa detaljer efter konto +AccountWithNonZeroValues=Konton med icke-nollvärden +ListOfAccounts=Förteckning över konton +CountriesInEEC=Länder i EEG +CountriesNotInEEC=Länder inte i EEG +CountriesInEECExceptMe=Länder i EEG förutom %s +CountriesExceptMe=Alla länder utom %s -MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup -MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup +MainAccountForCustomersNotDefined=Huvudsakliga bokföringskonto för kunder som inte definierats i installationen +MainAccountForSuppliersNotDefined=Huvudkonton för leverantörer som inte definierats i installationen MainAccountForUsersNotDefined=Main accounting account for users not defined in setup MainAccountForVatPaymentNotDefined=Main accounting account for VAT payment not defined in setup -AccountancyArea=Accounting area +AccountancyArea=Redovisningsområde AccountancyAreaDescIntro=Usage of the accountancy module is done in several step: AccountancyAreaDescActionOnce=The following actions are usually executed one time only, or once per year... AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you the correct default accounting account when making the journalization (writing record in Journals and General ledger) AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies... -AccountancyAreaDescJournalSetup=STEP %s: Create or check content of your journal list from menu %s -AccountancyAreaDescChartModel=STEP %s: Create a model of chart of account from menu %s +AccountancyAreaDescJournalSetup=STEG %s: Skapa eller kolla innehållet i din journallista från menyn %s +AccountancyAreaDescChartModel=STEG %s: Skapa en modell av kontoöversikt från menyn %s AccountancyAreaDescChart=STEP %s: Create or check content of your chart of account from menu %s AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s. AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s. AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of expense report. For this, use the menu entry %s. AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s. -AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expences (miscellaneous taxes). For this, use the menu entry %s. +AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for special expenses (miscellaneous taxes). For this, use the menu entry %s. AccountancyAreaDescDonation=STEP %s: Define default accounting accounts for donation. For this, use the menu entry %s. AccountancyAreaDescMisc=STEP %s: Define mandatory default account and default accounting accounts for miscellaneous transactions. For this, use the menu entry %s. AccountancyAreaDescLoan=STEP %s: Define default accounting accounts for loans. For this, use the menu entry %s. @@ -77,31 +81,31 @@ ChangeAndLoad=Change and load Addanaccount=Lägg till ett redovisningskonto AccountAccounting=Redovisningskonto AccountAccountingShort=Konto -SubledgerAccount=Subledger Account -ShowAccountingAccount=Show accounting account -ShowAccountingJournal=Show accounting journal -AccountAccountingSuggest=Accounting account suggested -MenuDefaultAccounts=Default accounts +SubledgerAccount=Subledger-konto +ShowAccountingAccount=Visa bokföringskonto +ShowAccountingJournal=Visa bokföringskalender +AccountAccountingSuggest=Redovisningskonto föreslås +MenuDefaultAccounts=Standardkonton MenuBankAccounts=Bankkonton MenuVatAccounts=Vat accounts MenuTaxAccounts=Tax accounts MenuExpenseReportAccounts=Expense report accounts -MenuLoanAccounts=Loan accounts -MenuProductsAccounts=Product accounts -ProductsBinding=Products accounts -Ventilation=Binding to accounts +MenuLoanAccounts=Lån konton +MenuProductsAccounts=Produktkonton +ProductsBinding=Produkter konton +Ventilation=Bindande till konton CustomersVentilation=Customer invoice binding -SuppliersVentilation=Vendor invoice binding -ExpenseReportsVentilation=Expense report binding +SuppliersVentilation=Leverantörsfaktura bindande +ExpenseReportsVentilation=Expense rapport bindande CreateMvts=Create new transaction UpdateMvts=Modification of a transaction -ValidTransaction=Validate transaction +ValidTransaction=Validera transaktionen WriteBookKeeping=Journalize transactions in Ledger Bookkeeping=Ledger -AccountBalance=Account balance +AccountBalance=Kontobalans ObjectsRef=Source object ref CAHTF=Total purchase supplier before tax -TotalExpenseReport=Total expense report +TotalExpenseReport=Totalkostnadsrapport InvoiceLines=Lines of invoices to bind InvoiceLinesDone=Bound lines of invoices ExpenseReportLines=Lines of expense reports to bind @@ -109,16 +113,16 @@ ExpenseReportLinesDone=Bound lines of expense reports IntoAccount=Bind line with the accounting account -Ventilate=Bind -LineId=Id line +Ventilate=Binda +LineId=Id-linje Processing=Bearbetning -EndProcessing=Process terminated. +EndProcessing=Process avslutad. SelectedLines=Valda linjer Lineofinvoice=Line of faktura -LineOfExpenseReport=Line of expense report -NoAccountSelected=No accounting account selected +LineOfExpenseReport=Kostnadsrapport +NoAccountSelected=Inget konto har valts VentilatedinAccount=Binded successfully to the accounting account -NotVentilatedinAccount=Not bound to the accounting account +NotVentilatedinAccount=Ej bunden till bokföringskonto XLineSuccessfullyBinded=%s products/services successfully bound to an accounting account XLineFailedToBeBinded=%s products/services were not bound to any accounting account @@ -128,7 +132,7 @@ ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the page "Binding don ACCOUNTING_LENGTH_DESCRIPTION=Truncate product & services description in listings after x chars (Best = 50) ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Truncate product & services account description form in listings after x chars (Best = 50) -ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounting accounts (If you set value to 6 here, the account '706' will appear like '706000' on screen) +ACCOUNTING_LENGTH_GACCOUNT=Längden på de allmänna bokföringskontona (Om du anger värdet till 6 här visas kontot '706' som '706000' på skärmen) ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen) ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zero at the end of an accounting account. Needed by some countries (like switzerland). If keep to off (default), you can set the 2 following parameters to ask application to add virtual zero. BANK_DISABLE_DIRECT_INPUT=Disable direct recording of transaction in bank account @@ -154,21 +158,22 @@ Doctype=Typ av dokument Docdate=Datum Docref=Referens LabelAccount=Etikett konto -LabelOperation=Label operation +LabelOperation=Etikettoperation Sens=Sens +LetteringCode=Lettering code Codejournal=Journal -NumPiece=Piece number +NumPiece=Stycke nummer TransactionNumShort=Num. transaction AccountingCategory=Personalized groups GroupByAccountAccounting=Group by accounting account AccountingAccountGroupsDesc=You can define here some groups of accounting account. They will be used for personalized accounting reports. -ByAccounts=By accounts +ByAccounts=Enligt konton ByPredefinedAccountGroups=By predefined groups ByPersonalizedAccountGroups=By personalized groups ByYear=Per år -NotMatch=Not Set +NotMatch=Inte inställd DeleteMvt=Delete Ledger lines -DelYear=Year to delete +DelYear=År att radera DelJournal=Journal to delete ConfirmDeleteMvt=This will delete all lines of the Ledger for year and/or from a specific journal. At least one criteria is required. ConfirmDeleteMvtPartial=This will delete the transaction from the Ledger (all lines related to same transaction will be deleted) @@ -176,35 +181,35 @@ FinanceJournal=Finance journal ExpenseReportsJournal=Expense reports journal DescFinanceJournal=Finance journal including all the types of payments by bank account DescJournalOnlyBindedVisible=This is a view of record that are bound to an accounting account and can be recorded into the Ledger. -VATAccountNotDefined=Account for VAT not defined -ThirdpartyAccountNotDefined=Account for third party not defined +VATAccountNotDefined=Konto för moms inte definierad +ThirdpartyAccountNotDefined=Konto för tredje part har inte definierats ProductAccountNotDefined=Account for product not defined FeeAccountNotDefined=Account for fee not defined BankAccountNotDefined=Account for bank not defined CustomerInvoicePayment=Betalning av faktura kund -ThirdPartyAccount=Third party account -NewAccountingMvt=New transaction -NumMvts=Numero of transaction -ListeMvts=List of movements +ThirdPartyAccount=Tredje part konto +NewAccountingMvt=Ny transaktion +NumMvts=Numero av transaktion +ListeMvts=Lista över rörelser ErrorDebitCredit=Debit och kredit kan inte ha ett värde på samma gång AddCompteFromBK=Add accounting accounts to the group -ReportThirdParty=List third party account +ReportThirdParty=Lista av tredje part konto DescThirdPartyReport=Consult here the list of the third party customers and vendors and their accounting accounts ListAccounts=Förteckning över redovisningskonton -UnknownAccountForThirdparty=Unknown third party account. We will use %s +UnknownAccountForThirdparty=Okänt tredje part konto. Vi kommer att använda %s UnknownAccountForThirdpartyBlocking=Unknown third party account. Blocking error UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third party account and waiting account not defined. Blocking error PaymentsNotLinkedToProduct=Payment not linked to any product / service -Pcgtype=Group of account -Pcgsubtype=Subgroup of account -PcgtypeDesc=Group and subgroup of account are used as predefined 'filter' and 'grouping' criterias for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report. +Pcgtype=Grupp av konto +Pcgsubtype=Undergrupp av konto +PcgtypeDesc=Group and subgroup of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report. TotalVente=Total turnover before tax TotalMarge=Total försäljning marginal DescVentilCustomer=Consult here the list of customer invoice lines bound (or not) to a product accounting account -DescVentilMore=In most cases, if you use predefined products or services and you set the account number on the product/service card, the application will be able to make all the binding between your invoice lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on product/service cards or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "%s". +DescVentilMore=I de flesta fall, om du använder fördefinierade produkter eller tjänster och du ställer in kontonummeret på produkt- / servicekortet, kommer programmet att kunna göra allt bindande mellan dina fakturoreder och kontot för ditt kontoplan, bara i ett klick med knappen "%s" . Om kontot inte anges på produkt- / servicekort eller om du fortfarande har några rader som inte är kopplade till ett konto måste du göra en manuell bindning från menyn " %s ". DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their product accounting account DescVentilTodoCustomer=Bind invoice lines not already bound with a product accounting account ChangeAccount=Change the product/service accounting account for selected lines with the following accounting account: @@ -213,7 +218,7 @@ DescVentilSupplier=Consult here the list of vendor invoice lines bound or not ye DescVentilDoneSupplier=Consult here the list of the lines of invoices vendors and their accounting account DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account -DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "%s". +DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "%s". DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account ValidateHistory=Bind Automatically @@ -221,6 +226,7 @@ AutomaticBindingDone=Automatic binding done ErrorAccountancyCodeIsAlreadyUse=Fel, du kan inte ta bort denna redovisningskonto eftersom den används MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s | Credit = %s +Balancing=Balansering FicheVentilation=Binding card GeneralLedgerIsWritten=Transactions are written in the Ledger GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized. @@ -232,75 +238,76 @@ NotYetAccounted=Not yet accounted in ledger ## Admin ApplyMassCategories=Apply mass categories -AddAccountFromBookKeepingWithNoCategories=Available acccount not yet in a personalized group +AddAccountFromBookKeepingWithNoCategories=Available account not yet in a personalized group CategoryDeleted=Category for the accounting account has been removed -AccountingJournals=Accounting journals -AccountingJournal=Accounting journal -NewAccountingJournal=New accounting journal -ShowAccoutingJournal=Show accounting journal +AccountingJournals=Bokföringsjournal +AccountingJournal=Redovisnings journal +NewAccountingJournal=Ny bokföringsjournal +ShowAccoutingJournal=Visa bokföringskalender Nature=Naturen -AccountingJournalType1=Miscellaneous operations +AccountingJournalType1=Övrig verksamhet AccountingJournalType2=Försäljning AccountingJournalType3=Inköp AccountingJournalType4=Bank -AccountingJournalType5=Expenses report -AccountingJournalType8=Inventory -AccountingJournalType9=Has-new -ErrorAccountingJournalIsAlreadyUse=This journal is already use -AccountingAccountForSalesTaxAreDefinedInto=Note: Accounting account for Sales tax are defined into menu %s - %s +AccountingJournalType5=Utgift-rapport +AccountingJournalType8=Lager +AccountingJournalType9=Har nya +ErrorAccountingJournalIsAlreadyUse=Denna journalen används redan +AccountingAccountForSalesTaxAreDefinedInto=Obs! Bokföringskonto för försäljningsskatt definieras i menyn %s - %s ## Export -ExportDraftJournal=Export draft journal +ExportDraftJournal=Exportera utkast till journal Modelcsv=Modell av export Selectmodelcsv=Välj en modell av export Modelcsv_normal=Klassisk export -Modelcsv_CEGID=Export towards CEGID Expert Comptabilité -Modelcsv_COALA=Export towards Sage Coala -Modelcsv_bob50=Export towards Sage BOB 50 +Modelcsv_CEGID=Exportera till CEGID Expert Comptabilité +Modelcsv_COALA=Exportera mot Sage Coala +Modelcsv_bob50=Exportera till Sage BOB 50 Modelcsv_ciel=Export towards Sage Ciel Compta or Compta Evolution Modelcsv_quadratus=Export towards Quadratus QuadraCompta -Modelcsv_ebp=Export towards EBP -Modelcsv_cogilog=Export towards Cogilog -Modelcsv_agiris=Export towards Agiris -Modelcsv_configurable=Export Configurable +Modelcsv_ebp=Exportera till EBP +Modelcsv_cogilog=Exportera till Cogilog +Modelcsv_agiris=Exportera till Agiris +Modelcsv_configurable=Exportera CSV konfigurerbar +Modelcsv_FEC=Export FEC (Art. L47 A) (Test) ChartofaccountsId=Chart of accounts Id ## Tools - Init accounting account on product / service InitAccountancy=Init accountancy InitAccountancyDesc=This page can be used to initialize an accounting account on products and services that does not have accounting account defined for sales and purchases. DefaultBindingDesc=This page can be used to set a default account to use to link transactions record about payment salaries, donation, taxes and vat when no specific accounting account were already set. -Options=Options +Options=alternativ OptionModeProductSell=Mode sales OptionModeProductBuy=Mode purchases OptionModeProductSellDesc=Show all products with accounting account for sales. OptionModeProductBuyDesc=Show all products with accounting account for purchases. CleanFixHistory=Remove accounting code from lines that not exists into charts of account -CleanHistory=Reset all bindings for selected year -PredefinedGroups=Predefined groups -WithoutValidAccount=Without valid dedicated account -WithValidAccount=With valid dedicated account -ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account +CleanHistory=Återställ alla bindningar för valt år +PredefinedGroups=Fördefinierade grupper +WithoutValidAccount=Utan giltigt dedikerat konto +WithValidAccount=Med giltigt dedikerat konto +ValueNotIntoChartOfAccount=Detta värde på bokföringskonto finns inte i kontoplan ## Dictionary -Range=Range of accounting account -Calculated=Calculated -Formula=Formula +Range=Räckvidd av bokföringskonto +Calculated=Beräknad +Formula=Formel ## Error -SomeMandatoryStepsOfSetupWereNotDone=Some mandatory steps of setup was not done, please complete them +SomeMandatoryStepsOfSetupWereNotDone=Några obligatoriska steg för installationen var inte färdiga, var god fyll i dem ErrorNoAccountingCategoryForThisCountry=No accounting account group available for country %s (See Home - Setup - Dictionaries) ErrorInvoiceContainsLinesNotYetBounded=You try to journalize some lines of the invoice %s, but some other lines are not yet bounded to accounting account. Journalization of all invoice lines for this invoice are refused. ErrorInvoiceContainsLinesNotYetBoundedShort=Some lines on invoice are not bound to accounting account. ExportNotSupported=The export format setuped is not supported into this page -BookeppingLineAlreayExists=Lines already existing into bookeeping -NoJournalDefined=No journal defined -Binded=Lines bound -ToBind=Lines to bind -UseMenuToSetBindindManualy=Autodection not possible, use menu %s to make the binding manually +BookeppingLineAlreayExists=Lines already existing into bookkeeping +NoJournalDefined=Ingen journal definierad +Binded=Linjer bundna +ToBind=Linjer att binda +UseMenuToSetBindindManualy=Lines not yet bound, use menu %s to make the binding manually ## Import -ImportAccountingEntries=Accounting entries +ImportAccountingEntries=Redovisningsposter -WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manualy in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate. +WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate. ExpenseReportJournal=Expense Report Journal -InventoryJournal=Inventory Journal +InventoryJournal=Inventarie journal diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index 3dbd97b6229..3b84b5f514b 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -915,7 +915,7 @@ DictionaryOrderMethods=Beställningsmetoder DictionarySource=Ursprung av affärsförslag / beställning DictionaryAccountancyCategory=Personalized groups for reports DictionaryAccountancysystem=Modeller för kontoplan -DictionaryAccountancyJournal=Accounting journals +DictionaryAccountancyJournal=Bokföringsjournal DictionaryEMailTemplates=Email Templates DictionaryUnits=Enheter DictionaryProspectStatus=Prospektering Status @@ -1746,7 +1746,7 @@ CurrentChecksum=Current Checksum ForcedConstants=Required constant values MailToSendProposal=Customer proposals MailToSendOrder=Customer orders -MailToSendInvoice=Customer invoices +MailToSendInvoice=Kundfakturor MailToSendShipment=Transporter MailToSendIntervention=Insatser MailToSendSupplierRequestForQuotation=Quotation request diff --git a/htdocs/langs/sv_SE/banks.lang b/htdocs/langs/sv_SE/banks.lang index 6caf97504d9..bdeb36627ac 100644 --- a/htdocs/langs/sv_SE/banks.lang +++ b/htdocs/langs/sv_SE/banks.lang @@ -1,8 +1,8 @@ # Dolibarr language file - Source file is en_US - banks Bank=Bank -MenuBankCash=Bank | Cash -MenuVariousPayment=Miscellaneous payments -MenuNewVariousPayment=New Miscellaneous payment +MenuBankCash=Bank | Kontanter +MenuVariousPayment=Diverse betalningar +MenuNewVariousPayment=Ny diverse betalning BankName=Bankens namn FinancialAccount=Konto BankAccount=Bankkonto @@ -31,12 +31,12 @@ Reconciliation=Avstämning RIB=Bankkontonummer IBAN=IBAN-nummer BIC=BIC / SWIFT nummer -SwiftValid=BIC/SWIFT valid -SwiftVNotalid=BIC/SWIFT not valid -IbanValid=BAN valid -IbanNotValid=BAN not valid -StandingOrders=Direct Debit orders -StandingOrder=Direct debit order +SwiftValid=BIC / SWIFT giltig +SwiftVNotalid=BIC / SWIFT är ej giltigt +IbanValid=BAN giltig +IbanNotValid=BAN är ej giltigt +StandingOrders=Direktbetalningsorder +StandingOrder=Direkt debitering AccountStatement=Kontoutdrag AccountStatementShort=Uttalande AccountStatements=Kontoutdrag @@ -60,24 +60,24 @@ BankType2=Cash konto AccountsArea=Konton område AccountCard=Konto-kort DeleteAccount=Radera konto -ConfirmDeleteAccount=Are you sure you want to delete this account? +ConfirmDeleteAccount=Är du säker på att du vill radera detta konto? Account=Konto -BankTransactionByCategories=Bank entries by categories -BankTransactionForCategory=Bank entries for category %s +BankTransactionByCategories=Bankposter per kategori +BankTransactionForCategory=Bankposter för kategori %s RemoveFromRubrique=Ta bort kopplingen till kategori -RemoveFromRubriqueConfirm=Are you sure you want to remove link between the entry and the category? -ListBankTransactions=List of bank entries +RemoveFromRubriqueConfirm=Är du säker på att du vill ta bort länken mellan posten och kategorin? +ListBankTransactions=Förteckning över bankposter IdTransaction=Transaktions-ID -BankTransactions=Bank entries -BankTransaction=Bank entry -ListTransactions=List entries +BankTransactions=Bankposter +BankTransaction=Bankpost +ListTransactions=Lista poster ListTransactionsByCategory=List entries/category TransactionsToConciliate=Entries to reconcile Conciliable=Kan förenas Conciliate=Reconcile Conciliation=Avstämning SaveStatementOnly=Save statement only -ReconciliationLate=Reconciliation late +ReconciliationLate=Sen avstämning IncludeClosedAccount=Inkludera stängda konton OnlyOpenedAccount=Enbart öppna konton AccountToCredit=Hänsyn till kreditinstitut @@ -89,14 +89,14 @@ StatusAccountOpened=Öppen StatusAccountClosed=Stängt AccountIdShort=Antal LineRecord=Transaktion -AddBankRecord=Add entry -AddBankRecordLong=Add entry manually -Conciliated=Reconciled -ConciliatedBy=Förenas med -DateConciliating=Reconcile datum -BankLineConciliated=Entry reconciled -Reconciled=Reconciled -NotReconciled=Not reconciled +AddBankRecord=Lägg till post +AddBankRecordLong=Lägg till post manuellt +Conciliated=Avstämd +ConciliatedBy=Avstämd av +DateConciliating=Avstämningsdatum +BankLineConciliated=Post avstämd +Reconciled=Avstämd +NotReconciled=Inte avstämd CustomerInvoicePayment=Kundbetalning SupplierInvoicePayment=Leverantör betalning SubscriptionPayment=Teckning betalning @@ -110,15 +110,15 @@ TransferFrom=Från TransferTo=För att TransferFromToDone=En överföring från %s till %s av %s %s har registrerats. CheckTransmitter=Sändare -ValidateCheckReceipt=Validate this check receipt? +ValidateCheckReceipt=Validera detta check-kvitto? ConfirmValidateCheckReceipt=Are you sure you want to validate this check receipt, no change will be possible once this is done? DeleteCheckReceipt=Delete this check receipt? ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt? BankChecks=Bankcheckar BankChecksToReceipt=Checks awaiting deposit ShowCheckReceipt=Visar kontrollera insättning mottagande -NumberOfCheques=No. of check -DeleteTransaction=Delete entry +NumberOfCheques=Antal checkar +DeleteTransaction=Ta bort post ConfirmDeleteTransaction=Are you sure you want to delete this entry? ThisWillAlsoDeleteBankRecord=This will also delete generated bank entry BankMovements=Rörelser @@ -132,22 +132,22 @@ PaymentNumberUpdateFailed=Betalningsnummer kunde inte uppdateras PaymentDateUpdateSucceeded=Payment date updated successfully PaymentDateUpdateFailed=Betalningsdagen kunde inte uppdateras Transactions=Transaktioner -BankTransactionLine=Bank entry -AllAccounts=All bank and cash accounts +BankTransactionLine=Bankpost +AllAccounts=Alla bank- och kontonkonton BackToAccount=Tillbaka till konto ShowAllAccounts=Visa för alla konton -FutureTransaction=Transaction in future. No way to reconcile. +FutureTransaction=Transaktion i framtiden. Inte möjligt att avstämma. SelectChequeTransactionAndGenerate=Select/filter checks to include in the check deposit receipt and click on "Create". InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD EventualyAddCategory=Så småningom, ange en kategori där för att klassificera de register -ToConciliate=To reconcile? +ToConciliate=Att avstämma? ThenCheckLinesAndConciliate=Kontrollera sedan linjerna som finns i kontoutdraget och klicka DefaultRIB=Standard BAN AllRIB=Alla BAN LabelRIB=BAN etikett NoBANRecord=Inget BAN rad DeleteARib=Radera BAN rad -ConfirmDeleteRib=Are you sure you want to delete this BAN record? +ConfirmDeleteRib=Är du säker på att du vill ta bort denna BAN-post? RejectCheck=Check returned ConfirmRejectCheck=Are you sure you want to mark this check as rejected? RejectCheckDate=Date the check was returned @@ -157,12 +157,11 @@ BankAccountModelModule=Document templates for bank accounts DocumentModelSepaMandate=Template of SEPA mandate. Useful for European countries in EEC only. DocumentModelBan=Template to print a page with BAN information. NewVariousPayment=New miscellaneous payments -VariousPayment=Miscellaneous payments -VariousPayments=Miscellaneous payments +VariousPayment=Diverse betalningar +VariousPayments=Diverse betalningar ShowVariousPayment=Show miscellaneous payments AddVariousPayment=Add miscellaneous payments -SEPAMandate=SEPA mandate -YourSEPAMandate=Your SEPA mandate -FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +SEPAMandate=SEPA-mandatet +YourSEPAMandate=Ditt SEPA-mandat +FindYourSEPAMandate=Detta är ditt SEPA-mandat för att bemyndiga vårt företag att göra direkt debitering till din bank. Returnera det undertecknat (skanna av det signerade dokumentet) eller skicka det via post till +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/sv_SE/bills.lang b/htdocs/langs/sv_SE/bills.lang index d371603cb70..95d48ce8228 100644 --- a/htdocs/langs/sv_SE/bills.lang +++ b/htdocs/langs/sv_SE/bills.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - bills Bill=Faktura Bills=Fakturor -BillsCustomers=Customer invoices +BillsCustomers=Kundfakturor BillsCustomer=Kundfaktura -BillsSuppliers=Supplier invoices +BillsSuppliers=Leverantörsfakturor BillsCustomersUnpaid=Obetalda kundfakturor -BillsCustomersUnpaidForCompany=Unpaid customer invoices for %s +BillsCustomersUnpaidForCompany=Obetalda kundfakturor för %s BillsSuppliersUnpaid=Obetalda leverantörsfakturor -BillsSuppliersUnpaidForCompany=Unpaid supplier invoices for %s +BillsSuppliersUnpaidForCompany=Obetalda leverantörsfakturor för %s BillsLate=Sena betalningar BillsStatistics=Kundfakturor statistik BillsStatisticsSuppliers=Leverantörsfakturor statistik @@ -62,7 +62,7 @@ PaymentBack=Betalning tillbaka CustomerInvoicePaymentBack=Betalning tillbaka Payments=Betalningar PaymentsBack=Betalningar tillbaka -paymentInInvoiceCurrency=in invoices currency +paymentInInvoiceCurrency=i faktura valuta PaidBack=Återbetald DeletePayment=Radera betalning ConfirmDeletePayment=Are you sure you want to delete this payment? @@ -71,7 +71,7 @@ ConfirmConvertToReducSupplier=Do you want to convert this %s into an absolute di SupplierPayments=Leverantörer betalningar ReceivedPayments=Mottagna betalningar ReceivedCustomersPayments=Inbetalningar från kunder -PayedSuppliersPayments=Payments paid to suppliers +PayedSuppliersPayments=Betalningar betalade till leverantörer ReceivedCustomersPaymentsToValid=Mottagna kunder betalningar för att validera PaymentsReportsForYear=Betalningar rapporter för %s PaymentsReports=Betalningar rapporter @@ -79,11 +79,11 @@ PaymentsAlreadyDone=Betalningar redan gjort PaymentsBackAlreadyDone=Återbetalningar är utförda tidigare PaymentRule=Betalningsregel PaymentMode=Betalningssätt -PaymentTypeDC=Debit/Credit Card +PaymentTypeDC=Debet / Kreditkort PaymentTypePP=PayPal -IdPaymentMode=Payment type (id) -CodePaymentMode=Payment type (code) -LabelPaymentMode=Payment type (label) +IdPaymentMode=Betalningstyp (id) +CodePaymentMode=Betalningstyp (kod) +LabelPaymentMode=Betalningstyp (etikett) PaymentModeShort=Betalningssätt PaymentTerm=Betalningsvillkor PaymentConditions=Betalningsvillkor @@ -107,9 +107,9 @@ SearchACustomerInvoice=Sök efter en kundfaktura SearchASupplierInvoice=Sök efter en leverantörsfaktura CancelBill=Avbryt en faktura SendRemindByMail=Skicka påminnelse via e-post -DoPayment=Enter payment -DoPaymentBack=Enter refund -ConvertToReduc=Mark as credit available +DoPayment=Ange betalning +DoPaymentBack=Ange återbetalning +ConvertToReduc=Markera som kredit tillgänglig ConvertExcessReceivedToReduc=Convert excess received into available credit ConvertExcessPaidToReduc=Convert excess paid into available discount EnterPaymentReceivedFromCustomer=Skriv in avgifter från kunderna @@ -126,7 +126,7 @@ BillStatusCanceled=Övergiven BillStatusValidated=Validerad (måste betalas) BillStatusStarted=Påbörjad BillStatusNotPaid=Inte betalas -BillStatusNotRefunded=Not refunded +BillStatusNotRefunded=Icke återbetalad BillStatusClosedUnpaid=Stängd (obetald) BillStatusClosedPaidPartially=Betald (delvis) BillShortStatusDraft=Utkast @@ -138,7 +138,7 @@ BillShortStatusCanceled=Övergiven BillShortStatusValidated=Validerad BillShortStatusStarted=Började BillShortStatusNotPaid=Inte betalas -BillShortStatusNotRefunded=Not refunded +BillShortStatusNotRefunded=Icke återbetalad BillShortStatusClosedUnpaid=Stängt BillShortStatusClosedPaidPartially=Betald (delvis) PaymentStatusToValidShort=För att validera @@ -230,7 +230,7 @@ EscompteOfferedShort=Rabatt SendBillRef=Inlämning av faktura %s SendReminderBillRef=Inlämning av faktura %s (påminnelse) StandingOrders=Direct debit orders -StandingOrder=Direct debit order +StandingOrder=Direkt debitering NoDraftBills=Inget förslag fakturor NoOtherDraftBills=Inga andra förslag fakturor NoDraftInvoices=Inget faktura-utkast diff --git a/htdocs/langs/sv_SE/main.lang b/htdocs/langs/sv_SE/main.lang index 25e732b604e..fad9a44ca62 100644 --- a/htdocs/langs/sv_SE/main.lang +++ b/htdocs/langs/sv_SE/main.lang @@ -470,7 +470,7 @@ and=och or=eller Other=Andra Others=Övrigt -OtherInformations=Other information +OtherInformations=Övrig information Quantity=Kvantitet Qty=Antal ChangedBy=Ändrad av @@ -922,7 +922,7 @@ SearchIntoUsers=Användare SearchIntoProductsOrServices=Products or services SearchIntoProjects=Projekt SearchIntoTasks=Uppgifter -SearchIntoCustomerInvoices=Customer invoices +SearchIntoCustomerInvoices=Kundfakturor SearchIntoSupplierInvoices=Vendor invoices SearchIntoCustomerOrders=Customer orders SearchIntoSupplierOrders=Purchase orders @@ -954,4 +954,4 @@ ConfirmMassDraftDeletion=Draft mass delete confirmation FileSharedViaALink=Fil delad via länk SelectAThirdPartyFirst=Select a third party first... YouAreCurrentlyInSandboxMode=You are currently in the %s "sandbox" mode -Inventory=Inventory +Inventory=Lager diff --git a/htdocs/langs/sv_SE/sendings.lang b/htdocs/langs/sv_SE/sendings.lang index bf6be158005..36e8672ccf1 100644 --- a/htdocs/langs/sv_SE/sendings.lang +++ b/htdocs/langs/sv_SE/sendings.lang @@ -36,15 +36,15 @@ StatusSendingDraftShort=Förslag StatusSendingValidatedShort=Validerad StatusSendingProcessedShort=Bearbetade SendingSheet=Packsedel -ConfirmDeleteSending=Are you sure you want to delete this shipment? +ConfirmDeleteSending=Är du säker på att du vill radera den här sändningen? ConfirmValidateSending=Are you sure you want to validate this shipment with reference %s? ConfirmCancelSending=Are you sure you want to cancel this shipment? DocumentModelMerou=Merou A5-modellen WarningNoQtyLeftToSend=Varning, att inga produkter väntar sändas. StatsOnShipmentsOnlyValidated=Statistik utförda på försändelser endast valideras. Datum som används är datum för godkännandet av leveransen (planerat leveransdatum är inte alltid känt). -DateDeliveryPlanned=Planned date of delivery -RefDeliveryReceipt=Ref delivery receipt -StatusReceipt=Status delivery receipt +DateDeliveryPlanned=Planerat leveransdatum +RefDeliveryReceipt=Ref leverans kvitto +StatusReceipt=Status leverans kvitto DateReceived=Datum leverans fick SendShippingByEMail=Skicka leverans via e-post SendShippingRef=Inlämning av leveransen %s @@ -56,8 +56,8 @@ ProductQtyInCustomersOrdersRunning=Product quantity into open customer orders ProductQtyInSuppliersOrdersRunning=Product quantity into open purchase orders ProductQtyInShipmentAlreadySent=Product quantity from open customer order already sent ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from open supplier order already received -NoProductToShipFoundIntoStock=No product to ship found into warehouse %s. Correct stock or go back to choose another warehouse. -WeightVolShort=Weight/Vol. +NoProductToShipFoundIntoStock=No product to ship found in warehouse %s. Correct stock or go back to choose another warehouse. +WeightVolShort=Vikt / vol. ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments. # Sending methods diff --git a/htdocs/langs/sv_SE/stocks.lang b/htdocs/langs/sv_SE/stocks.lang index 9ef237b102c..3995ae7c8b3 100644 --- a/htdocs/langs/sv_SE/stocks.lang +++ b/htdocs/langs/sv_SE/stocks.lang @@ -44,7 +44,6 @@ TransferStock=Transfer stock MassStockTransferShort=Mass stock transfer StockMovement=Stock movement StockMovements=Stock movements -LabelMovement=Etikett för förändring NumberOfUnit=Antal enheter UnitPurchaseValue=Inköpspris per enhet StockTooLow=Lager för lågt @@ -55,20 +54,20 @@ PMPValueShort=WAP EnhancedValueOfWarehouses=Lagervärde UserWarehouseAutoCreate=Create a user warehouse automatically when creating a user AllowAddLimitStockByWarehouse=Allow to add limit and desired stock per couple (product, warehouse) instead of per product -IndependantSubProductStock=Product stock and subproduct stock are independant +IndependantSubProductStock=Product stock and subproduct stock are independent QtyDispatched=Sänd kvantitet QtyDispatchedShort=Antal skickade QtyToDispatchShort=Antal att skicka OrderDispatch=Item receipts -RuleForStockManagementDecrease=Rule for automatic stock management decrease (manual decrease is always possible, even if an automatic decrease rule is activated) -RuleForStockManagementIncrease=Rule for automatic stock management increase (manual increase is always possible, even if an automatic increase rule is activated) -DeStockOnBill=Minska befintligt lager vid validering av kundfakturor / kreditnotor -DeStockOnValidateOrder=Minska befintligt lager vid validering av kundorder +RuleForStockManagementDecrease=Choose Rule for automatic stock decrease (manual decrease is always possible, even if an automatic decrease rule is activated) +RuleForStockManagementIncrease=Choose Rule for automatic stock increase (manual increase is always possible, even if an automatic increase rule is activated) +DeStockOnBill=Decrease real stocks on validation of customer invoice/credit note +DeStockOnValidateOrder=Decrease real stocks on validation of customer order DeStockOnShipment=Decrease real stocks on shipping validation DeStockOnShipmentOnClosing=Decrease real stocks on shipping classification closed -ReStockOnBill=Öka befintligt lager vid validering av leverantörsfakturor / kreditnotor -ReStockOnValidateOrder=Increase real stocks on purchase orders approbation -ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receipt of goods +ReStockOnBill=Increase real stocks on validation of supplier invoice/credit note +ReStockOnValidateOrder=Increase real stocks on purchase order approval +ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouse, after supplier order receipt of goods OrderStatusNotReadyToDispatch=Beställningen har ännu inte / inte längre status som tillåter sändning av produkter till lager. StockDiffPhysicTeoric=Explanation for difference between physical and virtual stock NoPredefinedProductToDispatch=Inga fördefinierade produkter för det här objektet. Så ingen sändning till lager krävs. @@ -130,10 +129,11 @@ RecordMovement=Record transfer ReceivingForSameOrder=Kvitton för denna beställning StockMovementRecorded=Sparade lageröverföringar RuleForStockAvailability=Regler om krav på lagerhållning -StockMustBeEnoughForInvoice=Stock level must be enough to add product/service to invoice (check is done on current real stock when adding a line into invoice whatever is rule for automatic stock change) -StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever is rule for automatic stock change) -StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever is rule for automatic stock change) +StockMustBeEnoughForInvoice=Stock level must be enough to add product/service to invoice (check is done on current real stock when adding a line into invoice whatever the rule for automatic stock change) +StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever the rule for automatic stock change) +StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever the rule for automatic stock change) MovementLabel=Etikett för lagerrörelse +TypeMovement=Type of movement DateMovement=Date of movement InventoryCode=Lagerrörelse- eller inventeringskod IsInPackage=Ingår i förpackning @@ -161,7 +161,7 @@ inventoryCreatePermission=Create new inventory inventoryReadPermission=View inventories inventoryWritePermission=Update inventories inventoryValidatePermission=Validate inventory -inventoryTitle=Inventory +inventoryTitle=Lager inventoryListTitle=Inventories inventoryListEmpty=No inventory in progress inventoryCreateDelete=Create/Delete inventory @@ -172,12 +172,12 @@ inventoryDraft=Löpande inventorySelectWarehouse=Warehouse choice inventoryConfirmCreate=Skapa inventoryOfWarehouse=Inventory for warehouse : %s -inventoryErrorQtyAdd=Error : one quantity is leaser than zero +inventoryErrorQtyAdd=Error : one quantity is less than zero inventoryMvtStock=By inventory inventoryWarningProductAlreadyExists=This product is already into list SelectCategory=Kategori filter SelectFournisseur=Supplier filter -inventoryOnDate=Inventory +inventoryOnDate=Lager INVENTORY_DISABLE_VIRTUAL=Allow to not destock child product from a kit on inventory INVENTORY_USE_MIN_PA_IF_NO_LAST_PA=Use the buy price if no last buy price can be found INVENTORY_USE_INVENTORY_DATE_FROM_DATEMVT=Stock movement have date of inventory @@ -195,12 +195,16 @@ AddInventoryProduct=Add product to inventory AddProduct=Lägg till ApplyPMP=Apply PMP FlushInventory=Flush inventory -ConfirmFlushInventory=Do you confirm this action ? +ConfirmFlushInventory=Do you confirm this action? InventoryFlushed=Inventory flushed ExitEditMode=Exit edition inventoryDeleteLine=Radera rad RegulateStock=Regulate Stock ListInventory=Lista -StockSupportServices=Stock management support services +StockSupportServices=Stock management supports Services StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service" ReceiveProducts=Receive items +StockIncreaseAfterCorrectTransfer=Increase by correction/transfer +StockDecreaseAfterCorrectTransfer=Decrease by correction/transfer +StockIncrease=Stock increase +StockDecrease=Stock decrease diff --git a/htdocs/langs/sv_SE/users.lang b/htdocs/langs/sv_SE/users.lang index 422f0039689..465d4ee20eb 100644 --- a/htdocs/langs/sv_SE/users.lang +++ b/htdocs/langs/sv_SE/users.lang @@ -6,10 +6,10 @@ Permission=Behörighet Permissions=Behörigheter EditPassword=Ändra lösenord SendNewPassword=Regenerera och skicka lösenord -SendNewPasswordLink=Send link to reset password +SendNewPasswordLink=Skicka åters.länk för lösenordet ReinitPassword=Regenerera lösenord PasswordChangedTo=Lösenord ändras till: %s -SubjectNewPassword=Your new password for %s +SubjectNewPassword=Ditt nya lösenord för %s GroupRights=Gruppbehörigheter UserRights=Användarbehörighet UserGUISetup=Användare displayuppställning @@ -35,7 +35,7 @@ SuperAdministrator=Super Administrator SuperAdministratorDesc=Administratör med alla rättigheter AdministratorDesc=Administratör DefaultRights=Standardbehörigheter -DefaultRightsDesc=Definiera här standardbehörigheter som automatiskt ges till en ny skapat användare (Gå på användarkort att ändra tillstånd av en befintlig användare). +DefaultRightsDesc=Define here default permissions that are automatically granted to a new created user (Go to user card to change permission of an existing user). DolibarrUsers=Dolibarr användare LastName=Efternamn FirstName=Förnamn @@ -44,9 +44,9 @@ NewGroup=Ny grupp CreateGroup=Skapa grupp RemoveFromGroup=Ta bort från grupp PasswordChangedAndSentTo=Lösenord ändras och skickas till %s. -PasswordChangeRequest=Request to change password for %s +PasswordChangeRequest=Begär om ändring av lösenord för %s PasswordChangeRequestSent=Begäran om att ändra lösenord för %s skickas till %s. -ConfirmPasswordReset=Confirm password reset +ConfirmPasswordReset=Bekräfta återställning av lösenord MenuUsersAndGroups=Användare & grupper LastGroupsCreated=Latest %s groups created LastUsersCreated=Latest %s users created @@ -66,7 +66,7 @@ CreateDolibarrThirdParty=Skapa en tredje part LoginAccountDisableInDolibarr=Konto funktionshindrade i Dolibarr. UsePersonalValue=Använd personlig värde InternalUser=Intern användare -ExportDataset_user_1=Dolibarr-användarnas behov och egenskaper +ExportDataset_user_1=Users and their properties DomainUser=Domän användare %s Reactivate=Återaktivera CreateInternalUserDesc=This form allows you to create an user internal to your company/organization. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. @@ -85,26 +85,27 @@ UserDeleted=Användare %s bort NewGroupCreated=Grupp %s skapade GroupModified=Grupp% s modifierade GroupDeleted=Grupp %s bort -ConfirmCreateContact=Are you sure you want to create a Dolibarr account for this contact? +ConfirmCreateContact=Är du säker på att du vill skapa ett Dolibarr-konto för den här kontakten? ConfirmCreateLogin=Are you sure you want to create a Dolibarr account for this member? ConfirmCreateThirdParty=Are you sure you want to create a third party for this member? LoginToCreate=Logga in för att skapa NameToCreate=Namn på tredje part för att skapa YourRole=Din roller YourQuotaOfUsersIsReached=Din kvot på aktiva användare är nådd! -NbOfUsers=Nb av användare -NbOfPermissions=Nb of permissions +NbOfUsers=Antal användare +NbOfPermissions=Antal behörigheter DontDowngradeSuperAdmin=Endast en SuperAdmin kan nedgradera en SuperAdmin HierarchicalResponsible=Handledare HierarchicView=Hierarkisk vy UseTypeFieldToChange=Använd fält Typ för att ändra OpenIDURL=OpenID URL LoginUsingOpenID=Logga in med OpenID -WeeklyHours=Hours worked (per week) -ExpectedWorkedHours=Expected worked hours per week +WeeklyHours=Timmar arbetade (per vecka) +ExpectedWorkedHours=Förväntad arbetstid per vecka ColorUser=Färg på användaren DisabledInMonoUserMode=Disabled in maintenance mode -UserAccountancyCode=User accounting code -UserLogoff=User logout -UserLogged=User logged -DateEmployment=Date of Employment +UserAccountancyCode=Användarkonto +UserLogoff=Användarutloggning +UserLogged=Användare loggad +DateEmployment=Anställningsdatum +DateEmploymentEnd=Slutdatum för anställning diff --git a/htdocs/langs/sv_SE/website.lang b/htdocs/langs/sv_SE/website.lang index 7661206a0a1..60f01b8b5eb 100644 --- a/htdocs/langs/sv_SE/website.lang +++ b/htdocs/langs/sv_SE/website.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - website Shortname=Kod WebsiteSetupDesc=Create here the websites you wish to use. Then go into menu Websites to edit them. -DeleteWebsite=Delete website +DeleteWebsite=Ta bort webbplats ConfirmDeleteWebsite=Are you sure you want to delete this web site? All its pages and content will also be removed. WEBSITE_TYPE_CONTAINER=Type of page/container WEBSITE_PAGE_EXAMPLE=Web page to use as example @@ -13,24 +13,24 @@ WEBSITE_CSS_INLINE=CSS file content (common to all pages) WEBSITE_JS_INLINE=Javascript file content (common to all pages) WEBSITE_HTML_HEADER=Addition at bottom of HTML Header (common to all pages) WEBSITE_ROBOT=Robot file (robots.txt) -WEBSITE_HTACCESS=Website .htaccess file +WEBSITE_HTACCESS=Webbsida. Htaccess-fil HtmlHeaderPage=HTML header (specific to this page only) PageNameAliasHelp=Name or alias of the page.
    This alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "%s" to edit this alias. EditTheWebSiteForACommonHeader=Note: If you want to define a personalized header for all pages, edit the header on the site level instead of on the page/container. MediaFiles=Media library EditCss=Edit website properties -EditMenu=Edit menu +EditMenu=Redigera menyn EditMedias=Edit medias EditPageMeta=Edit page/container properties EditInLine=Edit inline -AddWebsite=Add website +AddWebsite=Lägg till hemsida Webpage=Web page/container AddPage=Add page/container -HomePage=Home Page -PageContainer=Page/container +HomePage=Hemsida +PageContainer=Sida / behållare PreviewOfSiteNotYetAvailable=Preview of your website %s not yet available. You must first 'Import a full website template' or just 'Add a page/container'. RequestedPageHasNoContentYet=Requested page with id %s has no content yet, or cache file .tpl.php was removed. Edit content of the page to solve this. -SiteDeleted=Web site '%s' deleted +SiteDeleted=Webbplatsen '%s' raderas PageContent=Page/Contenair PageDeleted=Page/Contenair '%s' of website %s deleted PageAdded=Page/Contenair '%s' added diff --git a/htdocs/langs/sv_SE/withdrawals.lang b/htdocs/langs/sv_SE/withdrawals.lang index 7224d4b8b05..551a0971fdf 100644 --- a/htdocs/langs/sv_SE/withdrawals.lang +++ b/htdocs/langs/sv_SE/withdrawals.lang @@ -6,14 +6,14 @@ StandingOrderPayment=Direct debit payment order NewStandingOrder=New direct debit order StandingOrderToProcess=För att kunna behandla WithdrawalsReceipts=Direct debit orders -WithdrawalReceipt=Direct debit order +WithdrawalReceipt=Direkt debitering LastWithdrawalReceipts=Latest %s direct debit files WithdrawalsLines=Direct debit order lines RequestStandingOrderToTreat=Request for direct debit payment order to process RequestStandingOrderTreated=Request for direct debit payment order processed NotPossibleForThisStatusOfWithdrawReceiptORLine=Ännu inte möjligt. Uttag status måste vara inställd på "kredit" innan den förklarar förkastar på specifika linjer. -NbOfInvoiceToWithdraw=Nb. of qualified invoice with waiting direct debit order -NbOfInvoiceToWithdrawWithInfo=Nb. of customer invoice with direct debit payment orders having defined bank account information +NbOfInvoiceToWithdraw=No. of qualified invoice with waiting direct debit order +NbOfInvoiceToWithdrawWithInfo=No. of customer invoice with direct debit payment orders having defined bank account information InvoiceWaitingWithdraw=Invoice waiting for direct debit AmountToWithdraw=Belopp att dra tillbaka WithdrawsRefused=Direct debit refused @@ -26,7 +26,7 @@ LastWithdrawalReceipt=Latest %s direct debit receipts MakeWithdrawRequest=Make a direct debit payment request WithdrawRequestsDone=%s direct debit payment requests recorded ThirdPartyBankCode=Tredje part bankkod -NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoices are on companies with a valid default BAN and that BAN has a RUM with mode %s. +NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode %s. ClassCredited=Klassificera krediteras ClassCreditedConfirm=Är du säker på att du vill klassificera detta tillbakadragande mottagande som krediteras på ditt bankkonto? TransData=Datum Transmission diff --git a/htdocs/langs/sw_SW/banks.lang b/htdocs/langs/sw_SW/banks.lang index 37a1d03a2d3..5bc061f31f3 100644 --- a/htdocs/langs/sw_SW/banks.lang +++ b/htdocs/langs/sw_SW/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/th_TH/banks.lang b/htdocs/langs/th_TH/banks.lang index cfa95c3084f..e3ae16cdab9 100644 --- a/htdocs/langs/th_TH/banks.lang +++ b/htdocs/langs/th_TH/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/tr_TR/accountancy.lang b/htdocs/langs/tr_TR/accountancy.lang index f9e263cf3d1..7cd5511fb61 100644 --- a/htdocs/langs/tr_TR/accountancy.lang +++ b/htdocs/langs/tr_TR/accountancy.lang @@ -35,16 +35,20 @@ JournalizationInLedgerStatus=Günlükleme durumu AlreadyInGeneralLedger=Already journalized in ledgers NotYetInGeneralLedger=Not yet journalized in ledgers GroupIsEmptyCheckSetup=Group is empty, check setup of the personalized accounting group -DetailByAccount=Show detail by account -AccountWithNonZeroValues=Accounts with non zero values -ListOfAccounts=List of accounts +DetailByAccount=Hesaba göre detayları göster +AccountWithNonZeroValues=Accounts with non-zero values +ListOfAccounts=Hesap listesi +CountriesInEEC=Avrupa Ekonomi Topluluğu'ndaki Ülkeler +CountriesNotInEEC=Avrupa Ekonomi Topluluğu'nda Olmayan Ülkeler +CountriesInEECExceptMe=%s hariç Avrupa Ekonomi Topluluğu ülkeleri +CountriesExceptMe=%s hariç tüm ülkeler -MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup -MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup -MainAccountForUsersNotDefined=Main accounting account for users not defined in setup -MainAccountForVatPaymentNotDefined=Main accounting account for VAT payment not defined in setup +MainAccountForCustomersNotDefined=Müşteriler için ana muhasebe hesabı kurulumda tanımlı değil +MainAccountForSuppliersNotDefined=Tedarikçiler için ana muhasebe hesabı kurulumda tanımlı değil +MainAccountForUsersNotDefined=Kullanıcılar için ana muhasebe hesabı kurulumda tanımlı değil +MainAccountForVatPaymentNotDefined=KDV ödemesi için ana muhasebe hesabı kurulumda tanımlı değil -AccountancyArea=Accounting area +AccountancyArea=Muhasebe alanı AccountancyAreaDescIntro=Muhasebe modülünün kullanımı birkaç adımda tamamlanır: AccountancyAreaDescActionOnce=Aşağıdaki eylemler genellikle yalnızca bir kere veya yılda bir kez gerçekleştirilir... AccountancyAreaDescActionOnceBis=Günlükleme yaparken (Günlüklere ve Genel deftere kayıt girme) size doğru varsayılan muhasebe hesabı önererek zamandan tasarruf etmenizi sağlamak için sonraki adımlar tamamlanmalıdır. @@ -55,7 +59,7 @@ AccountancyAreaDescChartModel=ADIM %s: "%s" menüsünü kullanarak hesap planı AccountancyAreaDescChart=ADIM %s: "%s" menüsünü kullanarak hesap planınızın içeriğini oluşturun veya kontrol edin. AccountancyAreaDescVat=ADIM %s: "%s" menüsünü kullanarak her bir KDV Oranı için muhasebe hesaplarını tanımlayın. -AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s. +AccountancyAreaDescDefault=ADIM %s: "%s" menüsünü kullanarak varsayılan muhasebe hesaplarını tanımlayın. AccountancyAreaDescExpenseReport=ADIM %s: "%s" menüsünü kullanarak her bir harcama raporu türü için varsayılan muhasebe hesaplarını tanımlayın. AccountancyAreaDescSal=ADIM %s: "%s" menüsünü kullanarak maaş ödemeleri için varsayılan muhasebe hesaplarını tanımlayın. AccountancyAreaDescContrib=ADIM %s: "%s" menüsünü kullanarak özel harcamalar (çeşitli vergiler) için varsayılan muhasebe hesaplarını tanımlayın. @@ -73,13 +77,13 @@ AccountancyAreaDescClosePeriod=ADIM %s: Dönemi kapatın, böylece ileride bir d TheJournalCodeIsNotDefinedOnSomeBankAccount=Kurulumda zorunlu bir adım tamamlanmadı (muhasebe kodu günlüğü tüm banka hesapları için tanımlı değil) Selectchartofaccounts=Etkin hesap planı seç -ChangeAndLoad=Change and load +ChangeAndLoad=Değiştir ve yükle Addanaccount=Muhasebe hesabı ekle AccountAccounting=Muhasebe hesabı AccountAccountingShort=Hesap SubledgerAccount=Subledger Account -ShowAccountingAccount=Show accounting account -ShowAccountingJournal=Show accounting journal +ShowAccountingAccount=Muhasebe hesabını göster +ShowAccountingJournal=Muhasebe günlüğünü göster AccountAccountingSuggest=Önerilen muhasebe hesabı MenuDefaultAccounts=Varsayılan hesaplar MenuBankAccounts=Banka hesapları @@ -91,7 +95,7 @@ MenuProductsAccounts=Ürün hesapları ProductsBinding=Ürün hesapları Ventilation=Hesaba bağlama CustomersVentilation=Müşteri faturası bağlama -SuppliersVentilation=Vendor invoice binding +SuppliersVentilation=Tedarikçi faturası bağlama ExpenseReportsVentilation=Gider raporu bağlama CreateMvts=Yeni işlem oluştur UpdateMvts=İşlemi değiştir @@ -101,7 +105,7 @@ Bookkeeping=Büyük Defter AccountBalance=Hesap bakiyesi ObjectsRef=Source object ref CAHTF=Total purchase supplier before tax -TotalExpenseReport=Total expense report +TotalExpenseReport=Toplam gider raporu InvoiceLines=Bağlanacak fatura satırları InvoiceLinesDone=Bağlı fatura satırları ExpenseReportLines=Lines of expense reports to bind @@ -110,13 +114,13 @@ IntoAccount=Satırı muhasebe hesabına bağla Ventilate=Bağla -LineId=Id line +LineId=Kimlik satırı Processing=İşleme EndProcessing=İşlem sonlandırıldı. SelectedLines=Seçilen satırlar Lineofinvoice=Fatura satırı -LineOfExpenseReport=Line of expense report -NoAccountSelected=No accounting account selected +LineOfExpenseReport=Gider raporu satırı +NoAccountSelected=Hiçbir muhasebe hesabı seçilmedi VentilatedinAccount=Muhasebe hesabına başarıyla bağlandı NotVentilatedinAccount=Muhasebe hesabına bağlı değil XLineSuccessfullyBinded=%s products/services successfully bound to an accounting account @@ -156,6 +160,7 @@ Docref=Referans LabelAccount=Hesap etiketi LabelOperation=Label operation Sens=Sens (borsa haberleri yayınlama günlüğü) +LetteringCode=Lettering code Codejournal=Günlük NumPiece=Parça sayısı TransactionNumShort=Num. transaction @@ -182,12 +187,12 @@ ProductAccountNotDefined=Account for product not defined FeeAccountNotDefined=Account for fee not defined BankAccountNotDefined=Account for bank not defined CustomerInvoicePayment=Müşteri faturası ödemesi -ThirdPartyAccount=Third party account +ThirdPartyAccount=Üçüncü parti hesabı NewAccountingMvt=Yeni İşlem NumMvts=İşlem hareket sayısı ListeMvts=Hareketler Listesi ErrorDebitCredit=Borç ve Alacak aynı anda bir değere sahip olamaz -AddCompteFromBK=Add accounting accounts to the group +AddCompteFromBK=Gruba muhasebe hesapları ekle ReportThirdParty=Üçüncü taraf hesabını listele DescThirdPartyReport=Consult here the list of the third party customers and vendors and their accounting accounts ListAccounts=Muhasebe hesapları listesi @@ -196,15 +201,15 @@ UnknownAccountForThirdpartyBlocking=Unknown third party account. Blocking error UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third party account and waiting account not defined. Blocking error PaymentsNotLinkedToProduct=Payment not linked to any product / service -Pcgtype=Group of account -Pcgsubtype=Subgroup of account -PcgtypeDesc=Group and subgroup of account are used as predefined 'filter' and 'grouping' criterias for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report. +Pcgtype=Hesap grubu +Pcgsubtype=Hesap alt grubu +PcgtypeDesc=Group and subgroup of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report. TotalVente=Vergi öncesi toplam gelir TotalMarge=Toplam satışlar kar oranı DescVentilCustomer=Burada bir ürün hesabına bağlı (ya da bağlı olmayan) müşteri faturaları satırları listesine bakın. -DescVentilMore=In most cases, if you use predefined products or services and you set the account number on the product/service card, the application will be able to make all the binding between your invoice lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on product/service cards or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "%s". +DescVentilMore=In most cases, if you use predefined products or services and you set the account number on the product/service card, the application will be able to make all the binding between your invoice lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on product/service cards or if you still have some lines not bound to an account, you will have to make a manual binding from the menu "%s". DescVentilDoneCustomer=Burada müşteri faturaları satırlarına ve onların ürün muhasebe hesabı listesine bakın DescVentilTodoCustomer=Bir ürün muhasebe hesabı ile bağlı olmayan müşteri faturaları satırlarını bağlayın ChangeAccount=Change the product/service accounting account for selected lines with the following accounting account: @@ -213,14 +218,15 @@ DescVentilSupplier=Consult here the list of vendor invoice lines bound or not ye DescVentilDoneSupplier=Consult here the list of the lines of invoices vendors and their accounting account DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account -DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still has some lines not bound to any account, you will have to make a manual binding from the menu "%s". +DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "%s". DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account -ValidateHistory=Bind Automatically -AutomaticBindingDone=Automatic binding done +ValidateHistory=Otomatik Olarak Bağla +AutomaticBindingDone=Otomatik bağlama bitti ErrorAccountancyCodeIsAlreadyUse=Hata, kullanıldığı için bu muhasebe hesabını silemezsiniz MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s | Credit = %s +Balancing=Balancing FicheVentilation=Binding card GeneralLedgerIsWritten=Transactions are written in the Ledger GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized. @@ -232,18 +238,18 @@ NotYetAccounted=Not yet accounted in ledger ## Admin ApplyMassCategories=Toplu kategori uygula -AddAccountFromBookKeepingWithNoCategories=Available acccount not yet in a personalized group +AddAccountFromBookKeepingWithNoCategories=Available account not yet in a personalized group CategoryDeleted=Category for the accounting account has been removed AccountingJournals=Muhasebe günlükleri -AccountingJournal=Accounting journal -NewAccountingJournal=New accounting journal -ShowAccoutingJournal=Show accounting journal +AccountingJournal=Muhasebe günlüğü +NewAccountingJournal=Yeni muhasebe günlüğü +ShowAccoutingJournal=Muhasebe günlüğünü göster Nature=Niteliği -AccountingJournalType1=Miscellaneous operations +AccountingJournalType1=Çeşitli işlemler AccountingJournalType2=Satışlar AccountingJournalType3=Alışlar AccountingJournalType4=Banka -AccountingJournalType5=Expenses report +AccountingJournalType5=Gider raporu AccountingJournalType8=Envanter AccountingJournalType9=Has-new ErrorAccountingJournalIsAlreadyUse=This journal is already use @@ -262,7 +268,8 @@ Modelcsv_quadratus=Quadratus QuadraCompta'ya doğru dışaaktar Modelcsv_ebp=EBP'ye yönelik dışaaktarım Modelcsv_cogilog=Cogilog'a dışaaktar Modelcsv_agiris=Export towards Agiris -Modelcsv_configurable=Export Configurable +Modelcsv_configurable=Export CSV Configurable +Modelcsv_FEC=Export FEC (Art. L47 A) (Test) ChartofaccountsId=Hesap planı Id ## Tools - Init accounting account on product / service @@ -292,15 +299,15 @@ ErrorNoAccountingCategoryForThisCountry=No accounting account group available fo ErrorInvoiceContainsLinesNotYetBounded=You try to journalize some lines of the invoice %s, but some other lines are not yet bounded to accounting account. Journalization of all invoice lines for this invoice are refused. ErrorInvoiceContainsLinesNotYetBoundedShort=Some lines on invoice are not bound to accounting account. ExportNotSupported=Ayarlanan dışaaktarım biçimi bu sayfada desteklenmiyor -BookeppingLineAlreayExists=Satırlar zaten muhasebede bulunmaktadır +BookeppingLineAlreayExists=Lines already existing into bookkeeping NoJournalDefined=No journal defined Binded=Bağlanmış satırlar ToBind=Bağlanacak satırlar -UseMenuToSetBindindManualy=Autodection not possible, use menu %s to make the binding manually +UseMenuToSetBindindManualy=Lines not yet bound, use menu %s to make the binding manually ## Import ImportAccountingEntries=Accounting entries -WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manualy in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate. +WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate. ExpenseReportJournal=Expense Report Journal InventoryJournal=Inventory Journal diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index 16531ed9625..50e87ceb26a 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -131,7 +131,7 @@ HoursOnThisPageAreOnServerTZ=Uyarı: Diğer ekranların aksine bu sayfadaki saat Box=Ekran etiketi Boxes=Ekran Etiketleri MaxNbOfLinesForBoxes=Ekran etiketleri için ençok satır sayısı -AllWidgetsWereEnabled=All available widgets are enabled +AllWidgetsWereEnabled=Mevcut olan tüm ekran etiketleri etkinleştirildi PositionByDefault=Varsayılan sıra Position=Durum MenusDesc=Menü yöneticisi iki menü çubuğunun içeriğini ayarlar (yatay ve dikey). @@ -190,10 +190,10 @@ EncodeBinariesInHexa=İkili veriyi onaltılık olarak kodla IgnoreDuplicateRecords=Çifte kayıt hatalarını gözardı et (GÖZARDI ET EKLE) AutoDetectLang=Otoalgıla (tarayıcı dili) FeatureDisabledInDemo=Özellik demoda devre dışıdır -FeatureAvailableOnlyOnStable=Feature only available on official stable versions -BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the trashcan to disable it. +FeatureAvailableOnlyOnStable=Özellik sadece resmi olarak kararlı sürümlerde kullanılabilir +BoxesDesc=Ekran Etiketleri, bazı sayfaları özelleştirmek için ekleyebileceğiniz çeşitli bilgileri gösteren bileşenlerdir. Hedef sayfayı seçip 'Etkinleştir' seçeneğini tıklayarak ekran etikeni göstermeyi veya çöp kutusuna tıklayarak devre dışı bırakıp göstermemeyi seçebilirsiniz. OnlyActiveElementsAreShown=Yalnızca etkinleştirilmiş modüllerin öğeleri gösterilmiştir. -ModulesDesc=The modules/applications determine which features are available in the software. Some modules require permissions to be granted to users after activating the module. Click the on/off button (at end of module line) to enable/disable a module/application. +ModulesDesc=Modüller/Uygulamalar, hangi özelliklerin yazılımda mevcut olduğunu belirler. Bazı modüller, modülü etkinleştirdikten sonra kullanıcılara izin verilmesini gerektirir. Açma/kapama butonuna (modül satırının sonunda yer alır) tıklayarak ilgili modülü etkinleştirebilir veya devre dışı bırakabilirsiniz. ModulesMarketPlaceDesc=Internette dış web sitelerinde indirmek için daha çok modül bulabilirsiniz... ModulesDeployDesc=If permissions on your file system allow it, you can use this tool to deploy an external module. The module will then be visible on the tab %s. ModulesMarketPlaces=Dış uygulama/modül bul @@ -229,7 +229,7 @@ DoNotStoreClearPassword=Parolaları veritabanında saklamayın silin, yalnızca MainDbPasswordFileConfEncrypted=Veritabanı parolaları conf.php de şifrelendirilmiştir. (Etkinleştirme önerilir) InstrucToEncodePass=Parolayı conf.php dosyasına kodlamak için
    $dolibarr_main_db_pass="...";
    by
    $dolibarr_main_db_pass="crypted:%s"; satırını değiştirin InstrucToClearPass=Parolayı conf.php dosyasına kodlamak (temiz) için
    $dolibarr_main_db_pass="crypted:...";
    by
    $dolibarr_main_db_pass="%s"; satırını değiştirin -ProtectAndEncryptPdfFiles=Protection of generated PDF files NOT recommended (breaks mass PDF generation) +ProtectAndEncryptPdfFiles=Oluşturulan PDF dosyalarının korunması - ÖNERİLMEZ (toplu PDF oluşturulmasını bozar) ProtectAndEncryptPdfFilesDesc=Bir PDF belgesinin korunması dosyanın herhangi bir PDF tarayıcısında okunmasını ve yazdırılmasını sağlar. Bundan düzenleme ve kopyalama yapmak olanaksızdır. Bu özelliği kulanmanın çalışmayan genel kümülatif pdf oluşturduğuna dikkat edin. Feature=Özellik DolibarrLicense=Lisans @@ -262,23 +262,23 @@ NoticePeriod=Bildirim dönemi NewByMonth=New by month Emails=E-postalar EMailsSetup=E-posta kurulumları -EMailsDesc=This page allows you to override your default PHP parameters for email sending. In most cases on Unix/Linux OS, the PHP setup is correct and these parameters are unnecessary. +EMailsDesc=Bu sayfa, e-posta gönderimi için varsayılan PHP parametrelerinizin üzerine yazma imkanı verir. Unix/Linux OS sistemindeki çoğu durumda PHP kurulumu doğrudur ve bu parametreler gereksizdir. EmailSenderProfiles=Emails sender profiles -MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (default value in php.ini: %s) -MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) -MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) -MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Portu (php.ini içinde varsayılan değer: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Sunucusu (php.ini içinde varsayılan değer: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Portu (Unix benzeri sistemlerdeki PHP'de tanımlanmamış) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Sunucusu (Unix benzeri sistemlerdeki PHP'de tanımlanmamış) +MAIN_MAIL_EMAIL_FROM=Otomatik e-postalar için gönderen E-Posta adresi (php.ini içindeki varsayılan değer: %s) MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to -MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) +MAIN_DISABLE_ALL_MAILS=Tüm e-posta gönderimini devre dışı bırak (test veya demo kullanımı için) MAIN_MAIL_FORCE_SENDTO=Tüm e-mailleri şu adreslere gönder (gerçek alıcıların yerine, test amaçlı) MAIN_MAIL_ENABLED_USER_DEST_SELECT=Add employee users with email into allowed recipient list MAIN_MAIL_SENDMODE=E-posta gönderme yöntemi MAIN_MAIL_SMTPS_ID=SMTP ID (gönderme sunucusu kimlik doğrulama gerektiriyorsa) MAIN_MAIL_SMTPS_PW=SMTP Şifresi (gönderme sunucusu kimlik doğrulama gerektiriyorsa) MAIN_MAIL_EMAIL_TLS=TLS (SSL) şifreleme kullan -MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption +MAIN_MAIL_EMAIL_STARTTLS=TLS (STARTTLS) şifreleme kullan MAIN_MAIL_EMAIL_DKIM_ENABLED=Use DKIM to generate email signature MAIN_MAIL_EMAIL_DKIM_DOMAIN=Email Domain for use with dkim MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name of dkim selector @@ -286,7 +286,7 @@ MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Private key for dkim signing MAIN_DISABLE_ALL_SMS=Tüm SMS gönderimlerini devre dışı bırak (test ya da demo amaçlı) MAIN_SMS_SENDMODE=SMS göndermek için kullanılacak yöntem MAIN_MAIL_SMS_FROM=SMS gönderimi için varsayılan gönderici telefon numarası -MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email or Company email) +MAIN_MAIL_DEFAULT_FROMTYPE=Manuel gönderim için varsayılan gönderici e-posta adresi (Kullanıcı e-postası veya Şirket e-postası) UserEmail=Kullanıcı email adresi CompanyEmail=Firma email adresi FeatureNotAvailableOnLinux=Unix gibi sistemlerde bu özellik yoktur. @@ -321,7 +321,7 @@ SetupIsReadyForUse=Module deployment is finished. You must however enable and se NotExistsDirect=Alternatif kök dizin varolan bir dizine tanımlanmamış.
    InfDirAlt=Sürüm 3 ten beri bir alternatif kök dizin tanımlanabiliyor. Bu sizin ayrılmış bir dizine, eklentiler ve özel şablonlar depolamanızı sağlar.
    Yalnızca Dolibarr kökünde bir dizin oluşturun (örn. özel).
    InfDirExample=
    Then declare it in the file conf.php
    $dolibarr_main_url_root_alt='/custom'
    $dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
    If these lines are commented with "#", to enable them, just uncomment by removing the "#" character. -YouCanSubmitFile=Alternatively, you may upload the module .zip file package: +YouCanSubmitFile=Alternatif olarak, modül .zip dosya paketini yükleyebilirsiniz: CurrentVersion=Dolibarr geçerli sürümü CallUpdatePage=Veritabanı yapısını ve verileri güncelleyen sayfaya git: %s. LastStableVersion=Son kararlı sürüm @@ -356,10 +356,10 @@ ConfirmPurge=Are you sure you want to execute this purge?
    This will permanent MinLength=Enaz uzunluk LanguageFilesCachedIntoShmopSharedMemory=.lang dosyaları paylaşılan hafızaya yüklendi. LanguageFile=Dil dosyası -ExamplesWithCurrentSetup=Examples with current configuration +ExamplesWithCurrentSetup=Tanımladığınız mevcut yapılandırma için örnekler ListOfDirectories=OpenDocument (AçıkBelge) temaları dizin listesi ListOfDirectoriesForModelGenODT=OpenDocument biçimli şablon dosyalarını içeren dizinler listesi.

    Buraya tam yol dizinlerini koyun.
    Her dizin arasına satır başı ekleyin.
    GED modülü dizinini eklemek için buraya ekleyinDOL_DATA_ROOT/ecm/yourdirectoryname.

    O dizinlerdeki dosyaların bitiş şekli böyle omalıdır .odt or .ods. -NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories +NumberOfModelFilesFound=Bu dizinlerde bulunana ODT/ODS şablon dosyalarının sayısı ExampleOfDirectoriesForModelGen=Sözdizimi örnekleri:
    c:\\mydir
    /home/mydir
    DOL_DATA_ROOT/ecm/ecmdir FollowingSubstitutionKeysCanBeUsed=
    Odt belge şablonlarının nasıl oluşturulacağını öğrenmek için o dizinlere kaydetmeden önce, wiki belgelerini okuyun: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template @@ -374,12 +374,12 @@ ResponseTimeout=Tepki zaman aşımı SmsTestMessage=__ARAYANTEL__ den __ARANANTEL__ e test mesajı ModuleMustBeEnabledFirst=Bu özelliğe gereksinim duyarsanız öne %s modülünü etkinleştirmelisiniz. SecurityToken=URL leri güvenli kılmak için anahtar -NoSmsEngine=No SMS sender manager available. A SMS sender manager is not installed with the default distribution because they depend on an external supplier, but you can find some on %s +NoSmsEngine=Sitemde hiç bir SMS gönderme yöneticisi mevcut değil. Standart Dolibarr sürümü ile bir SMS gönderme yöneticisi yüklü gelmez, çünkü bunlar bir dış sağlayıcıya bağlıdır. Yine de %s'da birkaç tane bulabilirsiniz. PDF=PDF -PDFDesc=You can set each global option related to the PDF generation +PDFDesc=PDF oluşturma ile ilgili her global seçeneği ayarlayabilirsiniz PDFAddressForging=Adres kutusu şekillendirme kuralları -HideAnyVATInformationOnPDF=Hide all information related to Sales tax / VAT on generated PDF -PDFRulesForSalesTax=Rules for Sales Tax / VAT +HideAnyVATInformationOnPDF=Oluşturulan PDF'lerde satış vergisi / KDV ile ilgili tüm bilgileri gizle +PDFRulesForSalesTax=Satış Vergisi / KDV için Kurallar PDFLocaltax=%siçin kurallar HideLocalTaxOnPDF=Hide %s rate in pdf column tax sale HideDescOnPDF=Oluşturulan PDF de ürün açıklamasını gizle @@ -391,14 +391,14 @@ UrlGenerationParameters=URL güvenliği için parametreler SecurityTokenIsUnique=Her URL için benzersiz bir güvenlik anahtarı kullan EnterRefToBuildUrl=Nesen %s için hata referansı GetSecuredUrl=Hesaplanan URL al -ButtonHideUnauthorized=Hide buttons for non-admin users for unauthorized actions instead of showing greyed disabled buttons +ButtonHideUnauthorized=Yönetici olmayan kullanıcıların yetkisiz eylemlerinin önüne geçmek için, butonları gri ve engellenmiş olarak göstermek yerine tamamen gizle. OldVATRates=Eski KDV oranı NewVATRates=Yeni KDV oranı PriceBaseTypeToChange=Buna göre tanımlanan temel referans değerli fiyatları değiştir MassConvert=Toplu dönüştürmeyi başlat String=Dizi TextLong=Uzun metin -HtmlText=Html text +HtmlText=HTML metni Int=Tam sayı Float=Kayan DateAndTime=Tarih ve saat @@ -443,7 +443,7 @@ InitEmptyBarCode=Sonraki %s boş kayıt için ilk değer EraseAllCurrentBarCode=Geçerli bütün barkod değerlerini sil ConfirmEraseAllCurrentBarCode=Geçerli bütün barkod değerlerini silmek istediğinizden emin misiniz? AllBarcodeReset=Tüm barkod değerleri silinmiştir -NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled in the barcode module setup. +NoBarcodeNumberingTemplateDefined=Barkod modülünün ayarlarında hiçbir numaralandırma barkod şablonu etkinleştirilmemiş EnableFileCache=Dosya önbelliğini etkinleştir ShowDetailsInPDFPageFoot=PDF dosyalarının sayfa altlığına daha çok ayrıntı ekle, firma adresiniz, yönetici isimleri gibi (meslek numara bilgileri, sermaye Vergi numarasıyla tamamlayabilirsiniz). NoDetails=Sayfa altığında daha fazla bilgi yok @@ -467,7 +467,7 @@ PageUrlForDefaultValues=You must enter the relative path of the page in URL. If PageUrlForDefaultValuesCreate=
    Example:
    For the form to create a new thirdparty, it is %s.
    For URL of external modules installed into custom directory, do not include the "custom/", so use path like mymodule/mypage.php and not custom/mymodule/mypage.php.
    If you want default value only if url has some parameter, you can use %s PageUrlForDefaultValuesList=
    Example:
    For the page that list third-parties, it is %s.
    For URL of external modules installed into custom directory, do not include the "custom/" so use path like mymodule/mypagelist.php and not custom/mymodule/mypagelist.php.
    If you want default value only if url has some parameter, you can use %s EnableDefaultValues=Kişiselleştirilmiş varsayılan değerlerin kullanımını etkinleştir -EnableOverwriteTranslation=Enable usage of overwritten translation +EnableOverwriteTranslation=Üzerine yazılabilir çeviri kullanımını etkinleştir GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. Field=Alan @@ -491,7 +491,7 @@ Module1Desc=Companies and contacts management (customers, prospects...) Module2Name=Ticaret Module2Desc=Ticaret yönetimi Module10Name=Muhasebe -Module10Desc=Simple accounting reports (journals, turnover) based on database content. Does not use any ledger table. +Module10Desc=Veritabanı içeriğine dayalı basit muhasebe raporları (günlükler, ciro). Herhangi defter tablosunu kullanmaz. Module20Name=Teklifler Module20Desc=Teklif yönetimi Module22Name=Toplu E-postalar @@ -504,8 +504,8 @@ Module30Name=Faturalar Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers Module40Name=Tedarikçiler Module40Desc=Tedarikçi ve satın alma yönetimi (satın alma siparişleri ve faturalandırma) -Module42Name=Debug Logs -Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes. +Module42Name=Hata Ayıklama Günlükleri +Module42Desc=Günlükleme araçları (dosya, syslog, ...). Bu gibi günlükler teknik/hata ayıklama amaçları içindir. Module49Name=Düzenleyiciler Module49Desc=Düzenleyici yönetimi Module50Name=Ürünler @@ -517,7 +517,7 @@ Module52Desc=Stok yönetimi (ürünler) Module53Name=Hizmetler Module53Desc=Hizmet yönetimi Module54Name=Sözleşmeler/Abonelikler -Module54Desc=Management of contracts (services or recurring subscriptions) +Module54Desc=Sözleşmelerin yönetimi (hizmetler veya yinelenen abonelikler) Module55Name=Barkodlar Module55Desc=Barkod yönetimi Module56Name=Telefon @@ -559,16 +559,16 @@ Module400Desc=Management of projects, leads/opportunities and/or tasks. You can Module410Name=Web Takvimi Module410Desc=WebT akvimi entegrasyonu Module500Name=Vergiler ve Özel Harcamalar -Module500Desc=Management of other expenses (sale taxes, social or fiscal taxes, dividends, ...) +Module500Desc=Diğer giderlerin yönetimi (satış vergileri, sosyal veya mali vergiler, temettüler, ...) Module510Name=Çalışan ücretlerinin ödenmesi -Module510Desc=Record and track employee payments +Module510Desc=Çalışan ödemelerini kaydedin ve takip edin Module520Name=Borç Module520Desc=Borçların yönetimi Module600Name=İş etkinliklerine ilişkin bildirimler Module600Desc=Send email notifications triggered by a business event, for users (setup defined on each user), third-party contacts (setup defined on each third party) or to defined emails Module600Long=Note that this module sends emails in real-time when a specific business event occurs. If you are looking for a feature to send email reminders of agenda events, go into the setup of module Agenda. Module610Name=Ürün Değişkenleri -Module610Desc=Creation of product variants (color, size etc.) +Module610Desc=Ürün değişkenlerinin oluşturulması (renk, ebat v.b.) Module700Name=Bağışlar Module700Desc=Bağış yönetimi Module770Name=Gider raporları @@ -582,7 +582,7 @@ Module1520Desc=Toplu posta belgesi oluşturma Module1780Name=Etiketler/Kategoriler Module1780Desc=Etiket/kategori oluştur (ürünler, müşteriler, tedarikçiler, kişiler ve üyeler) Module2000Name=FCKdüzenleyici (FCKeditor) -Module2000Desc=Allow text fields to be edited using CKEditor +Module2000Desc=Metin alanlarının CKEditor kullarak düzenlenmesine izin ver Module2200Name=Dinamik Fiyatlar Module2200Desc=Fiyatlar için matematik ifadelerin kullanımını etkinleştir Module2300Name=Planlı işler @@ -598,14 +598,14 @@ Module2610Desc=API hizmetlerini sağlayan Dolibarr REST sunucusunu etkinleştir Module2660Name=Çağrı WebHizmetleri (SOAP istemcisi) Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Supplier orders currently supported.) Module2700Name=Gravatar -Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Needs Internet access +Module2700Desc=Kullanıcıların/üyelerin fotoğrafını göstermek için çevrimiçi Gravatar hizmetini (www.gravatar.com) kullanın (e-postalarıyla bulunur). İnternet erişimi gerekiyor. Module2800Desc=FTP İstemcisi Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind dönüştürme becerileri Module3100Name=Skype Module3100Desc=Kullanıcı / üçüncü parti / kişi / üye kartlarına bir Skype düğmesi ekle -Module3200Name=Unalterable Archives -Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3200Name=Değiştirilemez Arşivler +Module3200Desc=Değiştirilemeyen bir iş etkinlikleri günlüğü etkinleştirin. Etkinlikler gerçek zamanlı olarak arşivlenir. Günlük, dışa aktarılabilen zincirlenmiş olayların salt okunur bir tablosudur. Bu modül bazı ülkeler için zorunlu olabilir. Module4000Name=IK Module4000Desc=Human resources management (management of department, employee contracts and feelings) Module5000Name=Çoklu-firma @@ -616,10 +616,10 @@ Module10000Name=Websiteleri Module10000Desc=Create public websites with a WYSIWG editor. Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the Internet with your own domain name. Module20000Name=İzin İstekleri yönetimi Module20000Desc=Declare and track employees leave requests -Module39000Name=Products lots +Module39000Name=Ürün Lotları Module39000Desc=Ürünlerde ürün ya da seri numarası, son tüketme ve son satma tarihi yönetimi -Module40000Name=Multicurrency -Module40000Desc=Use alternative currencies in prices and documents +Module40000Name=Çoklu parabirim +Module40000Desc=Fiyat ve belgelerde alternatif para birimlerini kullanın Module50000Name=PayBox Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) Module50100Name=Satış Noktaları @@ -629,7 +629,7 @@ Module50150Desc=Point of sales module (Touch screen POS). Module50200Name=Paypal Module50200Desc=Offer customers a PayPal online payment page (PayPal account or credit/debit cards). This can be used to allow your customers to make free payments or for a payment on a particular Dolibarr object (invoice, order, ...) Module50400Name=Muhasebe (gelişmiş) -Module50400Desc=Accounting management (double entries, support general and auxiliary ledgers). Export the ledger in several other accounting software formats. +Module50400Desc=Muhasebe yönetimi (çift girişler, genel ve yardımcı defterleri destekleme). Defteri, diğer birçok muhasebe yazılımı formatında dışa aktarın. Module54000Name=IPP Yazdır Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installed on server). Module55000Name=Anket, Araştırma ya da Oylama @@ -639,7 +639,7 @@ Module59000Desc=Kar Oranı yönetimi modülü Module60000Name=Komisyonlar Module60000Desc=Komisyon yönetimi modülü Module62000Name=Uluslararası Ticaret Terimleri -Module62000Desc=Add features to manage Incoterms +Module62000Desc=Uluslararası Ticaret Terimleri'ni yönetmek için özellikler ekleyin Module63000Name=Kaynaklar Module63000Desc=Kaynakları yönetin (yazıcılar, arabalar, odalar, ...) böylece etkinliklerde paylaşabilirsiniz Permission11=Müşteri faturalarını oku @@ -760,7 +760,7 @@ Permission244=Gizli kategorilerin içeriğine bak Permission251=Diğer kullanıcıları ve grupları oku PermissionAdvanced251=Diğer kullanıcıları oku Permission252=Diğer kullanıcıların izinlerini oku -Permission253=Create/modify other users, groups and permissions +Permission253=Diğer kullanıcıları, grupları ve izinleri oluştur/değiştir PermissionAdvanced253=İç/dış kullanıcı ve izinlerini oluştur/değiştir Permission254=Yalnızca dış kullanıcıları oluştur/değiştir Permission255=Diğer kullanıcıların şifrelerini değiştir @@ -850,7 +850,7 @@ Permission1236=Tedarikçi faturalarını, özniteliklerini ve ödemelerini dış Permission1237=Tedarikçi siparişi ve ayrıntılarını dışaaktar Permission1251=Dış verilerin veritabanına toplu olarak alınmasını çalıştır (veri yükle) Permission1321=Müşteri faturalarını, özniteliklerin ve ödemelerini dışaaktar -Permission1322=Reopen a paid bill +Permission1322=Ödenmiş bir faturayı yeniden aç Permission1421=Müşteri siparişleri ve özniteliklerini dışaaktar Permission20001=Read leave requests (your leave and that of your subordinates) Permission20002=Create/modify your leave requests (your leave and that of your subordinates) @@ -888,8 +888,8 @@ Permission63001=Kaynak oku Permission63002=Kaynak oluştur/düzenle Permission63003=Kaynak sil Permission63004=Gündem etkinliklerine kaynak bağlantıla -DictionaryCompanyType=Types of third-parties -DictionaryCompanyJuridicalType=Legal forms of third-parties +DictionaryCompanyType=Üçüncü parti türleri +DictionaryCompanyJuridicalType=Üçüncü partilerin yasal formları DictionaryProspectLevel=Aday potansiyel düzeyi DictionaryCanton=Eyalet/İl DictionaryRegion=Bölgeler @@ -899,15 +899,15 @@ DictionaryCivility=Kişisel ve mesleki unvanlar DictionaryActions=Gündem etkinlik türleri DictionarySocialContributions=Sosyal ya da mali vergi türleri DictionaryVAT=KDV Oranları veya Satış Vergisi Oranları -DictionaryRevenueStamp=Amount of tax stamps +DictionaryRevenueStamp=Damga vergisi tutarları DictionaryPaymentConditions=Ödeme koşulları DictionaryPaymentModes=Ödeme türleri -DictionaryTypeContact=Contacts/addresses types -DictionaryTypeOfContainer=Type of website pages/containers +DictionaryTypeContact=Kişi/adres türleri +DictionaryTypeOfContainer=Web sitesi sayfalarının/kapsayıcılarının türü DictionaryEcotaxe=Ecotax (WEEE) DictionaryPaperFormat=Kağıt biçimleri DictionaryFormatCards=Kart formatları -DictionaryFees=Expense report - Types of expense report lines +DictionaryFees=Gider raporu - Gider raporu satırlarının türleri DictionarySendingMethods=Nakliye yöntemleri DictionaryStaff=Personel DictionaryAvailability=Teslimat süresi @@ -921,14 +921,14 @@ DictionaryUnits=Birimler DictionaryProspectStatus=Aday durumu DictionaryHolidayTypes=Types of leave DictionaryOpportunityStatus=Lead status for project/lead -DictionaryExpenseTaxCat=Expense report - Transportation categories -DictionaryExpenseTaxRange=Expense report - Range by transportation category +DictionaryExpenseTaxCat=Gider raporu - Ulaşım kategorileri +DictionaryExpenseTaxRange=Gider raporu - Ulaştırma kategorisine göre menzil SetupSaved=Kurulum kaydedildi SetupNotSaved=Kurulum kaydedilmedi BackToModuleList=Modül listesine geri git -BackToDictionaryList=Back to list of Dictionaries -TypeOfRevenueStamp=Type of tax stamp -VATManagement=Sale Tax Management +BackToDictionaryList=Sözlük listesine geri dön +TypeOfRevenueStamp=Damga vergisi türü +VATManagement=Satış Vergisi Yönetimi VATIsUsedDesc=By default when creating prospects, invoices, orders etc. the Sale Tax rate follows the active standard rule:
    If the seller is not subject to Sale tax, then Sale tax defaults to 0. End of rule.
    If the (seller's country = buyer's country), then the Sale tax by default equals the Sale tax of the product in the seller's country. End of rule.
    If the seller and buyer are both in the European Community and goods are transport-related products (haulage, shipping, airline), the default Sale tax is 0. This rule is dependant on the seller's country - please consult with your accountant. The Sale tax should be paid by the buyer to their customs office in their country and not to the seller. End of rule.
    If the seller and buyer are both in the European Community and the buyer is not a company (with a registered intra-Community Sale tax number) then the Sale tax by defaults to the Sale tax of the seller's country. End of rule.
    If the seller and buyer are both in the European Community and the buyer is a company (with a registered intra-Community Sale tax number), then the Sale tax is 0 by default. End of rule.
    In any other case the proposed default is Sale tax=0. End of rule. VATIsNotUsedDesc=By default the proposed Sale tax is 0 which can be used for cases like associations, individuals or small companies. VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which Sale tax is declared. @@ -967,8 +967,8 @@ CalcLocaltax3Desc=Yerel Vergi raporları satışların yerel vergileri toplamıd LabelUsedByDefault=Hiçbir çeviri kodu bulunmuyorsa varsayılan olarak kullanılan etiket LabelOnDocuments=Belgeler üzerindeki etiket LabelOrTranslationKey=Label or translation key -ValueOfConstantKey=Value of constant -NbOfDays=No. of days +ValueOfConstantKey=Sabit değer +NbOfDays=Gün sayısı AtEndOfMonth=Ay sonunda CurrentNext=Güncel/Sonraki Offset=Sapma @@ -994,7 +994,7 @@ DatabaseUser=Veritabanı kullanıcı DatabasePassword=Veritabanı parolası Tables=Tablolar TableName=Tablo adı -NbOfRecord=No. of records +NbOfRecord=Kayıt sayısı Host=Sunucu DriverType=Sürücü türü SummarySystem=Sistem bilgileri özeti @@ -1006,7 +1006,7 @@ Skin=Dış görünüm teması DefaultSkin=Varsayılan dış görünüm teması MaxSizeList=Listenin ençok uzunluğu DefaultMaxSizeList=Liste için varsayılan ençok uzunluk -DefaultMaxSizeShortList=Default max length for short lists (i.e. in customer card) +DefaultMaxSizeShortList=Kısa listeler için varsayılan maksimum uzunluk (örn. müşteri kartında) MessageOfDay=Günün mesajı MessageLogin=Oturum açma sayfası mesajı LoginPage=Oturum açma sayfası @@ -1031,30 +1031,30 @@ OwnerOfBankAccount=Banka hesabı sahibi %s BankModuleNotActive=Banka hesapları modülü etkin değil ShowBugTrackLink=Bu bağlantıyı göster "%s" Alerts=Uyarılar -DelaysOfToleranceBeforeWarning=Delays before displaying an alert warning -DelaysOfToleranceDesc=This screen allows you to define the delay before an alert is reported onscreen with a %s icon for each late element. -Delays_MAIN_DELAY_ACTIONS_TODO=Delay (in days) before alert on planned events (agenda events) not completed yet -Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Delay (in days) before alert on project not closed in time -Delays_MAIN_DELAY_TASKS_TODO=Delay (in days) before alert on planned tasks (project tasks) not completed yet -Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Delay (in days) before alert on orders not processed yet -Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Henüz işlenmemiş satın alma siparişleri için uyarı öncesi gecikme toleransı (gün olarak) -Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Delay (in days) before alert on proposals to close -Delays_MAIN_DELAY_PROPALS_TO_BILL=Delay (in days) before alert on proposals not billed -Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Delay (in days) before alert on services to activate -Delays_MAIN_DELAY_RUNNING_SERVICES=Delay (in days) before alert on expired services -Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Delay (in days) before alert on unpaid supplier invoices -Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Delay (in days) before alert on unpaid client invoices -Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Delay (in days) before alert on pending bank reconciliation -Delays_MAIN_DELAY_MEMBERS=Delay (in days) before alert on delayed membership fee -Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Delay (in days) before alert for cheque deposit to do -Delays_MAIN_DELAY_EXPENSEREPORTS=Delay (in days) before alert for expense reports to approve -SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. -SetupDescription2=The mandatory setup steps are the 2 first steps in the Setup menu, namely : -SetupDescription3=%s -> %s
    Basic parameters used to customize the default behavior of Dolibarr (e.g for country-related features). -SetupDescription4=%s -> %s
    Dolibarr ERP/CRM is a collection of many modules/applications, all more or less independent. The modules relevant to your needs must be enabled and configured. New items/options are added to menus with the activation of a module. -SetupDescription5=Other Setup menu entries provides optional parameters. +DelaysOfToleranceBeforeWarning=Bir uyarı işaretini görüntülemeden önceki ek mühlet +DelaysOfToleranceDesc=Burada, ekranda %s sembolüyle bir uyarı bildirimi verilmeden önce her bir geç kalmış eylem için ek mühlet süresini tanımlayabilirsiniz. +Delays_MAIN_DELAY_ACTIONS_TODO=Henüz tamamlanmamış planlı etkinlikler (gündem etkinlikleri) için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Zamanında kapatılmamış proje için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_TASKS_TODO=Henüz tamamlanmamış planlı görevler (proje görevleri) için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Henüz işlenmemiş siparişler için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Henüz işlenmemiş satın alma siparişleri için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Kapatılacak teklifler için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_PROPALS_TO_BILL=Faturalanmamış teklifler için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Etkinleştirilecek hizmetler için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_RUNNING_SERVICES=Süresi dolmuş hizmetler için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Ödenmemiş tedarikçi faturaları için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Ödenmemiş müşteri faturaları için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Bekleyen banka mutabakatı için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_MEMBERS=Gecikmiş üyelik ücreti için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Yapılacak çek depozitosu için uyarı öncesinde ek mühlet (gün olarak) +Delays_MAIN_DELAY_EXPENSEREPORTS=Onaylanacak gider raporları için uyarı öncesinde ek mühlet (gün olarak) +SetupDescription1=Dolibarr yazılımını kullanmaya başlamadan önce bazı başlangıç parametreleri tanımlanmalı, gerekli modüller etkinleştirilip ve yapılandırılmalıdır. +SetupDescription2=Zorunlu kurulum aşamaları, aşağıda isimleri yer alan Ayarlar menüsündeki ilk 2 adımdır: +SetupDescription3=%s -> %s
    Dolibarr'ın varsayılan davranışını özelleştirmek için kullanılan temel parametreler (örneğin ülkeyle ilişkili özellikler) +SetupDescription4=%s -> %s
    Dolibarr ERP/CRM yazılımı, tamamı hemen hemen bağımsız olan birçok modül ve uygulamanın koleksiyonudur. İhtiyaçlarınıza uygun olan modüller etkinleştirilmiş ve yapılandırılmış olmalıdır. Bir modülün etkinleştirilmesi ile yeni öğe ve seçenekler menülere eklenir. +SetupDescription5=Diğer Ayarlar menüsündeki girişler isteğe bağlı parametreler sağlar. LogEvents=Güvenlik denetimi etkinlikleri -Audit=Security events +Audit=Güvenlik etkinlikleri InfoDolibarr=Dolibarr Bilgileri InfoBrowser=Tarayıcı Bilgileri InfoOS=OS Bilgileri @@ -1070,9 +1070,9 @@ LogEventDesc=You can enable here the logging for security events. Administrators AreaForAdminOnly=Kurulum parametreleri sadece yönetici olan kullanıcılar tarafından ayarlanabilir. SystemInfoDesc=Sistem bilgileri sadece okuma modunda ve yöneticiler için görüntülenen çeşitli teknik bilgilerdir. SystemAreaForAdminOnly=Bu alan yalnız yönetici kullanıcılar için kullanılabilir. Hiçbir Dolibarr izini bu sınırı azaltamaz. -CompanyFundationDesc=Edit the information of the company/entity. Click on "%s" or "%s" button at the bottom of the page. -AccountantDesc=Edit the details of your accountant/bookkeeper -AccountantFileNumber=File number +CompanyFundationDesc=Şirketin/varlığın bilgilerini düzenleyin. Sayfanın sonunda yer alan "%s" veya "%s" butonuna tıklayın. +AccountantDesc=Muhasebecinizin veya şirket hesabınızı tutanların ayrıntılarını düzenleyin +AccountantFileNumber=Dosya numarası DisplayDesc=Dolibarr ile ilgili her bir parametreyi seçebilirsiniz AvailableModules=Mevcut uygulama/modüller ToActivateModule=Modülleri etkinleştirmek için, ayarlar alanına gidin (Giriş->Ayarlar>Modüller). @@ -1089,7 +1089,7 @@ DictionaryDesc=Bütün referans verisini ekleyin. Değerlerinizi varsayılana ek ConstDesc=Bu sayfa, önceki sayfalarda bulunmayan diğer tüm parametreleri düzenlemenizi sağlar. Bunlar çoğunlukla geliştiriciler veya gelişmiş sorun giderme için ayrılmış parametrelerdir. Seçeneklerin bir listesi için buraya bakın. MiscellaneousDesc=Burada güvenlik ile ilgili diğer tüm parametreler tanımlanır. LimitsSetup=Sınırlar/Doğruluk kurulumu -LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here +LimitsDesc=Dolibarr tarafından kullanılan limitleri, hassasiyetleri ve iyileştirmeleri buradan tanımlayabilirsiniz MAIN_MAX_DECIMALS_UNIT=Birim fiyatlar için ençok ondalık MAIN_MAX_DECIMALS_TOT=Toplam fiyatlar için ençok ondalık MAIN_MAX_DECIMALS_SHOWN=Fiyatlar için ençok ondalık ekranda görüntülenir (isterseniz bu sayıdan sonra görmek istediğiniz kırpılmış ... ekleyin) @@ -1098,7 +1098,7 @@ UnitPriceOfProduct=Bir ürünün net birim fiyatı TotalPriceAfterRounding=Yuvarlama sonrası toplam fiyat (net/KDV/vergi dahil) ParameterActiveForNextInputOnly=Yalnız sonraki giriş için etkili Parametre NoEventOrNoAuditSetup=No security event has been recorded yet. This can be normal if audit has not been enabled on "Setup - Security - Events" page. -NoEventFoundWithCriteria=No security event has been found for this search criteria. +NoEventFoundWithCriteria=Bu arama kriterleri için hiçbir güvenlik etkinliği bulunamadı SeeLocalSendMailSetup=Yerel postagönder kurulumunuza bakın BackupDesc=Tam bir Dolibarr yedeklemesi için şunları yapmalısınız: BackupDesc2=Bütün yüklenen ve oluşturulan dosyaları içeren belge dizini (%s) içeriğini kaydedin (1. Adımda oluşturulan tüm döküm dosyalarını içerir). @@ -1118,15 +1118,15 @@ YouMustRunCommandFromCommandLineAfterLoginToUser=Bu komutu %s kullanıcı YourPHPDoesNotHaveSSLSupport=SSL fonksiyonları PHP nizde mevcut değildir DownloadMoreSkins=Daha fazla kaplama indirin SimpleNumRefModelDesc=Referans sayısını %syymm-nnnn biçimi ile girin; yy yıl mm ay ve nnnn deliksiz ve sıfırlanamayan bir dizidir -ShowProfIdInAddress=Show professional id with addresses on documents +ShowProfIdInAddress=Belgeler üzerindeki adreslerde profesyonel kimliği göster ShowVATIntaInAddress=Hide intra-Community VAT number with addresses on documents TranslationUncomplete=Kısmi çeviri -MAIN_DISABLE_METEO=Disable meteorological view +MAIN_DISABLE_METEO=Meteolojik görünümü devre dışı bırak MeteoStdMod=Standart mod -MeteoStdModEnabled=Standard mode enabled -MeteoPercentageMod=Percentage mode +MeteoStdModEnabled=Standart mod etkin +MeteoPercentageMod=Yüzde modu MeteoPercentageModEnabled=Yüzde modu etkin -MeteoUseMod=Click to use %s +MeteoUseMod=%s kullanmak için tıklayın TestLoginToAPI=API oturum açma denemesi ProxyDesc=Some features of Dolibarr need to have internet access to work. Define here the parameters for this. If the Dolibarr server is behind a Proxy server, these parameters tell Dolibarr how to access the internet through it. ExternalAccess=Dış erişim @@ -1160,9 +1160,9 @@ SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail dire TranslationSetup=Çeviri ayarları TranslationKeySearch=Çeviri anahtarı veya dizesi ara TranslationOverwriteKey=Çeviri dizesinin üzerine yaz -TranslationDesc=How to set displayed application language :
    * Systemwide: menu Home - Setup - Display
    * Per user: Use the User display setup tab on user card (click on username at the top of the screen). +TranslationDesc=Görüntülenen uygulama dili şu şekilde ayarlanır:
    * Tüm sistem için: Menü Giriş - Ayarlar - Ekran
    * Her bir kullanıcı için ayrı: Kullanıcı kartındaki Kullanıcı görüntüleme ayarı sekmesini kullanın (ekranın üst kısmındaki kullanıcı adına tıklayın). TranslationOverwriteDesc=Ayrıca aşağıdaki tabloyu doldurarak dizeleri geçersiz kılabilirsiniz. Dilinizi "%s" açılır tablosundan seçin, anahtar dizeyi "%s" içine ekleyin ve yeni çevirinizi de "%s" içine ekleyin. -TranslationOverwriteDesc2=You can use the other tab to help you know which translation key to use +TranslationOverwriteDesc2=Çevirmek istediğiniz kelime veya kelime dizisinin hangi anahtarı kullandığını bulmak için diğer sekmeyi (Çeviri anahtarı veya dizesi ara) kullanabilirsiniz. TranslationString=Çeviri dizesi CurrentTranslationString=Geçerli çeviri dizesi WarningAtLeastKeyOrTranslationRequired=En azından anahtar veya çeviri dizesi için bir arama kriteri gereklidir @@ -1171,7 +1171,7 @@ OriginalValueWas=Orijinal çevirinin üzerine yazılır. Orijinal değerler şu TransKeyWithoutOriginalValue=You forced a new translation for the translation key '%s' that does not exist in any language files TotalNumberOfActivatedModules=Etkinleştirilmiş uygulama/modüller: %s/%s YouMustEnableOneModule=Enaz 1 modül etkinleştirmelisiniz -ClassNotFoundIntoPathWarning=Class %s not found in PHP path +ClassNotFoundIntoPathWarning=Class %s PHP yolunda bulunamadı YesInSummer=Yazın evet OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are opened to external users (whatever the permissions of such users) and only if permissions are granted: SuhosinSessionEncrypt=Oturum depolaması Suhosin tarafından şifrelendi @@ -1187,13 +1187,13 @@ XDebugInstalled=XDebug yüklüdür. XCacheInstalled=XDebug yüklüdür. AddRefInList=Display Customer/Supplier ref. info list (select list or combobox) and most of hyperlink.
    Third Parties will appear with a name format of "CC12345 - SC45678 - The Big Company corp." instead of "The Big Company corp". AddAdressInList=Display Customer/Supplier adress info list (select list or combobox)
    Third Parties will appear with a name format of "The Big Company corp. - 21 jump street 123456 Big town - USA" instead of "The Big Company corp". -AskForPreferredShippingMethod=Ask for preferred shipping method for Third Parties. +AskForPreferredShippingMethod=Üçüncü Partiler için tercih edilen gönderme yöntemini isteyin. FieldEdition=%s Alanının düzenlenmesi FillThisOnlyIfRequired=Örnek: +2 (saat dilimi farkını yalnız zaman farkı sorunları yaşıyorsanız kullanın) GetBarCode=Barkovizyon al ##### Module password generation PasswordGenerationStandard=Dolibarr iç algoritmasına göre bir şifre girin: 8 karakterli sayı ve küçük harf içeren. -PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. +PasswordGenerationNone=Oluşturulan bir parola önerme. Parola manuel olarak yazılmalıdır. PasswordGenerationPerso=Kişisel tanımlanmış yapılandırmanıza göre bir parola girin. SetupPerso=Yapılandırmanıza göre PasswordPatternDesc=Parola modeli açıklaması @@ -1216,7 +1216,7 @@ ModelModules=Belge Şablonları DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Taslak belge üzerinde filigran JSOnPaimentBill=Ödeme formunda ödeme satırlarını otomatik doldurma özelliğini etkinleştir -CompanyIdProfChecker=Rules for Professional IDs +CompanyIdProfChecker=Profesyonel Kimlikler için Kurallar MustBeUnique=Eşsiz olmalıdır? MustBeMandatory=Mandatory to create third parties (if vat number or type of company defined) ? MustBeInvoiceMandatory=Faturaları doğrulamak zorunludur ? @@ -1230,7 +1230,7 @@ WebCalUrlForVCalExport=%s biçimine göndermek için gerekli bağlantıy BillsSetup=Faturalar modülünün kurulumu BillsNumberingModule=Fatura ve iade faturaları numaralandırma modülü BillsPDFModules=Fatura belgesi modelleri -BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type +BillsPDFModulesAccordindToInvoiceType=Fatura türüne göre fatura döküman modelleri PaymentsPDFModules=Ödeme belge modelleri CreditNote=İade faturası CreditNotes=İade faturaları @@ -1441,12 +1441,12 @@ CacheByClient=Tarayıcı önbelleği CompressionOfResources=HTTP yanıtlarının sıkıştırılması CompressionOfResourcesDesc=For example using the Apache directive "AddOutputFilterByType DEFLATE" TestNotPossibleWithCurrentBrowsers=Böyle bir otomatik algılama mevcut tarayıcılar için olası değildir -DefaultValuesDesc=Here you can define/force the default value you want to have when you create a new record, and/or default filters or sort order when your list records. -DefaultCreateForm=Default values (to create on forms) +DefaultValuesDesc=Burada, yeni bir kayıt oluşturduğunuzda sahip olmak istediğiniz varsayılan değeri ve/veya kayıtlarınızı listelediğinizde varsayılan filtreleme veya sıralama düzenini tanımlayabilir/zorlayabilirsiniz. +DefaultCreateForm=Varsayılan değerler (formlarda oluşturmak için) DefaultSearchFilters=Varsayılan arama filtreleri DefaultSortOrder=Varsayılan sıralama düzenleri DefaultFocus=Varsayılan odak alanları -DefaultMandatory=Mandatory form fields +DefaultMandatory=Zorunlu form alanları ##### Products ##### ProductSetup=Ürünler modülü kurulumu ServiceSetup=Hizmetler modülü kurulumu @@ -1454,7 +1454,7 @@ ProductServiceSetup=Ürünler ve Hizmetler modüllerinin kurulumu NumberOfProductShowInSelect=Açılır seçim (combo) listelerindeki ençok ürün sayısı (0 = sınır yok) ViewProductDescInFormAbility=Display product descriptions in forms (otherwise as popup tooltip) MergePropalProductCard=Eğer ürün/hizmet teklifte varsa Ekli Dosyalar sekmesinde ürün/hizmet seçeneğini etkinleştirin, böylece ürün PDF belgesini PDF azur teklifine birleştirirsiniz -ViewProductDescInThirdpartyLanguageAbility=Display products descriptions in the language of the third party +ViewProductDescInThirdpartyLanguageAbility=Ürün açıklamalarını üçün partinin dilinde görüntüle UseSearchToSelectProductTooltip=Also if you have a large number of products (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectProduct=Wait until you press a key before loading content of product combo list (This may increase performance if you have a large number of products, but it is less convenient) SetDefaultBarcodeTypeProducts=Ürünler için kullanılacak varsayılan barkod türü @@ -1651,7 +1651,7 @@ ChequeReceiptsNumberingModule=Çek Makbuzu Numaralandırma modülü MultiCompanySetup=Çoklu şirket modülü kurulumu ##### Suppliers ##### SuppliersSetup=Tedarikçi modülü kurulumu -SuppliersCommandModel=Complete template of purchase order (logo...) +SuppliersCommandModel=Satınalma siparişinin tam şablonu (logo...) SuppliersInvoiceModel=Tedarikçi faturasının eksiksiz şablonu (logo...) SuppliersInvoiceNumberingModel=Tedarikçi faturaları numaralandırma modelleri IfSetToYesDontForgetPermission=Evet olarak ayarlıysa, ikinci onayı sağlayacak grup ve kullanıcılara izin sağlamayı unutmayın @@ -1711,7 +1711,7 @@ InstallModuleFromWebHasBeenDisabledByFile=Dış modülün uygulama içerisinden ConfFileMustContainCustom=Installing or building an external module from application need to save the module files into directory %s. To have this directory processed by Dolibarr, you must setup your conf/conf.php to add the 2 directive lines:
    $dolibarr_main_url_root_alt='/custom';
    $dolibarr_main_document_root_alt='%s/custom'; HighlightLinesOnMouseHover=Tablo satırlarını fare üzerine geldiğinde vurgula HighlightLinesColor=Fare üzerinden geçerken satır rengini vurgula (vurgulanmaması için boş bırakın) -HighlightLinesChecked=Highlight color of the line when it is checked (keep empty for no highlight) +HighlightLinesChecked=Bir satır işaretlendiğinde bu satırın rengini vurgula (vurgulanmaması için boş bırakın) TextTitleColor=Sayfa başlığının metin rengi LinkColor=Bağlantıların rengi PressF5AfterChangingThis=Bu değeri değiştirdikten sonra geçerli olabilmesi için klavyede CTRL+F5 tuşlarına basın veya tarayıcınızın önbelleğini temizleyin @@ -1749,7 +1749,7 @@ MailToSendOrder=Müşteri siparişleri MailToSendInvoice=Müşteri faturaları MailToSendShipment=Sevkiyatlar MailToSendIntervention=Müdahaleler -MailToSendSupplierRequestForQuotation=Quotation request +MailToSendSupplierRequestForQuotation=Teklif talebi MailToSendSupplierOrder=Satın alma siparişleri MailToSendSupplierInvoice=Tedarikçi faturaları MailToSendContract=Sözleşmeler @@ -1809,16 +1809,16 @@ EnterCalculationRuleIfPreviousFieldIsYes=Önceki alan Evet olarak ayarlanmışsa SeveralLangugeVariatFound=Birçok dil varyantı bulundu COMPANY_AQUARIUM_REMOVE_SPECIAL=Özel karakterleri kaldır COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) -GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) +GDPRContact=Veri Koruma Görevlisi (DPO, Veri Gizliliği veya GDPR kişisi) GDPRContactDesc=If you store data about European companies/citizen, you can store the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Araç ipucunda gösterilecek yardım metni HelpOnTooltipDesc=Put text or a translation key here for the text to show on a tooltip when this field appears in a form YouCanDeleteFileOnServerWith=You can delete this file on server with Command Line:
    %s ChartLoaded=Chart of account loaded SocialNetworkSetup=Sosyal Ağlar modülünün kurulumu -EnableFeatureFor=Enable features for %s +EnableFeatureFor=%s için özellikleri etkinleştir VATIsUsedIsOff=Note: The option to use sales Tax or VAT has been set to Off in the menu %s - %s, so Sale tax or Vat used will always be 0 for sales. -SwapSenderAndRecipientOnPDF=Swap sender and recipient address on PDF +SwapSenderAndRecipientOnPDF=PDF üzerindeki gönderen ve alıcı adreslerinin yerini birbiriyle değiştir FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields only EmailCollector=Email collector EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some record automatically (like leads). @@ -1827,9 +1827,9 @@ EMailHost=Host of email IMAP server MailboxSourceDirectory=Mailbox source directory MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector -CollectNow=Collect now +CollectNow=Şimdi topla DateLastResult=Date last collect -LastResult=Last result +LastResult=Son sonuç EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run the collect for this collector now ? NoNewEmailToProcess=No new email (matching filters) to process @@ -1841,8 +1841,8 @@ CodeLastResult=Result code of last collect NbOfEmailsInInbox=Number of email in source directory LoadThirdPartyFromName=Load thirdparty from name (load only) LoadThirdPartyFromNameOrCreate=Load thirdparty from name (create if not found) -WithDolTrackingID=Dolibarr Tracking ID found -WithoutDolTrackingID=Dolibarr Tracking ID not found +WithDolTrackingID=Dolibarr İzleme Kimliği bulundu +WithoutDolTrackingID=Dolibarr İzleme Kimliği bulunamadı FormatZip=Posta Kodu ##### Resource #### ResourceSetup=Configuration du module Resource diff --git a/htdocs/langs/tr_TR/agenda.lang b/htdocs/langs/tr_TR/agenda.lang index bd59b25eac7..81d4c4bd2ee 100644 --- a/htdocs/langs/tr_TR/agenda.lang +++ b/htdocs/langs/tr_TR/agenda.lang @@ -12,7 +12,7 @@ Event=Etkinlik Events=Etkinlikler EventsNb=Etkinlik sayısı ListOfActions=Etkinlik listesi -EventReports=Event reports +EventReports=Etkinlik raporları Location=Konum ToUserOfGroup=Gruptaki herhangi bir kullanıcı için EventOnFullDay=Tam gün etkinliği @@ -31,14 +31,15 @@ ViewWeek=Hafta görünümü ViewPerUser=Kullanıcı görünümü başına ViewPerType=Görünüm türüne göre AutoActions= Gündemin otomatik doldurulması -AgendaAutoActionDesc= Burada Dolibarr'ın gündemde bir etkinlik olarak otomatikman oluşturacağı etkinlikleri tanımlayın. Hiçbir şey işaretli değilse, bağlanılan ve görünür olan gündeme yalnızca manuel eylemler dahil olacaktır. Nesneler üzerinde yapılan iş eylemlerinin (doğrulama, durum değişikliği) otomatik izlemeleri kaydedilmeyecektir. -AgendaSetupOtherDesc= Bu sayfa Dolibarr etkinliklerinin dış bir takvime aktarılması için seçenekler sağlar. (thunderbird, google calendar, ...) +AgendaAutoActionDesc= Here you can define events which you want Dolibarr to create automatically in Agenda. If nothing is checked, only manual actions will be included in logs and displayed in Agenda. Automatic tracking of business actions done on objects (validation, status change) will not be saved. +AgendaSetupOtherDesc= This page provides options to allow exports of your Dolibarr events into an external calendar (thunderbird, google calendar, ...) AgendaExtSitesDesc=Bu sayfa takvimlerin dış kaynaklarında Dolibarr gündemindeki etkinliklerinin görünmesini sağlar. ActionsEvents=Dolibarr'ın otomatik olarak gündemde bir etkinlik oluşturacağı eylemler -EventRemindersByEmailNotEnabled=Event reminders by email was not enabled into Agenda module setup. +EventRemindersByEmailNotEnabled=Event reminders by email was not enabled into %s module setup. ##### Agenda event labels ##### NewCompanyToDolibarr=Üçüncü parti %s oluşturuldu ContractValidatedInDolibarr=Doğrulanan firma %s +CONTRACT_DELETEInDolibarr=Sözleşme %s silindi PropalClosedSignedInDolibarr=İmzalan teklif %s PropalClosedRefusedInDolibarr=Reddedilen teklif %s PropalValidatedInDolibarr=%s Teklifi doğrulandı @@ -84,13 +85,13 @@ PRODUCT_CREATEInDolibarr=Ürün %s oluşturuldu PRODUCT_MODIFYInDolibarr=Ürün %s değiştirildi PRODUCT_DELETEInDolibarr=Ürün %s silindi EXPENSE_REPORT_CREATEInDolibarr=Expense report %s created -EXPENSE_REPORT_VALIDATEInDolibarr=Expense report %s validated +EXPENSE_REPORT_VALIDATEInDolibarr=Gider raporu %s doğrulandı EXPENSE_REPORT_APPROVEInDolibarr=Expense report %s approved EXPENSE_REPORT_DELETEInDolibarr=Expense report %s deleted -EXPENSE_REPORT_REFUSEDInDolibarr=Expense report %s refused +EXPENSE_REPORT_REFUSEDInDolibarr=Gider raporu %s reddedildi PROJECT_CREATEInDolibarr=%s projesi oluşturuldu -PROJECT_MODIFYInDolibarr=Project %s modified -PROJECT_DELETEInDolibarr=Project %s deleted +PROJECT_MODIFYInDolibarr=Proje %s değiştirildi +PROJECT_DELETEInDolibarr=Proje %s silindi ##### End agenda events ##### AgendaModelModule=Etkinlik için belge şablonları DateActionStart=Başlama tarihi @@ -100,7 +101,7 @@ AgendaUrlOptions3=kullanıcı girişi=%s, bir %s kullanıcısına AgendaUrlOptionsNotAdmin=Çıktıyı %s kullanıcısına ait olmayan etkinliklere sınırlamak için logina=!%s. AgendaUrlOptions4=Çıktıyı %s kullanıcısına (sahip ve diğerleri) atanmış etkinliklere sınırlamak için logint=%s. AgendaUrlOptionsProject=project=__PROJECT_ID__ to restrict output to actions linked to project __PROJECT_ID__. -AgendaUrlOptionsNotAutoEvent=notactiontype=systemauto to exclude automatic event. +AgendaUrlOptionsNotAutoEvent=notactiontype=systemauto to exclude automatic events. AgendaShowBirthdayEvents=Kişilerin doğum günlerini göster AgendaHideBirthdayEvents=Kişilerin doğum günlerini gizle Busy=Meşgul @@ -110,9 +111,9 @@ DefaultWorkingHours=Varsayılan günlük çalışma saatleri (Örnek: 9-18) # External Sites ical ExportCal=Takvim dışaaktar ExtSites=Dış takvimleri içeaktar -ExtSitesEnableThisTool=Gündemde dış takvimleri (genel ayarlarda tanımlanan) göster. Kullanıcılar tarafından tanımlanan dış takvimleri etkilemez. +ExtSitesEnableThisTool=Show external calendars (defined in global setup) in Agenda. Does not affect external calendars defined by users. ExtSitesNbOfAgenda=Takvimlerin sayısı -AgendaExtNb=Calendar no. %s +AgendaExtNb=Takvim no. %s ExtSiteUrlAgenda=.ical dosyasına erişmek için URL ExtSiteNoLabel=Tanımlama yok VisibleTimeRange=Görünür zaman aralığı diff --git a/htdocs/langs/tr_TR/banks.lang b/htdocs/langs/tr_TR/banks.lang index bf423937015..4b83891c4a7 100644 --- a/htdocs/langs/tr_TR/banks.lang +++ b/htdocs/langs/tr_TR/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Çeşitli ödemeler ekle SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/tr_TR/bills.lang b/htdocs/langs/tr_TR/bills.lang index 8e84ea549ec..ab484eed728 100644 --- a/htdocs/langs/tr_TR/bills.lang +++ b/htdocs/langs/tr_TR/bills.lang @@ -262,9 +262,9 @@ Repeatables=Şablonlar ChangeIntoRepeatableInvoice=Fatura şablonuna dönüştür CreateRepeatableInvoice=Fatura şablonu oluştur CreateFromRepeatableInvoice=Fatura şablonundan oluştur -CustomersInvoicesAndInvoiceLines=Customer invoices and invoice details +CustomersInvoicesAndInvoiceLines=Müşteri faturaları ve fatura detayları CustomersInvoicesAndPayments=Müşteri faturaları ve ödemeleri -ExportDataset_invoice_1=Customer invoices and invoice details +ExportDataset_invoice_1=Müşteri faturaları ve fatura detayları ExportDataset_invoice_2=Müşteri faturaları ve ödemeleri ProformaBill=Proforma Fatura: Reduction=Kesinti @@ -470,7 +470,7 @@ ShowUnpaidAll=Tüm ödenmemiş faturaları göster ShowUnpaidLateOnly=Ödenmemiş bütün faturaları göster PaymentInvoiceRef=Fatura %s ödemesi ValidateInvoice=Fatura doğrula -ValidateInvoices=Validate invoices +ValidateInvoices=Faturaları doğrula Cash=Nakit Reported=Gecikmiş DisabledBecausePayments=Bazı ödemeler olduğundan dolayı mümkün değil @@ -538,7 +538,7 @@ ToCreateARecurringInvoice=Bu sözleşme için yinelenen fattura oluşturmak içi ToCreateARecurringInvoiceGene=Gelecekteki faturaları düzenli ve manuel olarak oluşturmak için yalnızca %s - %s - %s menüsüne gidin. ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module %s. Note that both method (manual and automatic) can be used together with no risk of duplication. DeleteRepeatableInvoice=Fatura şablonunu sil -ConfirmDeleteRepeatableInvoice=Are your sure you want to delete the template invoice? +ConfirmDeleteRepeatableInvoice=Şablon faturasını silmek istediğinizden emin misiniz? CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per order) BillCreated=%s bill(s) created StatusOfGeneratedDocuments=Status of document generation diff --git a/htdocs/langs/tr_TR/companies.lang b/htdocs/langs/tr_TR/companies.lang index ac09214a547..b0fcac05eb0 100644 --- a/htdocs/langs/tr_TR/companies.lang +++ b/htdocs/langs/tr_TR/companies.lang @@ -77,11 +77,11 @@ Web=Web Poste= Durumu DefaultLang=Language default VATIsUsed=KDV kullanılır -VATIsUsedWhenSelling=This defines if this third party includes a sale tax or not when it makes an invoice to its own customers +VATIsUsedWhenSelling=Üçüncü partinin kendi müşterilerine fatura keserken satış vergisi kullanıp kullanmadığını burada tanımlayabilirsiniz. VATIsNotUsed=KDV kullanılmaz CopyAddressFromSoc=Adresi üçüncü parti adresiyle doldurun -ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor vendor, no available referring objects -ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor supplier, discounts are not available +ThirdpartyNotCustomerNotSupplierSoNoRef=Üçüncü parti ne müşteri ne de tedarikçidir, mevcut referans nesneler yok +ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Üçüncü parti ne müşteri ne de tedarikçidir, indirimler mevcut değil PaymentBankAccount=Ödeme banka hesabı OverAllProposals=Teklifler OverAllOrders=Siparişler @@ -342,10 +342,10 @@ ThisUserIsNot=Bu kullanıcı bir aday, müşteri veya tedarikçi değildir VATIntraCheck=Denetle VATIntraCheckDesc=The link %s uses the European VAT checker service (VIES). An external internet access from server is required for this service to work. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do -VATIntraCheckableOnEUSite=Check intra-Community VAT on the European Commission website -VATIntraManualCheck=You can also check manually on the European Commission website %s +VATIntraCheckableOnEUSite=Avrupa Komisyonu web sitesinden topluluk içi KDV'yi kontrol edin +VATIntraManualCheck=Avrupa Komisyonu'nun %s web adresinden de manuel olarak kontrol edebilirsiniz ErrorVATCheckMS_UNAVAILABLE=Denetlemiyor. Denetim hizmeti üye ülke (%s) tarafından sağlanmıyor. -NorProspectNorCustomer=Not prospect, or customer +NorProspectNorCustomer=Ne aday ne de müşteri JuridicalStatus=Tüzel Kişilik Türü Staff=Kadro ProspectLevelShort=Potansiyel @@ -392,7 +392,7 @@ ExportDataset_company_2=Kişiler ve özellikleri ImportDataset_company_1=Üçüncü Partiler (şirketler/dernekler/şahıslar) ve özellikleri ImportDataset_company_2=Kişiler/Adresler ve özellikleri ImportDataset_company_3=Üçüncü Partilerin Banka hesapları -ImportDataset_company_4=Third Parties - sales representatives (assign sales representatives/users to companies) +ImportDataset_company_4=Üçüncü Partiler- satış temsilcileri (şirketlere satış temsileri/kullanıcılar atayın) PriceLevel=Fiyat düzeyi DeliveryAddress=Teslimat adresi AddAddress=Adres ekle @@ -404,7 +404,7 @@ AllocateCommercial=Satış temsilcisine atanmış Organization=Kuruluş FiscalYearInformation=Mali Yıl FiscalMonthStart=Mali yılın başlangıç ayı -YouMustAssignUserMailFirst=You must create an email for this user prior to being able to add an email notification. +YouMustAssignUserMailFirst=Bir e-posta bildirimi ekleyebilmek için öncelikle bu kullanıcıya bir e-posta oluşturmanız gerekir. YouMustCreateContactFirst=Eposta bildirimleri ekleyebilmek için önce geçerli epostası olan üçüncü taraf kişisi oluşturmanız gerekir. ListSuppliersShort=Tedarikçi Listesi ListProspectsShort=Aday Listesi @@ -419,16 +419,16 @@ ProductsIntoElements=%s içindeki ürünler/hizmetler listesi CurrentOutstandingBill=Geçerli bekleyen fatura OutstandingBill=Ödenmemiş fatura için ençok tutar OutstandingBillReached=Ödenmemiş fatura için ulaşılan ençok tutar -OrderMinAmount=Minimum amount for order +OrderMinAmount=Sipariş için minimum miktar MonkeyNumRefModelDesc=Return a number with the format %syymm-nnnn for the customer code and %syymm-nnnn for the vendor code where yy is year, mm is month and nnnn is a sequence with no break and no return to 0. LeopardNumRefModelDesc=Müşteri/tedarikçi kodu serbesttir. Bu kod herhangi bir zamanda değiştirilebilir. ManagingDirectors=Yönetici(lerin) adı (CEO, müdür, başkan...) MergeOriginThirdparty=Çifte üçüncü parti (silmek istediğiniz üçüncü parti) MergeThirdparties=Üçüncü partileri birleştir -ConfirmMergeThirdparties=Are you sure you want to merge this third party into the current one? All linked objects (invoices, orders, ...) will be moved to current third party, then the third party will be deleted. -ThirdpartiesMergeSuccess=Third parties have been merged +ConfirmMergeThirdparties=Bu üçüncü partiyi mevcut olanla birleştirmek istediğinizden emin misiniz? Tüm bağlantılı nesneler (teklifler, siparişler ...) mevcut üçüncü partiye taşınacak ve daha sonra taşınan üçüncü parti silinecektir. +ThirdpartiesMergeSuccess=Üçüncü partiler birleştirildi SaleRepresentativeLogin=Satış temsilcisinin kullanıcı adı SaleRepresentativeFirstname=Satış temsilcisinin adı SaleRepresentativeLastname=Satış temsilcisinin soyadı -ErrorThirdpartiesMerge=There was an error when deleting the third parties. Please check the log. Changes have been reverted. -NewCustomerSupplierCodeProposed=Customer or vendor code already used, a new code is suggested +ErrorThirdpartiesMerge=Üçüncü partiler silinirken bir hata oluştu. Lütfen günlüğü denetleyin. Değişiklikler geri alındı. +NewCustomerSupplierCodeProposed=Müşteri veya tedarikçi kodu zaten daha önce kullanılmış, yeni bir kod önerilir diff --git a/htdocs/langs/tr_TR/compta.lang b/htdocs/langs/tr_TR/compta.lang index a51822148ab..1c350d4b104 100644 --- a/htdocs/langs/tr_TR/compta.lang +++ b/htdocs/langs/tr_TR/compta.lang @@ -78,7 +78,7 @@ MenuNewSocialContribution=Yeni sosyal/mali NewSocialContribution=Yeni sosyal/mali vergi AddSocialContribution=Sosyal/mali vergi ekle ContributionsToPay=Ödenecek sosyal/mali vergiler -AccountancyTreasuryArea=Billing and payment area +AccountancyTreasuryArea=Faturalama ve ödeme alanı NewPayment=Yeni ödeme Payments=Ödemeler PaymentCustomerInvoice=Müşteri fatura ödemesi @@ -112,7 +112,7 @@ SocialContributionsPayments=Sosyal/mali vergi ödemeleri ShowVatPayment=KDV ödemesi göster TotalToPay=Ödenecek toplam BalanceVisibilityDependsOnSortAndFilters=Balance is visible in this list only if table is sorted ascending on %s and filtered for 1 bank account -CustomerAccountancyCode=Customer accounting code +CustomerAccountancyCode=Müşteri muhasebe kodu SupplierAccountancyCode=Tedarikçi muhasebe kodu CustomerAccountancyCodeShort=Müşt. hesap kodu SupplierAccountancyCodeShort=Ted. hesap kodu @@ -246,7 +246,7 @@ ImportDataset_tax_contrib=Sosyal/mali vergiler ImportDataset_tax_vat=Vat payments ErrorBankAccountNotFound=Hata: Banka hesabı bulunamadı FiscalPeriod=Muhasebe dönemi -ListSocialContributionAssociatedProject=List of social contributions associated with the project +ListSocialContributionAssociatedProject=Projeyle ilişkili sosyal katkıların listesi DeleteFromCat=Remove from accounting group AccountingAffectation=Accounting assignment LastDayTaxIsRelatedTo=Last day of period the tax is related to diff --git a/htdocs/langs/tr_TR/dict.lang b/htdocs/langs/tr_TR/dict.lang index 36278d50806..ca763352a51 100644 --- a/htdocs/langs/tr_TR/dict.lang +++ b/htdocs/langs/tr_TR/dict.lang @@ -330,7 +330,7 @@ PaperFormatCAP6=Biçim P6 Kanada #### Expense report categories #### ExpAutoCat=Araba ExpCycloCat=Moped -ExpMotoCat=Motorbike +ExpMotoCat=Motosiklet ExpAuto3CV=3 CV ExpAuto4CV=4 CV ExpAuto5CV=5 CV diff --git a/htdocs/langs/tr_TR/ecm.lang b/htdocs/langs/tr_TR/ecm.lang index 73bee79b9b3..a314155e5f2 100644 --- a/htdocs/langs/tr_TR/ecm.lang +++ b/htdocs/langs/tr_TR/ecm.lang @@ -14,7 +14,7 @@ ECMNbOfFilesInDir=Dizindeki dosya sayısı ECMNbOfSubDir=Alt-dizin sayısı ECMNbOfFilesInSubDir=Alt dizilerdeki dosya sayısı ECMCreationUser=Oluşturan -ECMArea=DMS/ECM area +ECMArea=DMS/ECM alanı ECMAreaDesc=The DMS/ECM (Document Management System / Electronic Content Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. ECMAreaDesc2=* Otomatik dizinler, bir öğenin kartından belge eklenirken otomatikman doldurulur.
    * Manuel dizinler, belirli bir öğeye bağlı olmayan belgelerin saklanması için kullanılabilir. ECMSectionWasRemoved=%sDizini silindi. diff --git a/htdocs/langs/tr_TR/exports.lang b/htdocs/langs/tr_TR/exports.lang index 57ae7492ed3..f7f8e8717bd 100644 --- a/htdocs/langs/tr_TR/exports.lang +++ b/htdocs/langs/tr_TR/exports.lang @@ -1,39 +1,39 @@ # Dolibarr language file - Source file is en_US - exports -ExportsArea=Dışaaktarım alanı -ImportArea=İçeaktarım alanı -NewExport=Yeni dışaaktarım -NewImport=Yeni içeaktarım +ExportsArea=Dışaaktarımlar +ImportArea=Import +NewExport=Yeni Dışa Aktarma +NewImport=Yeni İçe Aktarma ExportableDatas=Dışaaktarılabilir veri kümesi ImportableDatas=İçeaktarılabilir veri kümesi SelectExportDataSet=Dışaaktarmak istediğiniz veri kümesini seçin... SelectImportDataSet=İçeaktarmak istediğiniz veri kümesini seçin... -SelectExportFields=Dışaaktarmak istediğiniz dosyaları ya da önceden tanımlanmış bir verme profilini seçin -SelectImportFields=İçeaktarmak istediğiniz kaynak dosyayı ve hedef alanlarını veritabanında aşağı yukarı taşıyarak %s çapası ile seçin ya da önceden tanımlanmış bir içeaktarma profili seçin: +SelectExportFields=Choose the fields you want to export, or select a predefined export profile +SelectImportFields=Choose the source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile: NotImportedFields=Kaynak dosyadaki alanlar içeaktarılamadı -SaveExportModel=Yeniden kullanmak için bu dışaaktarma profilini kaydedebilirsiniz... -SaveImportModel=Yeniden kullanmak için bu içeaktarma profilini kaydedebilirsiniz... +SaveExportModel=Save your selections as an export profile/template (for reuse). +SaveImportModel=Save this import profile (for reuse) ... ExportModelName=Dışaaktarma profili adı -ExportModelSaved=İçeaktarma profili %s adıyla kaydedildi. +ExportModelSaved=Export profile saved as %s. ExportableFields=Dışaaktarılabilir alanlar ExportedFields=Dışaaktarılan alanlar ImportModelName=İçeaktarma profili adı -ImportModelSaved=İçeaktarma profili %s adıyla kaydedildi. +ImportModelSaved=Import profile saved as %s. DatasetToExport=Dışaaktarılacak veri kümesi DatasetToImport=Veri kümesine içeaktarılacak dosya ChooseFieldsOrdersAndTitle=Alan sırasını seçin... FieldsTitle=Alanların başlığı FieldTitle=Alan başlğı -NowClickToGenerateToBuildExportFile=Şimdi, açılan kutudan dosya biçimini seçin ve dışaaktarılacak dosyayı oluşturmak için "Oluştur" düğmesine tıklayın... -AvailableFormats=Kullanılabilecek biçimler +NowClickToGenerateToBuildExportFile=Now, select the file format in the combo box and click on "Generate" to build the export file... +AvailableFormats=Mevcut Formatlar LibraryShort=Kitaplık Step=Adım -FormatedImport=İçeaktarma yardımcısı -FormatedImportDesc1=Buradan, yeterli teknik bilginiz olmasa da, yardımcıyı kullanarak, istediğiniz verileri alabilirsiniz. -FormatedImportDesc2=İlk adımda, yüklemek istediğiniz veriyi seçerek dosyayı yükleyin ve yüklemek istediğiniz alanları seçin. -FormatedExport=Dışaaktarma yardımcısı -FormatedExportDesc1=Buradan, yeterli teknik bilginiz olmasa da, yardımcıyı kullanarak, istediğiniz verileri dışaaktarabilirsiniz. -FormatedExportDesc2=İlk adım önceden tanımlanmış bir veri kümesi seçerek, sonuç dosyalarınızda görmek istediğiniz alanları ve sıralarını seçmektir. -FormatedExportDesc3=Dışaaktarılacak veri seçildiğinde, dışaaktarmak istediğiniz dosya biçimini tanımlayabilirsiniz. +FormatedImport=İçe Aktarma Yardımcısı +FormatedImportDesc1=This module allows you to update existing data or add new objects into the database from a file without technical knowledge, using an assistant. +FormatedImportDesc2=First step is to choose the kind of data you want to import, then the format of the source file, then the fields you want to import. +FormatedExport=Dışa Aktarma Yardımcısı +FormatedExportDesc1=These tools allow the export of personalized data using an assistant, to help you in the process without requiring technical knowledge. +FormatedExportDesc2=First step is to choose a predefined dataset, then which fields you want to export, and in which order. +FormatedExportDesc3=When data to export are selected, you can choose the format of the output file. Sheet=Sayfa NoImportableData=İçeaktarılacak veri yok (veri içeaktarmaya izin veren tanımlara sahip bir modül yok) FileSuccessfullyBuilt=Dosya oluşturuldu @@ -50,10 +50,10 @@ LineTotalVAT=Satırın KDV tutarı TypeOfLineServiceOrProduct=Satır türü (0 = ürün, 1 = hizmet) FileWithDataToImport=İçeaktarılacak verileri içeren dosya FileToImport=İçeaktarılacak kaynak dosya -FileMustHaveOneOfFollowingFormat=İçeaktarılacak dosya aşağıdaki biçimlerden birinde olmalıdır -DownloadEmptyExample=Örnek boş kaynak dosyasını indirin -ChooseFormatOfFileToImport=%s görseline tıklayarak içeaktarılacak dosya biçimi olarak kullanılacak dosya biçimini seçin... -ChooseFileToImport=Dosyayı yükledikten sonra %s görseline tıklayarak içeaktarılacak dosya biçimi olarak kullanılacak dosya biçimini seçin... +FileMustHaveOneOfFollowingFormat=File to import must have one of following formats +DownloadEmptyExample=Şablon dosyasını alan içeriği bilgisiyle indir (* olanlar zorunlu alanlardır) +ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it... +ChooseFileToImport=Upload file then click on the %s icon to select file as source import file... SourceFileFormat=Kaynak dosya biçimi FieldsInSourceFile=Kaynak dosyadaki alanlar FieldsInTargetDatabase=Dolibarr veritabanındaki hedef alanlar (koyu=zorunlu) @@ -68,52 +68,52 @@ FieldsTarget=Hedeflenen alanlar FieldTarget=Hedeflenen alan FieldSource=Kaynak alan NbOfSourceLines=Kaynak dosyadaki satır sayısı -NowClickToTestTheImport=Seçtiğiniz içeaktarma ayarlarını denetleyin. Doğru görünüyorsa, alma denemesini başlatmak için "%s" düğmesine tıklayın (veritabanınızda hiçbir veri değiştirilmeden işlemin provası yapılır)… -RunSimulateImportFile=İçeaktarma denemesini başlat +NowClickToTestTheImport=Check the import setup you defined (check if you must omit the header lines, or these will be flagged as errors in the following simulation).
    Click on the "%s" button to run a check of the file structure/contents and simulate the import process.
    No data will be changed in your database. +RunSimulateImportFile=Run Import Simulation FieldNeedSource=Bu alanlar kaynak dosyadan bir veri gerektirir SomeMandatoryFieldHaveNoSource=Veri dosyasında, bazı zorunlu alanların kaynağı yok InformationOnSourceFile=Kaynak dosya bilgileri InformationOnTargetTables=Hedef alan bilgileri SelectAtLeastOneField=En az bir kaynak alanı dışaaktarılacak alanlar bölümüne koyun SelectFormat=Bu içeaktarma dosya biçimini seçin -RunImportFile=Dosya içeaktarmayı başlatın -NowClickToRunTheImport=İçeaktarma denemesi sonucunu denetleyin. Herşey yolundaysa, kesin içeaktarmayı başlatın. -DataLoadedWithId=Bütün veriler bu içeaktarma id'i ile yüklenecektir: %s -ErrorMissingMandatoryValue=Kaynak dosyada alan için zorunlu veri boş %s. -TooMuchErrors=Kaynak dosyasında, liste sınırlandığından görüntülenmeyen %s hatalı satır daha var. -TooMuchWarnings=Kaynak dosyasında, liste sınırlandığından görüntülenmeyen %s uyarı içeren satır daha var. +RunImportFile=Import Data +NowClickToRunTheImport=Check the results of the import simulation. Correct any errors and re-test.
    When the simulation reports no errors you may proceed to import the data into the database. +DataLoadedWithId=All data will be loaded with the following import id: %s to enable a search on this set of data in case of discovering problems in the future. +ErrorMissingMandatoryValue=Mandatory data is empty in the source file for field %s. +TooMuchErrors=There are still %s other source lines with errors but output has been limited. +TooMuchWarnings=There are still %s other source lines with warnings but output has been limited. EmptyLine=Boş satır (atlanacak) -CorrectErrorBeforeRunningImport=Kesin alma işleminden önce tüm hataları düzeltmelisiniz. +CorrectErrorBeforeRunningImport=You must correct all errors before running the definitive import. FileWasImported=Dosya %s sayısı ile alındı. -YouCanUseImportIdToFindRecord=Veritabanınızı import_key='%s' alanında süzerseniz alınmış tüm kayıtları bulabilirsiniz. +YouCanUseImportIdToFindRecord=You can find all the imported records in your database by filtering on field import_key='%s'. NbOfLinesOK=Hatasız ve uyarı içermeyen satır sayısı:%s. NbOfLinesImported=Sorunsuz içeaktarılan satır sayısı:%s. DataComeFromNoWhere=Eklenecek değer kaynak dosyada hiç bir yerden gelmiyor. DataComeFromFileFieldNb=Eklenecek değer kaynak dosyada %s numaralı alandan geliyor. -DataComeFromIdFoundFromRef=Kaynak dosyanın %s numaralı alanından gelen değer, üst nesne kodunun bulunması için kullanılacak (yani kaynak dosyadaki ilgili %s nesnesi önceden Dolibarr içinde bulunmalıdır). -DataComeFromIdFoundFromCodeId=Kaynak dosyanın %s alan numarasından gelen kod, ana öğenin id'inin bulunmasında kullanılacaktır (Yani kaynak dosyadan gelen kod %s sözlüğü içinde mutlaka bulunmalıdır). Id'i biliyorsanız, ayrıca kod yerine kaynak dosyası içinde onu kullanabileceğinizi unutmayın. İçeaktarımın her iki durumda da çalışması gerekir. +DataComeFromIdFoundFromRef=Value that comes from field number %s of source file will be used to find the id of the parent object to use (so the object %s that has the ref. from source file must exist in the database). +DataComeFromIdFoundFromCodeId=Code that comes from field number %s of source file will be used to find the id of the parent object to use (so the code from source file must exist in the dictionary %s). Note that if you know the id, you can also use it in the source file instead of the code. Import should work in both cases. DataIsInsertedInto=Kaynak dosyadan gelen veri şu alana eklenecek: -DataIDSourceIsInsertedInto=Kaynak dosyadaki, veriyi kullanan üst nesne kodu, şu alana eklenecek: +DataIDSourceIsInsertedInto=The id of parent object was found using the data in the source file, will be inserted into the following field: DataCodeIDSourceIsInsertedInto=Koddan bulunan üst satır kodu , şu alana eklenecek: SourceRequired=Veri değeri zorunludur SourceExample=Olası veri değeri örneği ExampleAnyRefFoundIntoElement=%s bileşeni için bulunan ilgi ExampleAnyCodeOrIdFoundIntoDictionary=%s sözlüğünde bulunan herhangi bir kod (veya kimlik) -CSVFormatDesc=Virgülle Ayrılmış Değer dosya biçimi (.csv).
    Alanların birbirinden ayıraç ile ayrıldığı bir metin dosyası biçimi [ %s ]. Bir alan içeriğinde ayıraç bulunursa, yuvarlatma karakteri ile alan yuvarlanır [ %s ]. Yuvarlatma karakterinden çıkmak için Escape karakteri kullanılır [%s]. -Excel95FormatDesc=Excel dosya biçimi (.xls)
    Doğal Excel 95 biçimi (BIFF5). -Excel2007FormatDesc=Excel dosya biçimi (.xlsx)
    Doğal Excel 2007 biçimi (ÇalışmasayfasıML). +CSVFormatDesc=Comma Separated Value file format (.csv).
    This is a text file format where fields are separated by a separator [ %s ]. If separator is found inside a field content, field is rounded by round character [ %s ]. Escape character to escape round character is [ %s ]. +Excel95FormatDesc=Excel file format (.xls)
    This is the native Excel 95 format (BIFF5). +Excel2007FormatDesc=Excel file format (.xlsx)
    This is the native Excel 2007 format (SpreadsheetML). TsvFormatDesc=Sekmeyle Ayrılmış Değer dosya biçimi (.tsv)
    Alanların sekme karakteri ile ayrıldığı metin dosyası biçimi [tab]. ExportFieldAutomaticallyAdded=%s alanı kendiliğinden eklenmiştir. Benzer satırların çift kayıt olarak değerlendirilmesini önler (eklenen bu alan sayesinde, tüm alanlar kendi kodlarını alarak birbirinden farklı olur). -CsvOptions=CSV Ayarları -Separator=Ayıraç -Enclosure=Ek +CsvOptions=CSV format seçenekleri +Separator=Alan Ayırıcı +Enclosure=String Delimiter SpecialCode=Özel kod ExportStringFilter=%% metinde bir ya da fazla karakterin değiştirilmesine izin verir ExportDateFilter=YYYY, YYYYMM, YYYYMMDD : bir yıılık yıl/ay/gün süzgeçi
    YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD : yıllar arası yıllar/aylar/günler süzgeçi
    > YYYY, > YYYYMM, > YYYYMMDD : izleyen tüm yıllar için yıılar/aylar/günler süzgeçi
    < YYYY, < YYYYMM, < YYYYMMDD : bütün önceki yıllar/aylar/günler süzgeçi ExportNumericFilter=Tek bir değere göre NNNNN filtreler
    Bir dizi değer üzerinden NNNNN+NNNNN filtreler
    Daha düşük değerlere göre < NNNNN filtreler
    Daha düşük değerlere göre > NNNNN filtreler ImportFromLine=İçeaktarımın başladığı satır numarası EndAtLineNb=Satır numarası sonu -ImportFromToLine=Satır numaralarını içe aktar (buradan - buraya) +ImportFromToLine=Limit range (from - to) eg. to omit header line SetThisValueTo2ToExcludeFirstLine=Örneğin, İlk 2 satırı dışarıda tutmak için bu değeri 3 e ayarlayın KeepEmptyToGoToEndOfFile=Dosya sonuna gitmek için bu alanı boş bırakın SelectPrimaryColumnsForUpdateAttempt=Güncelleme girişimi için birincil anahtar olarak kullanmak üzere sütun(lar) seçin @@ -127,7 +127,7 @@ FilteredFields=Süzülmüş alanlar FilteredFieldsValues=Süzgeç değeri FormatControlRule=Biçim denetimi kuralı ## imports updates -KeysToUseForUpdates=Verileri güncellemek için kullanılacak anahtar +KeysToUseForUpdates=Key (column) to use for updating existing data NbInsert=Eklenen satır sayısı: %s NbUpdate=Güncellenmiş satır sayısı: %s MultipleRecordFoundWithTheseFilters=Bu filtrelerle birden çok kayıt bulundu: %s diff --git a/htdocs/langs/tr_TR/holiday.lang b/htdocs/langs/tr_TR/holiday.lang index 769b34aaeff..4d3beabd170 100644 --- a/htdocs/langs/tr_TR/holiday.lang +++ b/htdocs/langs/tr_TR/holiday.lang @@ -94,7 +94,7 @@ EmployeeFirstname=Çalışanın ilk adı TypeWasDisabledOrRemoved=Ayrılma türü (id %s) devre dışı bırakıldı veya kaldırıldı LastHolidays=Latest %s leave requests AllHolidays=All leave requests -HalfDay=Half day +HalfDay=Yarım gün NotTheAssignedApprover=You are not the assigned approver LEAVE_PAID=Paid vacation LEAVE_SICK=Sick leave @@ -125,5 +125,5 @@ GoIntoDictionaryHolidayTypes=Go into Home - Setup - Dictionaries - Type HolidaySetup=Setup of module Holiday HolidaysNumberingModules=Leave requests numbering models TemplatePDFHolidays=Template for leave requests PDF -FreeLegalTextOnHolidays=Free text on PDF +FreeLegalTextOnHolidays=PDF'deki serbest metin WatermarkOnDraftHolidayCards=Watermarks on draft leave requests diff --git a/htdocs/langs/tr_TR/install.lang b/htdocs/langs/tr_TR/install.lang index e030fc086da..9908ba51f14 100644 --- a/htdocs/langs/tr_TR/install.lang +++ b/htdocs/langs/tr_TR/install.lang @@ -208,5 +208,5 @@ HideNotAvailableOptions=Hide unavailable options ErrorFoundDuringMigration=Error(s) were reported during the migration process so next step is not available. To ignore errors, you can click here, but the application or some features may not work correctly until the errors are resolved. YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (directory renamed with .lock suffix).
    YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file install.lock in the dolibarr documents directory).
    -ClickHereToGoToApp=Click here to go to your application +ClickHereToGoToApp=Uygulamanıza gitmek için buraya tıklayın ClickOnLinkOrRemoveManualy=Click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. diff --git a/htdocs/langs/tr_TR/mails.lang b/htdocs/langs/tr_TR/mails.lang index 5468d2ff391..f55c087a830 100644 --- a/htdocs/langs/tr_TR/mails.lang +++ b/htdocs/langs/tr_TR/mails.lang @@ -45,10 +45,10 @@ MailingStatusReadAndUnsubscribe=Oku ve aboneliği kaldır ErrorMailRecipientIsEmpty=Eposta alıcısı boş WarningNoEMailsAdded=Alıcının listesine ekli yeni Eposta yok. ConfirmValidMailing=Bu e-postayı doğrulamak istediğinizden emin misiniz? -ConfirmResetMailing=Warning, by reinitializing emailing %s, you allow to make a mass sending of this email another time. Are you sure you this is what you want to do? -ConfirmDeleteMailing=Bu e-postayı silmek istediğinizden emin misiniz? -NbOfUniqueEMails=Benzersiz eposta sayısı -NbOfEMails=Eposta sayısı +ConfirmResetMailing=Warning, by re-initializing emailing %s , you will allow resending this email in a mass mailing. Are you sure you want to do this? +ConfirmDeleteMailing=Are you sure you want to delete this emailing? +NbOfUniqueEMails=No. of unique emails +NbOfEMails=No. of EMails TotalNbOfDistinctRecipients=Farklı alıcıların sayısı NoTargetYet=Henüz hiç bir alıcı tanımlanmadı (‘Alıcılar’ sekmesine gidin) NoRecipientEmail=%s için alıcı E-postası yok @@ -66,26 +66,26 @@ DateLastSend=Enson gönderim tarihi DateSending=Gönderme tarihi SentTo=%s ye gönderilen MailingStatusRead=Okundu -YourMailUnsubcribeOK=%s Epostası postalama listesinden başarıyla çıkarıldı -ActivateCheckReadKey="Okuma Alındısı" ve "Abonelik İptali" için kullanılan URL şifrelemesi içi Anahtar +YourMailUnsubcribeOK=The email %s is correctly unsubscribe from mailing list +ActivateCheckReadKey=Key used to encrypt URL used for "Read Receipt" and "Unsubscribe" feature EMailSentToNRecipients=EMail sent to %s recipients. EMailSentForNElements=Eposta gönderilen öğeler: %s. XTargetsAdded=%s alıcılar listesine eklendi -OnlyPDFattachmentSupported=If the PDF documents were already generated for the objects to send, they will be attached to email. If not, no email will be sent (also, note that only pdf documents are supported as attachment in mass sending in this version). +OnlyPDFattachmentSupported=If the PDF documents were already generated for the objects to send, they will be attached to email. If not, no email will be sent (also, note that only pdf documents are supported as attachments in mass sending in this version). AllRecipientSelected=The recipients of the %s record selected (if their email is known). GroupEmails=Grup e-postaları OneEmailPerRecipient=One email per recipient (by default, one email per record selected) WarningIfYouCheckOneRecipientPerEmail=Warning, if you check this box, it means only one email will be sent for several different record selected, so, if your message contains substitution variables that refers to data of a record, it becomes not possible to replace them. ResultOfMailSending=Toplu Eposta gönderimi sonuçu -NbSelected=Seçilen sayısı -NbIgnored=Yoksayılan sayısı -NbSent=Gönderilen sayısı +NbSelected=No. selected +NbIgnored=No. ignored +NbSent=No. sent SentXXXmessages=%s message(s) sent. ConfirmUnvalidateEmailing=Are you sure you want to change email %s to draft status? MailingModuleDescContactsWithThirdpartyFilter=Contact with customer filters -MailingModuleDescContactsByCompanyCategory=Contacts by third party category -MailingModuleDescContactsByCategory=Contacts by categories -MailingModuleDescContactsByFunction=Contacts by position +MailingModuleDescContactsByCompanyCategory=Üçüncü parti kategorisine göre kişiler +MailingModuleDescContactsByCategory=Kategorilere göre kişiler +MailingModuleDescContactsByFunction=Pozisyona göre kişiler MailingModuleDescEmailsFromFile=Dosyadan e-postalar MailingModuleDescEmailsFromUser=Kullanıcı tarafından girilen e-postalar MailingModuleDescDolibarrUsers=E-postaları olan kullanıcılar @@ -139,7 +139,7 @@ UseFormatFileEmailToTarget=Imported file must have format email;name;fir UseFormatInputEmailToTarget=Enter a string with format email;name;firstname;other MailAdvTargetRecipients=Alıcılar (gelişmiş seçim) AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target -AdvTgtSearchTextHelp=Bunları %% sihirli karakter olarak kullanın. Örneğin; jean, joe, jim gibi tüm öğeleri bulmak için bunları j%% girebilirsiniz, aynı zamanda ayraç olarak ; kullanabilirsiniz, bu değer hariç için ! kullanabilirsiniz. Örneğin; jean;joe;jim%%;!jimo;!jima% dizgesi hedefi şu olacaktır: jim ile başlayan ancak jimo ile başlamayan ve jima ile başlayan her şeyi değil +AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like jean, joe, jim, you can input j%%, you can also use ; as separator for value, and use ! for except this value. For example jean;joe;jim%%;!jimo;!jima% will target all jean, joe, start with jim but not jimo and not everything that starts with jima AdvTgtSearchIntHelp=Tam sayı veya kayan değer seçmek için aralık kullanın AdvTgtMinVal=En düşük değer AdvTgtMaxVal=En yüksek değer @@ -153,7 +153,7 @@ AddAll=Hepsini ekle RemoveAll=Hepsini sil ItemsCount=Öğe(ler) AdvTgtNameTemplate=Süzgeç adı -AdvTgtAddContact=Epostaları kriterlere göre ekle +AdvTgtAddContact=Add emails according to criteria AdvTgtLoadFilter=Süzgeç yükle AdvTgtDeleteFilter=Süzgeç sil AdvTgtSaveFilter=Süzgeç kaydet @@ -166,4 +166,4 @@ InGoingEmailSetup=Gelen e-posta kurulumu OutGoingEmailSetupForEmailing=Giden e-posta kurulumu (toplu e-posta için) DefaultOutgoingEmailSetup=Varsayılan giden e-posta kurulumu Information=Bilgi -ContactsWithThirdpartyFilter=Contacts avec filtre client +ContactsWithThirdpartyFilter=Contacts with third party filter diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index b9aae0e18f5..3b921978004 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -328,7 +328,7 @@ Copy=Kopyala Paste=Yapıştır Default=Varsayılan DefaultValue=Varsayılan değer -DefaultValues=Default values/filters/sorting +DefaultValues=Varsayılan değerler/filtreler/sıralama Price=Fiyat PriceCurrency=Fiyat (para birimi) UnitPrice=Birim fiyat @@ -432,7 +432,7 @@ ActionDoneShort=Bitti ActionUncomplete=Incomplete LatestLinkedEvents=Bununla bağlantılı son %s etkinlik CompanyFoundation=Şirket/Kuruluş -Accountant=Accountant +Accountant=Muhasebeci ContactsForCompany=Bu üçüncü partinin kişileri ContactsAddressesForCompany=Bu üçüncü partinin kişleri/adresleri AddressesForCompany=Bu üçüncü partinin adresleri @@ -455,8 +455,8 @@ Generate=Oluştur Duration=Süre TotalDuration=Toplam süre Summary=Özet -DolibarrStateBoard=Database Statistics -DolibarrWorkBoard=Pending Items +DolibarrStateBoard=Veritabanı İstatistikleri +DolibarrWorkBoard=Bekleyen İşlemler NoOpenedElementToProcess=İşlenecek hiçbir açık öğe yok Available=Mevcut NotYetAvailable=Henüz mevcut değil @@ -837,7 +837,7 @@ Calendar=Takvim GroupBy=Gruplandır... ViewFlatList=Düz listeyi incele RemoveString='%s' dizisini kaldır -SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. +SomeTranslationAreUncomplete=Sunulan dillerden bazıları sadece kısmen çevrilmiş olabilir veya çeviri hatalarına sahip olabilir. Lütfen https://transifex.com/projects/p/dolibarr/ adresi üzerinden kayıt yaparak dilinizdeki çeviri hatalarını düzeltmeye yardımcı olun ve yazılımın gelişimine katkıda bulunun. DirectDownloadLink=Direct download link (public/external) DirectDownloadInternalLink=Direkt indirme linki (giriş yapılmış olmalı ve izin gerekli) Download=İndir @@ -848,9 +848,9 @@ ModuleBuilder=Module Builder SetMultiCurrencyCode=Para birimini ayarla BulkActions=Toplu eylemler ClickToShowHelp=Araç ipucu yardımını göstermek için tıklayın -WebSite=Website +WebSite=Web sitesi WebSites=Websiteleri -WebSiteAccounts=Website accounts +WebSiteAccounts=Web sitesi hesapları ExpenseReport=Gider raporu ExpenseReports=Gider raporları HR=İK diff --git a/htdocs/langs/tr_TR/modulebuilder.lang b/htdocs/langs/tr_TR/modulebuilder.lang index 2e70cbd2d69..77bc996625e 100644 --- a/htdocs/langs/tr_TR/modulebuilder.lang +++ b/htdocs/langs/tr_TR/modulebuilder.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - loan -ModuleBuilderDesc=This tools must be used by experienced users or developers. It gives you utilities to build or edit your own module (Documentation for alternative manual development is here). +ModuleBuilderDesc=This tool must be used by only by experienced users or developers. It gives you utilities to build or edit your own module.
    Documentation for alternative manual development is here. EnterNameOfModuleDesc=Enter name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) EnterNameOfObjectDesc=Enter name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. ModuleBuilderDesc2=Path where modules are generated/edited (first alternative directory defined into %s): %s @@ -12,8 +12,8 @@ ObjectKey=Nesne anahtarı ModuleInitialized=Module initialized FilesForObjectInitialized=Yeni nesne '%s' için dosyalar başlatıldı FilesForObjectUpdated=Files for object '%s' updated (.sql files and .class.php file) -ModuleBuilderDescdescription=Enter here all general information that describe your module. -ModuleBuilderDescspecifications=You can enter here a long text to describe the specifications of your module that is not already structured into other tabs. So you have within easy reach all the rules to develop. Also this text content will be included into the generated documentation (see last tab). You can use Markdown format, but it is recommanded to use Asciidoc format (Comparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) +ModuleBuilderDescdescription=Modülünüzü tanımlayan tüm genel bilgileri buraya girin +ModuleBuilderDescspecifications=You can enter here a detailed description of the specifications of your module that is not already structured into other tabs. So you have within easy reach all the rules to develop. Also this text content will be included into the generated documentation (see last tab). You can use Markdown format, but it is recommended to use Asciidoc format (comparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). ModuleBuilderDescobjects=Define here the objects you want to manage with your module. A CRUD DAO class, SQL files, page to list record of objects, to create/edit/view a record and an API will be generated. ModuleBuilderDescmenus=This tab is dedicated to define menu entries provided by your module. ModuleBuilderDescpermissions=This tab is dedicated to define the new permissions you want to provide with your module. @@ -21,12 +21,12 @@ ModuleBuilderDesctriggers=This is the view of triggers provided by your module. ModuleBuilderDeschooks=This tab is dedicated to hooks. ModuleBuilderDescwidgets=This tab is dedicated to manage/build widgets. ModuleBuilderDescbuildpackage=You can generate here a "ready to distribute" package file (a normalized .zip file) of your module and a "ready to distribute" documentation file. Just click on button to build the package or documentation file. -EnterNameOfModuleToDeleteDesc=You can delete your module. WARNING: All files of module but also structured data and documentation will be definitly lost ! -EnterNameOfObjectToDeleteDesc=You can delete an object. WARNING: All files related to object will be definitly lost ! +EnterNameOfModuleToDeleteDesc=You can delete your module. WARNING: ALL files of module AND structured data and documentation will be deleted! +EnterNameOfObjectToDeleteDesc=You can delete an object. WARNING: All files related to object will be deleted! DangerZone=Tehlikeli bölge BuildPackage=Build package/documentation BuildDocumentation=Dökümantasyon oluşturun -ModuleIsNotActive=This module was not activated yet. Go into %s to make it live or click here: +ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here: ModuleIsLive=This module has been activated. Any change on it may break a current active feature. DescriptionLong=Uzun açıklama EditorName=Editörün adı @@ -34,7 +34,7 @@ EditorUrl=Editörün URL'si DescriptorFile=Modülün tanımlayıcı dosyası ClassFile=PHP DAO CRUD sınıfı için dosya ApiClassFile=PHP API sınıfı için dosya -PageForList=PHP page for list of record +PageForList=Kayıt listesi için PHP sayfası PageForCreateEditView=PHP page to create/edit/view a record PageForAgendaTab=Etkinlik sekmesi için PHP sayfası PageForDocumentTab=Belge sekmesi için PHP sayfası @@ -47,7 +47,7 @@ RegenerateClassAndSql=Erase and regenerate class and sql files RegenerateMissingFiles=Eksik dosyaları oluştur SpecificationFile=File with business rules LanguageFile=Dil için dosya -ConfirmDeleteProperty=Are you sure you want to delete the property %s ? This will change code in PHP class but also remove column from table definition of object. +ConfirmDeleteProperty=Are you sure you want to delete the property %s? This will change code in PHP class but also remove column from table definition of object. NotNull=Not NULL NotNullDesc=1=Set database to NOT NULL. -1=Allow null values and force value to NULL if empty ('' or 0). SearchAll='Tümünü ara' için kullanılır @@ -66,19 +66,19 @@ PageForLib=PHP kütüphaneleri için dosya SqlFileExtraFields=Tamamlayıcı nitelikler için Sql dosyası SqlFileKey=Anahtarlar için Sql dosyası AnObjectAlreadyExistWithThisNameAndDiffCase=An object already exists with this name and a different case -UseAsciiDocFormat=You can use Markdown format, but it is recommanded to use Asciidoc format (Comparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) +UseAsciiDocFormat=You can use Markdown format, but it is recommended to use Asciidoc format (omparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) IsAMeasure=Is a measure DirScanned=Taranan dizin NoTrigger=No trigger NoWidget=No widget GoToApiExplorer=Go to API explorer -ListOfMenusEntries=Menü girişlerinin listesi +ListOfMenusEntries=Menü kayıtlarının listesi ListOfPermissionsDefined=Tanımlanan izinlerin listesi -SeeExamples=See examples here +SeeExamples=Burada örneklere bakın EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only. Using a negative value means field is not shown by default on list but can be selected for viewing) -IsAMeasureDesc=Can the value of field be cumulated to get a total into list ? (Examples: 1 or 0) -SearchAllDesc=Is the field used to make a search from the quick search tool ? (Examples: 1 or 0) +IsAMeasureDesc=Can the value of field be cumulated to get a total into list? (Examples: 1 or 0) +SearchAllDesc=Is the field used to make a search from the quick search tool? (Examples: 1 or 0) SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax. LanguageDefDesc=Enter in this files, all the key and the translation for each language file. MenusDefDesc=Define here the menus provided by your module (once defined, they are visible into the menu editor %s) @@ -88,14 +88,15 @@ TriggerDefDesc=Define in the trigger file the code you want to execute for each SeeIDsInUse=See IDs in use in your installation SeeReservedIDsRangeHere=See range of reserved IDs ToolkitForDevelopers=Toolkit for Dolibarr developers -TryToUseTheModuleBuilder=If you have knowledge in SQL and PHP, you can try to use the native module builder wizard. Just enable the module and use the wizard by clicking the on the top right menu. Warning: This is a developer feature, bad use may breaks your application. +TryToUseTheModuleBuilder=If you have knowledge of SQL and PHP, you may use the native module builder wizard.
    Enable the module %s and use the wizard by clicking the on the top right menu.
    Warning: This is an advanced developer feature, do not experiment on your production site! SeeTopRightMenu=See on the top right menu -AddLanguageFile=Add language file +AddLanguageFile=Dil dosyası ekle YouCanUseTranslationKey=You can use here a key that is the translation key found into language file (see tab "Languages") DropTableIfEmpty=(Delete table if empty) TableDoesNotExists=The table %s does not exists TableDropped=Table %s deleted InitStructureFromExistingTable=Build the structure array string of an existing table -UseAboutPage=Disallow the about page -UseDocFolder=Disallow the documentation folder +UseAboutPage=Hakkında sayfasını devre dışı bırak +UseDocFolder=Dökümantasyon klasörünü devre dışı bırak UseSpecificReadme=Use a specific ReadMe +RealPathOfModule=Modülün gerçek yolu diff --git a/htdocs/langs/tr_TR/oauth.lang b/htdocs/langs/tr_TR/oauth.lang index afd5ec1247d..d51609c0731 100644 --- a/htdocs/langs/tr_TR/oauth.lang +++ b/htdocs/langs/tr_TR/oauth.lang @@ -14,7 +14,7 @@ DeleteAccess=Belirteçi silmek için burayı tıkla UseTheFollowingUrlAsRedirectURI=OAuth sağlayıcınız üzerinde kimlik oluştururken Yönlendirme URI olarak aşağıdaki URL'yi kullanın: ListOfSupportedOauthProviders=OAuth2 sağlayıcınız tarafınıdan verilen kimlik bilgilerini burada girin. Burada yalnızca desteklenen OAuth2 sağlayıcılar görünür. Bu ayarlar OAuth2 kimlik doğrulaması gerektiren diğer modüller tarafından da kullanılabilir. OAuthSetupForLogin=Page to generate an OAuth token -SeePreviousTab=See previous tab +SeePreviousTab=Önceki sekmeye bakın OAuthIDSecret=OAuth ID and Secret TOKEN_REFRESH=Belirteç Yenilemesi Mevcuttur TOKEN_EXPIRED=Token expired diff --git a/htdocs/langs/tr_TR/other.lang b/htdocs/langs/tr_TR/other.lang index 2907be72ffa..c52e1afab8d 100644 --- a/htdocs/langs/tr_TR/other.lang +++ b/htdocs/langs/tr_TR/other.lang @@ -3,7 +3,7 @@ SecurityCode=Güvenlik kodu NumberingShort=N° Tools=Araçlar TMenuTools=Araçlar -ToolsDesc=All tools not included in other menu entries are grouped here.
    All the tools can be accessed via the left menu. +ToolsDesc=Diğer menü girişlerinde bulunmayan tüm araçlar burada gruplandırılmıştır.
    Tüm araçlara sol menüden erişilebilir. Birthday=Doğumgünü BirthdayDate=Doğumgünü tarihi DateToBirth=Doğum Tarihi @@ -261,7 +261,7 @@ WebsiteSetup=Websitesi modülü ayarları WEBSITE_PAGEURL=Sayfanın URL si WEBSITE_TITLE=Unvan WEBSITE_DESCRIPTION=Açıklama -WEBSITE_IMAGE=Image +WEBSITE_IMAGE=Görüntü WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a preview of a list of blog posts). WEBSITE_KEYWORDS=Anahtar kelimeler LinesToImport=Lines to import diff --git a/htdocs/langs/tr_TR/paypal.lang b/htdocs/langs/tr_TR/paypal.lang index 700ebd55da1..800a9202489 100644 --- a/htdocs/langs/tr_TR/paypal.lang +++ b/htdocs/langs/tr_TR/paypal.lang @@ -1,20 +1,19 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=PayPal modülü kurulumu -PaypalDesc=Bu modül PayPal üzerinden müşteriler tarafından ödeme yapılmasını sağlar. Bu bir ücretsiz ödeme veya belirli bir Dolibarr nesnesine (fatura, siparş,…) bir ödeme yapmak için kullanılabilir -PaypalOrCBDoPayment=PayPal ile öde (Kredi Kartı veya Paypal) -PaypalDoPayment=Paypal ile ödeme +PaypalDesc=This module allows payment on PayPal by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +PaypalOrCBDoPayment=PayPal ile öde (Kredi Kartı veya PayPal) +PaypalDoPayment=PayPal ile öde PAYPAL_API_SANDBOX=Test/sandbox modu PAYPAL_API_USER=API kullanıcı adı PAYPAL_API_PASSWORD=API parolası PAYPAL_API_SIGNATURE=API imzası PAYPAL_SSLVERSION=Curl SSL Sürümü -PAYPAL_API_INTEGRAL_OR_PAYPALONLY="Dahili" (kredi kartı+paypal) ya da sadece "Paypal" ödemesi sunar +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer payment "integral" (Credit card+PayPal) or "PayPal" only PaypalModeIntegral=Tümlev PaypalModeOnlyPaypal=Yalnızca PayPal -ONLINE_PAYMENT_CSS_URL=Online ödeme sayfasındaki CSS stil sayfasının isteğe bağlı URL'si +ONLINE_PAYMENT_CSS_URL=Optional URL of CSS stylesheet on online payment page ThisIsTransactionId=Bu işlem kimliğidir: %s -PAYPAL_ADD_PAYMENT_URL=Posta yoluyla bir belge gönderdiğinizde, Paypal ödeme url'sini ekleyin -YouAreCurrentlyInSandboxMode=Şu anda %s "sandbox" modundasınız +PAYPAL_ADD_PAYMENT_URL=Add the url of PayPal payment when you send a document by mail NewOnlinePaymentReceived=Yeni online ödeme alındı NewOnlinePaymentFailed=Yeni online ödeme denendi ancak başarısız oldu ONLINE_PAYMENT_SENDEMAIL=Bir ödemeden sonra uyarı Epostası (başarılı ya da değil) @@ -28,7 +27,8 @@ ShortErrorMessage=Kısa Hata Mesajı ErrorCode=Hata Kodu ErrorSeverityCode=Hata Önem Kodu OnlinePaymentSystem=Online ödeme sistemi -PaypalLiveEnabled=Paypal canlı etkin (aksi takdirde test/sanal alan modu) -PaypalImportPayment=Import Paypal payments +PaypalLiveEnabled=PayPal live enabled (otherwise test/sandbox mode) +PaypalImportPayment=Import PayPal payments PostActionAfterPayment=Post actions after payments ARollbackWasPerformedOnPostActions=A rollback was performed on all Post actions. You must complete post actions manually if they are necessary. +ValidationOfPaymentFailed=Validation of payment has failed diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index 7391f601bb3..75ff9d44be4 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -29,8 +29,8 @@ NewProject=Yeni proje AddProject=Proje oluştur DeleteAProject=Bir proje sil DeleteATask=Bir görev sil -ConfirmDeleteAProject=Are you sure you want to delete this project? -ConfirmDeleteATask=Are you sure you want to delete this task? +ConfirmDeleteAProject=Bu projeyi silmek istediğinizden emin misiniz? +ConfirmDeleteATask=Bu görevi silmek istediğinizden emin misiniz? OpenedProjects=Açık projeler OpenedTasks=Açık görevler OpportunitiesStatusForOpenedProjects=Leads amount of open projects by status @@ -80,19 +80,19 @@ GoToListOfTasks=Görevler listesine git GoToGanttView=Go to Gantt view GanttView=Gantt View ListProposalsAssociatedProject=List of the commercial proposals related to the project -ListOrdersAssociatedProject=List of customer orders related to the project -ListInvoicesAssociatedProject=List of customer invoices related to the project -ListPredefinedInvoicesAssociatedProject=List of customer template invoices related to the project -ListSupplierOrdersAssociatedProject=List of supplier orders related to the project -ListSupplierInvoicesAssociatedProject=List of supplier invoices related to the project -ListContractAssociatedProject=List of contracts related to the project +ListOrdersAssociatedProject=Proje ile ilgili müşteri siparişlerinin listesi +ListInvoicesAssociatedProject=Proje ile ilgili müşteri faturalarının listesi +ListPredefinedInvoicesAssociatedProject=Proje ile ilgili müşteri şablon faturalarının listesi +ListSupplierOrdersAssociatedProject=Proje ile ilgili tedarikçi siparişlerinin listesi +ListSupplierInvoicesAssociatedProject=Proje ile ilgili tedarikçi faturalarının listesi +ListContractAssociatedProject=Proje ile ilgili sözleşmelerin listesi ListShippingAssociatedProject=List of shippings related to the project -ListFichinterAssociatedProject=List of interventions related to the project +ListFichinterAssociatedProject=Proje ile ilgili müdahalelerin listesi ListExpenseReportsAssociatedProject=List of expense reports related to the project ListDonationsAssociatedProject=List of donations related to the project -ListVariousPaymentsAssociatedProject=List of miscellaneous payments related to the project +ListVariousPaymentsAssociatedProject=Proje ile ilgili çeşitli ödemeler listesi ListSalariesAssociatedProject=List of payments of salaries related to the project -ListActionsAssociatedProject=List of events related to the project +ListActionsAssociatedProject=Proje ile ilgili etkinliklerin listesi ListTaskTimeUserProject=Projelere harcanan sürelerin listesi ListTaskTimeForTask=List of time consumed on task ActivityOnProjectToday=Projedeki bugünkü etkinlik @@ -107,12 +107,12 @@ NotOwnerOfProject=Bu özel projenin sahibi değil AffectedTo=Tahsis edilen CantRemoveProject=Bu proje kaldırılamıyor çünkü Bazı diğer nesneler tarafından başvurulUYOR (fatura, sipariş veya diğerleri). Başvuru sekmesine bakın. ValidateProject=Proje doğrula -ConfirmValidateProject=Are you sure you want to validate this project? +ConfirmValidateProject=Bu projeyi doğrulamak istediğinizden emin misiniz? CloseAProject=Proje kapat -ConfirmCloseAProject=Are you sure you want to close this project? +ConfirmCloseAProject=Bu projeyi kapatmak istediğinizden emin misiniz? AlsoCloseAProject=Also close project (keep it open if you still need to follow production tasks on it) ReOpenAProject=Proje aç -ConfirmReOpenAProject=Are you sure you want to re-open this project? +ConfirmReOpenAProject=Bu projeyi tekrar açmak istediğinizden emin misiniz? ProjectContact=Proje ilgilileri TaskContact=Task contacts ActionsOnProject=Proje etkinlikleri @@ -137,13 +137,13 @@ 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? -ConfirmCloneProject=Are you sure to clone this project? +ConfirmCloneProject=Bu projeyi kopyalamak istediğinizden emin misiniz? ProjectReportDate=Change task dates according to new project start date ErrorShiftTaskDate=Görev tarihini yeni proje başlama tarihine göre kaydırmak olası değil ProjectsAndTasksLines=Projeler ve görevler ProjectCreatedInDolibarr=%s projesi oluşturuldu ProjectValidatedInDolibarr=Project %s validated -ProjectModifiedInDolibarr=Project %s modified +ProjectModifiedInDolibarr=Proje %s değiştirildi TaskCreatedInDolibarr=%s görev oluşturuldu TaskModifiedInDolibarr=%s görev değiştirildi TaskDeletedInDolibarr=%s görev silindi @@ -223,10 +223,10 @@ Budget=Bütçe AllowToLinkFromOtherCompany=Allow to link project from other company

    Supported values :
    - Keep empty: Can link any project of the company (default)
    - "all" : Can link any projects, even project of other companies
    - A list of thirdparty id separated with commas : Can link all projects of these thirdparty defined (Example : 123,4795,53)
    LatestProjects=Son %s proje LatestModifiedProjects=Latest %s modified projects -OtherFilteredTasks=Other filtered tasks +OtherFilteredTasks=Diğer filtrelenmiş görevler NoAssignedTasks=No assigned tasks (assign project/tasks the current user from the top select box to enter time on it) # Comments trans -AllowCommentOnTask=Allow user comments on tasks +AllowCommentOnTask=Görevlere kullanıcı yorumlarına izin ver AllowCommentOnProject=Allow user comments on projects DontHavePermissionForCloseProject=You do not have permissions to close the project %s DontHaveTheValidateStatus=The project %s must be open to be closed diff --git a/htdocs/langs/tr_TR/sms.lang b/htdocs/langs/tr_TR/sms.lang index 88a8d7510ea..21badfbe3f0 100644 --- a/htdocs/langs/tr_TR/sms.lang +++ b/htdocs/langs/tr_TR/sms.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - sms Sms=Sms -SmsSetup=Sms kurulums -SmsDesc=Bu sayfa, SMS özelliklerinin genel seçeneklerini tanımlamanıza olanak tanır +SmsSetup=SMS setup +SmsDesc=This page allows you to define global options on SMS features SmsCard=SMS Kartı AllSms=Tüm SMS kampanyaları SmsTargets=Hedefler @@ -13,20 +13,20 @@ SmsTo=Hedef SmsTopic=SMS Konusu SmsText=Mesaj SmsMessage=SMS Mesajı -ShowSms=Sms görüntüle -ListOfSms=SMS kampanyaları listesi +ShowSms=SMS göster +ListOfSms=SMS kampanyalarını listele NewSms=Yeni SMS kampanyası -EditSms=Sms düzenle +EditSms=SMS'i düzenle ResetSms=Yeni gönderim -DeleteSms=Sms kampanyası sil -DeleteASms=Bir Sms kampanyası kaldır -PreviewSms=Sms önizle -PrepareSms=Sms hazırla -CreateSms=Sms oluştur -SmsResult=SMS gönderimi sonucu -TestSms=Sms Testi -ValidSms=Sms Doğrula -ApproveSms=Sms onayla +DeleteSms=SMS kampanyasını sil +DeleteASms=Bir SMS kampanyası kaldır +PreviewSms=SMS Önizleme  +PrepareSms=SMS hazırla +CreateSms=SMS oluştur +SmsResult=SMS gönderiminin sonucu +TestSms=SMS'i test et +ValidSms=SMS'i doğrula +ApproveSms=SMS'i onayla SmsStatusDraft=Taslak SmsStatusValidated=Doğrulanmış SmsStatusApproved=Onaylı @@ -35,17 +35,17 @@ SmsStatusSentPartialy=Kısmen gönderildi SmsStatusSentCompletely=Tamamen gönderildi SmsStatusError=Hata SmsStatusNotSent=Gönderilmedi -SmsSuccessfulySent=Sms doğru olarak gönderildi (%s ten %s e) +SmsSuccessfulySent=SMS doğru şekilde gönderildi (%s'nda %s'a) ErrorSmsRecipientIsEmpty=Hedef sayısı boş WarningNoSmsAdded=Hedef listesine eklenecek herhangi hiç bir yeni bir telefon numarası yok ConfirmValidSms=Bu kampanyanın doğrulanmasını onaylıyor musunuz? -NbOfUniqueSms=Benzersiz telefon numaraları sayısı -NbOfSms=Telefon numaraları sayısı +NbOfUniqueSms=Benzersiz telefon numarası sayısı +NbOfSms=Telefon numarası sayısı ThisIsATestMessage=Bu bir test mesajıdır SendSms=SMS gönder SmsInfoCharRemain=Kalan karakter sayısı -SmsInfoNumero= (Uluslar arası biçim örneği: +33899701761) +SmsInfoNumero= (uluslararası format, örn : +33899701761) DelayBeforeSending=Gönderimden önceki süre (Dakika) SmsNoPossibleSenderFound=Gönderen yok. SMS sağlayıcınızın ayarlarını denetleyin. SmsNoPossibleRecipientFound=Hedef yok. SMS sağlayıcı kurulumu kontrol edin. -DisableStopIfSupported=Disable STOP message (if supported) +DisableStopIfSupported=STOP mesajını devre dışı bırak (destekleniyorsa) diff --git a/htdocs/langs/tr_TR/stocks.lang b/htdocs/langs/tr_TR/stocks.lang index 0d8e11d8788..0acac9b844e 100644 --- a/htdocs/langs/tr_TR/stocks.lang +++ b/htdocs/langs/tr_TR/stocks.lang @@ -44,7 +44,6 @@ TransferStock=Stok aktarma MassStockTransferShort=Toplu stok aktarma StockMovement=Stok hareketi StockMovements=Stok hareketleri -LabelMovement=Taşıma etiketi NumberOfUnit=Birim sayısı UnitPurchaseValue=Alış birim fiyatı StockTooLow=Stok çok düşük @@ -55,20 +54,20 @@ PMPValueShort=AOF EnhancedValueOfWarehouses=Depolar değeri UserWarehouseAutoCreate=Kullanıcı oluştururken otomatik olarak bir kullanıcı deposu yarat AllowAddLimitStockByWarehouse=Allow to add limit and desired stock per couple (product, warehouse) instead of per product -IndependantSubProductStock=Ürün stoku ve yan ürün stoku bağımsızdır +IndependantSubProductStock=Product stock and subproduct stock are independent QtyDispatched=Sevkedilen miktar QtyDispatchedShort=Dağıtılan mik QtyToDispatchShort=Dağıtılacak mik OrderDispatch=Öğe makbuzları -RuleForStockManagementDecrease=Otomatik stok eksiltme yönetimi kuralı (elle eksiltme her zaman olasıdır, otomatik eksiltme kuralı etkin bile olsa) -RuleForStockManagementIncrease=Otomatik stok arttırma yönetimi kuralı (elle arttırmae her zaman olasıdır, otomatik arttırma kuralı etkin bile olsa) -DeStockOnBill=Müşteri faturalarının/iade faturalarının doğrulanması üzerine gerçek stokları azalt -DeStockOnValidateOrder=Müşteri siparişlerinin doğrulanması üzerine gerçek stokları azalt +RuleForStockManagementDecrease=Choose Rule for automatic stock decrease (manual decrease is always possible, even if an automatic decrease rule is activated) +RuleForStockManagementIncrease=Choose Rule for automatic stock increase (manual increase is always possible, even if an automatic increase rule is activated) +DeStockOnBill=Decrease real stocks on validation of customer invoice/credit note +DeStockOnValidateOrder=Decrease real stocks on validation of customer order DeStockOnShipment=Sevkiyatın onaylanmasıyla gerçek stoku eksilt DeStockOnShipmentOnClosing=Sevkiyatın kapalı olarak sınıflandırılmasıyla gerçek stoğu eksilt -ReStockOnBill=Müşteri faturalarının/iade faturalarının doğrulanması üzerine gerçek stokları arttır -ReStockOnValidateOrder=Increase real stocks on purchase orders approbation -ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouses, after supplier order receipt of goods +ReStockOnBill=Increase real stocks on validation of supplier invoice/credit note +ReStockOnValidateOrder=Increase real stocks on purchase order approval +ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouse, after supplier order receipt of goods OrderStatusNotReadyToDispatch=Sipariş henüz yoksa veya stok deposundan gönderime izin veren bir durum varsa. StockDiffPhysicTeoric=Fiziki ve sanal stok arasındaki farkın açıklaması NoPredefinedProductToDispatch=Bu nesne için önceden tanımlanmış ürünlenyok. Yani stoktan sevk gerekli değildir. @@ -130,10 +129,11 @@ RecordMovement=Kayıt transferi ReceivingForSameOrder=Bu siparişten yapılan kabuller StockMovementRecorded=Stok hareketleri kaydedildi RuleForStockAvailability=Stok gereksinimi kuralları -StockMustBeEnoughForInvoice=Stok düzeyi faturaya ürün/hizmet eklemeye yeterli olmalıdır (geçerli gerçek stoğa satır eklerken, otomatik stok değiştirme kuralı ne olursa olsun, kontrol yapılır) -StockMustBeEnoughForOrder=Stok düzeyi siparişe ürün/hizmet eklemeye yeterli olmalıdır (geçerli gerçek stoğa satır eklerken, otomatik stok değiştirme kuralı ne olursa olsun, kontrol yapılır) -StockMustBeEnoughForShipment= Stok düzeyi sevkiyata ürün/hizmet eklemeye yeterli olmalıdır (geçerli gerçek stoğa satır eklerken, otomatik stok değiştirme kuralı ne olursa olsun, kontrol yapılır) +StockMustBeEnoughForInvoice=Stock level must be enough to add product/service to invoice (check is done on current real stock when adding a line into invoice whatever the rule for automatic stock change) +StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever the rule for automatic stock change) +StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever the rule for automatic stock change) MovementLabel=Hareket etiketi +TypeMovement=Type of movement DateMovement=Date of movement InventoryCode=Hareket veya stok kodu IsInPackage=Pakette içerilir @@ -171,8 +171,8 @@ inventoryValidate=Doğrulandı inventoryDraft=Yürürlükte inventorySelectWarehouse=Depo seçimi inventoryConfirmCreate=Oluştur -inventoryOfWarehouse=Inventory for warehouse : %s -inventoryErrorQtyAdd=Hata: bir miktar sıfırdan küçük +inventoryOfWarehouse=Depo için envanter: %s +inventoryErrorQtyAdd=Error : one quantity is less than zero inventoryMvtStock=By inventory inventoryWarningProductAlreadyExists=Bu ürün listede zaten var SelectCategory=Kategori süzgeçi @@ -199,8 +199,12 @@ ConfirmFlushInventory=Bu eylemi onaylıyor musunuz? InventoryFlushed=Envanter boşaltıldı ExitEditMode=Exit edition inventoryDeleteLine=Satır sil -RegulateStock=Regulate Stock +RegulateStock=Stoğu Düzenle ListInventory=Liste -StockSupportServices=Stock management support services +StockSupportServices=Stock management supports Services StockSupportServicesDesc=By default, you can stock only product with type "product". If on, and if module service is on, you can also stock a product with type "service" ReceiveProducts=Receive items +StockIncreaseAfterCorrectTransfer=Increase by correction/transfer +StockDecreaseAfterCorrectTransfer=Decrease by correction/transfer +StockIncrease=Stock increase +StockDecrease=Stock decrease diff --git a/htdocs/langs/tr_TR/stripe.lang b/htdocs/langs/tr_TR/stripe.lang index 691687eb9d0..38b0bc87921 100644 --- a/htdocs/langs/tr_TR/stripe.lang +++ b/htdocs/langs/tr_TR/stripe.lang @@ -4,7 +4,7 @@ StripeDesc=Module to offer an online payment page accepting payments with Credit StripeOrCBDoPayment=Kredi kartı veya Stripe ile ödeme yapın FollowingUrlAreAvailableToMakePayments=Aşağıdaki URL'ler bir müşteriye Dolibarr nesnelerine bir ödeme yapmak için bir sayfa sunmak için kullanılabilir PaymentForm=Ödeme Formu -WelcomeOnPaymentPage=Çevrimiçi ödeme hizmetimize hoşgeldiniz +WelcomeOnPaymentPage=Çevrimiçi ödeme hizmetimize hoş geldiniz ThisScreenAllowsYouToPay=Bu ekran %s için çevrimiçi bir ödeme yapmanızı sağlar ThisIsInformationOnPayment=Bu yapılacak ödeme hakkında bilgidir ToComplete=Tamamlanacak @@ -23,8 +23,6 @@ ToOfferALinkForOnlinePaymentOnFreeAmount=Bir serbest ödeme için çevrimiçi %s ToOfferALinkForOnlinePaymentOnMemberSubscription=Bir müşteri üye aboneliği çevrimiçi %s ödemesi kullanıcı arayüzü sunan URL YouCanAddTagOnUrl=Ayrıca; o URL'lerden herhangi birine &tag=value url parametresini ekleyerek kendi ödeme açıklamanızın etiketini girebilirsiniz. SetupStripeToHavePaymentCreatedAutomatically=Setup your Stripe with url %s to have payment created automatically when validated by Stripe. -YourPaymentHasBeenRecorded=Bu sayfa ödeme kaydedilmiş olduğunu onaylar. Teşekkür ederim. -YourPaymentHasNotBeenRecorded=Ödemeniz kaydedimelmiştir ve işlem iptal edilmiştir. Teşekkür ederiz. AccountParameter=Hesap parametreleri UsageParameter=Kullanım parametreleri InformationToFindParameters=%s Hesap bilgilerinizi bulmanız için yardım @@ -46,20 +44,21 @@ ExampleOfTestCreditCard=Example of credit card for test: %s (valid), %s (error C StripeGateways=Stripe gateways OAUTH_STRIPE_TEST_ID=Stripe Connect Client ID (ca_...) OAUTH_STRIPE_LIVE_ID=Stripe Connect Client ID (ca_...) -BankAccountForBankTransfer=Bank account for fund payouts -StripeAccount=Stripe account +BankAccountForBankTransfer=Fon ödemeleri için banka hesabı +StripeAccount=Stripe hesabı StripeChargeList=List of Stripe charges StripeTransactionList=List of Stripe transactions -StripeCustomerId=Stripe customer id +StripeCustomerId=Stripe müşteri kimliği StripePaymentModes=Stripe payment modes LocalID=Local ID -StripeID=Stripe ID +StripeID=Stripe Kimliği NameOnCard=Name on card CardNumber=Kart Numarası ExpiryDate=Expiry Date CVN=CVN -DeleteACard=Delete Card +DeleteACard=Kartı Sil ConfirmDeleteCard=Are you sure you want to delete this Credit or Debit card? CreateCustomerOnStripe=Create customer on Stripe CreateCardOnStripe=Create card on Stripe ShowInStripe=Show in Stripe +StripeUserAccountForActions=User account to use for some emails notification of Stripe events (Stripe payouts) diff --git a/htdocs/langs/tr_TR/suppliers.lang b/htdocs/langs/tr_TR/suppliers.lang index ae21bc1791c..0a9f5f5a512 100644 --- a/htdocs/langs/tr_TR/suppliers.lang +++ b/htdocs/langs/tr_TR/suppliers.lang @@ -29,7 +29,7 @@ ConfirmApproveThisOrder=Siparişi uygun bulmak istediğinizden emin misiniz % DenyingThisOrder=Bu siparişi reddet ConfirmDenyingThisOrder=Bu siparişi reddetmek istediğinizden emin misiniz %s? ConfirmCancelThisOrder=Bu siparişi iptal etmek istediğinizden emin misiniz %s? -AddSupplierOrder=Create Purchase Order +AddSupplierOrder=Satınalma Siparişi Oluştur AddSupplierInvoice=Tedarikçi faturası oluştur ListOfSupplierProductForSupplier=%s tedarikçisi için ürün ve fiyat listesi SentToSuppliers=Tedarikçilere gönderilen diff --git a/htdocs/langs/tr_TR/trips.lang b/htdocs/langs/tr_TR/trips.lang index 13e7b1c6a89..0be18335dff 100644 --- a/htdocs/langs/tr_TR/trips.lang +++ b/htdocs/langs/tr_TR/trips.lang @@ -10,28 +10,28 @@ ListOfFees=Ücretler listesi TypeFees=Ücret türleri ShowTrip=Gider raporu göster NewTrip=Yeni gider raporu -LastExpenseReports=Latest %s expense reports -AllExpenseReports=All expense reports +LastExpenseReports=Son %s gider raporu +AllExpenseReports=Tüm gider raporları CompanyVisited=Ziyaret edilen Şirket/Kuruluş FeesKilometersOrAmout=Tutar ya da kilometre DeleteTrip=Gider raporu sil -ConfirmDeleteTrip=Are you sure you want to delete this expense report? +ConfirmDeleteTrip=Bu gider raporunu silmek istediğinizden emin misiniz? ListTripsAndExpenses=Giderler raporları listesi ListToApprove=Onay bekliyor ExpensesArea=Gider raporları alanı ClassifyRefunded=Sınıflandırma 'İade edildi' ExpenseReportWaitingForApproval=Onay için yeni bir gider raporu sunulmuştur -ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.
    - User: %s
    - Period: %s
    Click here to validate: %s -ExpenseReportWaitingForReApproval=An expense report has been submitted for re-approval +ExpenseReportWaitingForApprovalMessage=Bir gider raporu gönderildi ve onay bekleniyor.
    - Kullanıcı: %s
    - Dönem: %s
    Doğrulamak için buraya tıklayın:%s +ExpenseReportWaitingForReApproval=Yeniden onay için bir gider raporu gönderildi ExpenseReportWaitingForReApprovalMessage=An expense report has been submitted and is waiting for re-approval.
    The %s, you refused to approve the expense report for this reason: %s.
    A new version has been proposed and waiting for your approval.
    - User: %s
    - Period: %s
    Click here to validate: %s -ExpenseReportApproved=An expense report was approved -ExpenseReportApprovedMessage=The expense report %s was approved.
    - User: %s
    - Approved by: %s
    Click here to show the expense report: %s -ExpenseReportRefused=An expense report was refused -ExpenseReportRefusedMessage=The expense report %s was refused.
    - User: %s
    - Refused by: %s
    - Motive for refusal: %s
    Click here to show the expense report: %s -ExpenseReportCanceled=An expense report was canceled -ExpenseReportCanceledMessage=The expense report %s was canceled.
    - User: %s
    - Canceled by: %s
    - Motive for cancellation: %s
    Click here to show the expense report: %s -ExpenseReportPaid=An expense report was paid -ExpenseReportPaidMessage=The expense report %s was paid.
    - User: %s
    - Paid by: %s
    Click here to show the expense report: %s +ExpenseReportApproved=Bir gider raporu onaylandı +ExpenseReportApprovedMessage=Gider raporu %s onaylandı.
    - Kullanıcı: %s
    - Onaylayan: %s
    Gider raporunu görüntülemek için buraya tıklayın: %s +ExpenseReportRefused=Bir gider raporu reddedildi +ExpenseReportRefusedMessage=Gider raporu %s reddedildi.
    - Kullanıcı: %s
    - Reddeden: %s
    - Reddetme sebebi: %s
    Gider raporunu görüntülemek için buraya tıklayın: %s +ExpenseReportCanceled=Bir gider raporu iptal edildi +ExpenseReportCanceledMessage=Gider raporu %s iptal edildi.
    - Kullanıcı: %s
    - İptal eden: %s
    - İptal sebebi: %s
    Gider raporunu görüntülemek için buraya tıklayın: %s +ExpenseReportPaid=Bir gider raporu ödendi +ExpenseReportPaidMessage=Gider raporu %s ödendi.
    - Kullanıcı: %s
    - Ödeyen: %s
    Gider raporunu görüntülemek için buraya tıklayın: %s TripId=Gider raporu kimliği AnyOtherInThisListCanValidate=Doğrulama için bilgilendirilecek kişi TripSociete=Firma bilgisi @@ -49,7 +49,7 @@ TF_PEAGE=Geçiş parası TF_ESSENCE=Yakıt TF_HOTEL=Otel TF_TAXI=Taksi -EX_KME=Mileage costs +EX_KME=Kilometre maliyetleri EX_FUE=Fuel CV EX_HOT=Otel EX_PAR=Parking CV @@ -59,7 +59,7 @@ EX_IND=Indemnity transportation subscription EX_SUM=Maintenance supply EX_SUO=Ofis malzemeleri EX_CAR=Araba kiralama -EX_DOC=Documentation +EX_DOC=Dökümantasyon EX_CUR=Customers receiving EX_OTR=Other receiving EX_POS=Postage @@ -71,7 +71,7 @@ EX_FUE_VP=Fuel PV EX_TOL_VP=Toll PV EX_PAR_VP=Parking PV EX_CAM_VP=PV maintenance and repair -DefaultCategoryCar=Default transportation mode +DefaultCategoryCar=Varsayılan taşıma modu DefaultRangeNumber=Varsayılan aralık numarası Error_EXPENSEREPORT_ADDON_NotDefined=Error, the rule for expense report numbering ref was not defined into setup of module 'Expense Report' @@ -99,34 +99,34 @@ ExpenseReportRef=Ref. expense report ValidateAndSubmit=Doğrula ve onay için gönder ValidatedWaitingApproval=Doğrulanmış (onay bekliyor) NOT_AUTHOR=Bu gider raporunu yazan siz değilsiniz. İşlem iptal edildi. -ConfirmRefuseTrip=Are you sure you want to deny this expense report? +ConfirmRefuseTrip=Bu harcama raporunu reddetmek istediğinizden emin misiniz? ValideTrip=Gider raporunu onayla -ConfirmValideTrip=Are you sure you want to approve this expense report? +ConfirmValideTrip=Bu harcama raporunu onaylamak istediğinizden emin misiniz? PaidTrip=Bir gider raporu öde -ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid"? -ConfirmCancelTrip=Are you sure you want to cancel this expense report? +ConfirmPaidTrip=Bu gider raporunun durumunu "Ödendi" olarak değiştirmek istediğinizden emin misiniz? +ConfirmCancelTrip=Bu harcama raporunu iptal etmek istediğinizden emin misiniz? BrouillonnerTrip=Gider raporu durumunu yeniden "Taslak" durumuna getir -ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft"? +ConfirmBrouillonnerTrip=Bu gider raporunu "Taslak" durumuna taşımak istediğinizden emin misiniz? SaveTrip=Gider raporunu doğrula -ConfirmSaveTrip=Are you sure you want to validate this expense report? +ConfirmSaveTrip=Bu gider raporunu doğrulamak istediğinizden emin misiniz? NoTripsToExportCSV=Bu dönem için dışaaktarılacak gider raporu yok. ExpenseReportPayment=Gider raporu ödemesi ExpenseReportsToApprove=Onaylanacak gider raporları ExpenseReportsToPay=Ödenecek gider raporları -CloneExpenseReport=Clone expense report -ConfirmCloneExpenseReport=Are you sure you want to clone this expense report ? +CloneExpenseReport=Gider raporunu kopyala +ConfirmCloneExpenseReport=Bu gider raporunu kopyalamak istediğinizden emin misiniz? ExpenseReportsIk=Expense report milles index -ExpenseReportsRules=Expense report rules +ExpenseReportsRules=Gider raporu kuralları ExpenseReportIkDesc=You can modify the calculation of kilometers expense by category and range who they are previously defined. d is the distance in kilometers ExpenseReportRulesDesc=You can create or update any rules of calculation. This part will be used when user will create a new expense report expenseReportOffset=Sapma -expenseReportCoef=Coefficient +expenseReportCoef=Katsayı expenseReportTotalForFive=Example with d = 5 expenseReportRangeFromTo=from %d to %d expenseReportRangeMoreThan=more than %d -expenseReportCoefUndefined=(value not defined) -expenseReportCatDisabled=Category disabled - see the c_exp_tax_cat dictionary -expenseReportRangeDisabled=Range disabled - see the c_exp_tax_range dictionay +expenseReportCoefUndefined=(değer tanımlanmamış) +expenseReportCatDisabled=Kategori devre dışı - c_exp_tax_cat sözlüğüne bakın +expenseReportRangeDisabled=Aralık devre dışı - c_exp_tax_range sözlüğüne bakın expenseReportPrintExample=offset + (d x coef) = %s ExpenseReportApplyTo=Apply to ExpenseReportDomain=Domain to apply @@ -135,10 +135,10 @@ ExpenseReportDateStart=Başlama tarihi ExpenseReportDateEnd=Bitiş tarihi ExpenseReportLimitAmount=Limite amount ExpenseReportRestrictive=Restrictive -AllExpenseReport=All type of expense report -OnExpense=Expense line -ExpenseReportRuleSave=Expense report rule saved -ExpenseReportRuleErrorOnSave=Error: %s +AllExpenseReport=Her türlü gider raporu +OnExpense=Gider satırı +ExpenseReportRuleSave=Gider raporu kuralı kaydedildi +ExpenseReportRuleErrorOnSave=Hata: %s RangeNum=Range %d ExpenseReportConstraintViolationError=Constraint violation id [%s]: %s is superior to %s %s diff --git a/htdocs/langs/tr_TR/website.lang b/htdocs/langs/tr_TR/website.lang index 423c33155ca..2a694baa6ac 100644 --- a/htdocs/langs/tr_TR/website.lang +++ b/htdocs/langs/tr_TR/website.lang @@ -13,7 +13,7 @@ WEBSITE_CSS_INLINE=CSS dosya içeriği (tüm sayfalarda ortak) WEBSITE_JS_INLINE=Javascript dosya içeriği (tüm sayfalarda ortak) WEBSITE_HTML_HEADER=Addition at bottom of HTML Header (common to all pages) WEBSITE_ROBOT=Robot dosyası (robots.txt) -WEBSITE_HTACCESS=Website .htaccess file +WEBSITE_HTACCESS=Web sitesinin .htaccess dosyası HtmlHeaderPage=HTML başlığı (yalnızca bu sayfaya özgü) PageNameAliasHelp=Sayfanın adı veya takma adı.
    Bu takma ad, web sitesi bir web sunucusunun (Apacke, Nginx gibi ...) Sanal host'undan çalıştırıldığında bir SEO URL'si oluşturmak için de kullanılır. Bu takma adı düzenlemek için "%s" düşmesini kullanın. EditTheWebSiteForACommonHeader=Note: If you want to define a personalized header for all pages, edit the header on the site level instead of on the page/container. @@ -54,13 +54,13 @@ YouCanEditHtmlSourceckeditor=Düzenleyicideki "Kaynak" düğmesini kullanarak HT YouCanEditHtmlSource=
    You can include PHP code into this source using tags <?php ?>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs.

    You can also include content of another Page/Container with the following syntax:
    <?php includeContainer('alias_of_container_to_include'); ?>

    You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):
    <?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

    To add a link to another page, use the syntax:
    <a href="alias_of_page_to_link_to.php">mylink<a>

    To include a link to download a file stored into the documents directory, use the document.php wrapper:
    Example, for a file into documents/ecm (need to be logged), syntax is:
    <a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
    For a file into documents/medias (open directory for public access), syntax is:
    <a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
    For a file shared with a share link (open access using the sharing hash key of file), syntax is:
    <a href="/document.php?hashp=publicsharekeyoffile">

    To include an image stored into the documents directory, use the viewimage.php wrapper:
    Example, for an image into documents/medias (open directory for public access), syntax is:
    <img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
    ClonePage=Sayfa/kapsayıcı kopyala CloneSite=Siteyi kopyala -SiteAdded=Website added +SiteAdded=Web sitesi eklendi ConfirmClonePage=Please enter code/alias of new page and if it is a translation of the cloned page. PageIsANewTranslation=Yeni sayfa mevcut sayfanın çevirisi mi? LanguageMustNotBeSameThanClonedPage=You clone a page as a translation. The language of the new page must be different than language of source page. ParentPageId=Üst sayfa kimliği WebsiteId=Web Sitesi Kimliği -CreateByFetchingExternalPage=Create page/container by fetching page from external URL... +CreateByFetchingExternalPage=Harici bir URL'den sayfa çekerek sayfa/kapsayıcı oluştur... OrEnterPageInfoManually=Or create page from scratch or from a page template... FetchAndCreate=Getir ve Oluştur ExportSite=Web sitesini dışa aktar @@ -68,8 +68,8 @@ ImportSite=Web sitesi şablonunu içe aktar IDOfPage=Sayfanın kimliği Banner=Banner BlogPost=Blog yazısı -WebsiteAccount=Website account -WebsiteAccounts=Website accounts +WebsiteAccount=Web sitesi hesabı +WebsiteAccounts=Web sitesi hesapları AddWebsiteAccount=Web sitesi hesabı oluştur BackToListOfThirdParty=Üçüncü Parti listesine geri dön DisableSiteFirst=Önce web sitesini devre dışı bırak @@ -89,7 +89,7 @@ CorporateHomePage=Kurumsal Giriş sayfası EmptyPage=Boş sayfa ExternalURLMustStartWithHttp=Harici URL http:// veya https:// ile başlamalıdır ZipOfWebsitePackageToImport=Web sitesi paketinin zip dosyası -ShowSubcontainers=Include dynamic content +ShowSubcontainers=Dinamik içeriği dahil et InternalURLOfPage=Sayfanın iç URL'si ThisPageIsTranslationOf=Bu sayfa/kapsayıcı şunun çevirisidir: ThisPageHasTranslationPages=Bu sayfa/kapsayıcı'nın çevirisi mevcut diff --git a/htdocs/langs/tr_TR/withdrawals.lang b/htdocs/langs/tr_TR/withdrawals.lang index 31f4b4a099f..c0892de25dd 100644 --- a/htdocs/langs/tr_TR/withdrawals.lang +++ b/htdocs/langs/tr_TR/withdrawals.lang @@ -1,23 +1,23 @@ # Dolibarr language file - Source file is en_US - withdrawals -CustomersStandingOrdersArea=Direct debit payment orders area +CustomersStandingOrdersArea=Otomatik ödeme talimatları alanı SuppliersStandingOrdersArea=Direct credit payment orders area StandingOrdersPayment=Direct debit payment orders StandingOrderPayment=Otomatik ödeme talimatı -NewStandingOrder=New direct debit order +NewStandingOrder=Yeni otomatik ödeme talimatı StandingOrderToProcess=İşlenecek WithdrawalsReceipts=Otomatik ödeme talimatları WithdrawalReceipt=Otomatik ödeme talimatı -LastWithdrawalReceipts=Latest %s direct debit files -WithdrawalsLines=Direct debit order lines +LastWithdrawalReceipts=Son %s otomatik ödeme dosyaları +WithdrawalsLines=Otomatik ödeme talimatı satırları RequestStandingOrderToTreat=Request for direct debit payment order to process RequestStandingOrderTreated=Request for direct debit payment order processed NotPossibleForThisStatusOfWithdrawReceiptORLine=Henüz olası değil. Özel satırlarda reddedildi olarak bildirilmeden önce paraçekme durumu 'alacaklandırıldı' olarak ayarlkanmalıdır. -NbOfInvoiceToWithdraw=Nb. of qualified invoice with waiting direct debit order -NbOfInvoiceToWithdrawWithInfo=Nb. of customer invoice with direct debit payment orders having defined bank account information -InvoiceWaitingWithdraw=Invoice waiting for direct debit +NbOfInvoiceToWithdraw=No. of qualified invoice with waiting direct debit order +NbOfInvoiceToWithdrawWithInfo=No. of customer invoice with direct debit payment orders having defined bank account information +InvoiceWaitingWithdraw=Otomatik ödeme için bekleyen fatura AmountToWithdraw=Çekilecek tutar WithdrawsRefused=Direct debit refused -NoInvoiceToWithdraw=No customer invoice with open 'Direct debit requests' is waiting. Go on tab '%s' on invoice card to make a request. +NoInvoiceToWithdraw=Açık 'Otomatik ödeme talepli' bekleyen hiçbir müşteri faturası yok. Bir talepte bulunmak için fatura kartındaki '%s' sekmesine gidin. ResponsibleUser=Sorumlu kullanıcı WithdrawalsSetup=Direct debit payment setup WithdrawStatistics=Direct debit payment statistics @@ -26,7 +26,7 @@ LastWithdrawalReceipt=Latest %s direct debit receipts MakeWithdrawRequest=Make a direct debit payment request WithdrawRequestsDone=%s direct debit payment requests recorded ThirdPartyBankCode=Üçüncü parti banka kodu -NoInvoiceCouldBeWithdrawed=No invoice withdrawed with success. Check that invoices are on companies with a valid default BAN and that BAN has a RUM with mode %s. +NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode %s. ClassCredited=Alacak olarak sınıflandır ClassCreditedConfirm=Bu para çekme makbuzunu bankanıza alacak olarak sınıflandırmak istediğinizden emin misiniz? TransData=Havale tarihi @@ -96,7 +96,7 @@ SEPAFrstOrRecur=Type of payment ModeRECUR=Reccurent payment ModeFRST=One-off payment PleaseCheckOne=Please check one only -DirectDebitOrderCreated=Direct debit order %s created +DirectDebitOrderCreated=Otomatik ödeme talimatı %s oluşturuldu AmountRequested=Amount requested SEPARCUR=SEPA CUR SEPAFRST=SEPA FRST diff --git a/htdocs/langs/uk_UA/banks.lang b/htdocs/langs/uk_UA/banks.lang index c73422c339d..e2b66e85156 100644 --- a/htdocs/langs/uk_UA/banks.lang +++ b/htdocs/langs/uk_UA/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/uz_UZ/banks.lang b/htdocs/langs/uz_UZ/banks.lang index 37a1d03a2d3..5bc061f31f3 100644 --- a/htdocs/langs/uz_UZ/banks.lang +++ b/htdocs/langs/uz_UZ/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/vi_VN/banks.lang b/htdocs/langs/vi_VN/banks.lang index a9828bfcb30..88d213e6e65 100644 --- a/htdocs/langs/vi_VN/banks.lang +++ b/htdocs/langs/vi_VN/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=Add miscellaneous payments SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/zh_CN/banks.lang b/htdocs/langs/zh_CN/banks.lang index 59880dcd7f5..991d3a1d502 100644 --- a/htdocs/langs/zh_CN/banks.lang +++ b/htdocs/langs/zh_CN/banks.lang @@ -164,5 +164,4 @@ AddVariousPayment=添加杂项付款 SEPAMandate=SEPA授权 YourSEPAMandate=您的SEPA授权 FindYourSEPAMandate=这是您的SEPA授权,授权我们公司向您的银行直接扣款。返回签名(扫描签名文档)或通过邮件发送给 -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/zh_TW/banks.lang b/htdocs/langs/zh_TW/banks.lang index 09946509448..56076960df8 100644 --- a/htdocs/langs/zh_TW/banks.lang +++ b/htdocs/langs/zh_TW/banks.lang @@ -1,24 +1,24 @@ # Dolibarr language file - Source file is en_US - banks Bank=銀行 -MenuBankCash=Bank | Cash +MenuBankCash=銀行 | 現金 MenuVariousPayment=雜項付款 MenuNewVariousPayment=新的雜項付款 BankName=銀行名稱 FinancialAccount=帳戶 BankAccount=銀行帳戶 BankAccounts=各式銀行帳戶 -BankAccountsAndGateways=Bank | Gateways +BankAccountsAndGateways=銀行 | 入口 ShowAccount=顯示金額 AccountRef=金融帳戶參考值 -AccountLabel=金融帳戶標簽 +AccountLabel=金融帳戶標籤 CashAccount=現金帳戶 CashAccounts=各式現金帳戶 CurrentAccounts=目前各式帳戶 SavingAccounts=各式儲蓄帳戶 -ErrorBankLabelAlreadyExists=金融帳戶標簽已存在 +ErrorBankLabelAlreadyExists=金融帳戶標籤已存在 BankBalance=餘額 -BankBalanceBefore=Balance before -BankBalanceAfter=Balance after +BankBalanceBefore=餘額前 +BankBalanceAfter=餘額後 BalanceMinimalAllowed=允許的最小餘額 BalanceMinimalDesired=所需的最少餘額 InitialBankBalance=期初餘額 @@ -31,10 +31,10 @@ Reconciliation=調節 RIB=銀行帳戶的號碼 IBAN=IBAN 號碼 BIC=BIC/SWIFT 的號碼 -SwiftValid=BIC/SWIFT valid -SwiftVNotalid=BIC/SWIFT not valid -IbanValid=BAN valid -IbanNotValid=BAN not valid +SwiftValid=BIC/SWIFT 有效 +SwiftVNotalid=BIC/SWIFT 無效 +IbanValid=BAN 有效 +IbanNotValid=BAN 無效 StandingOrders=Direct Debit orders StandingOrder=Direct debit order AccountStatement=帳戶報表 @@ -72,40 +72,40 @@ BankTransactions=銀行分錄 BankTransaction=銀行項目 ListTransactions=分錄明細表 ListTransactionsByCategory=分錄/類別明細表 -TransactionsToConciliate=調整分錄 +TransactionsToConciliate=要調節的分錄 Conciliable=可以調節的 -Conciliate=調節 +Conciliate=要調節 Conciliation=調節 -SaveStatementOnly=Save statement only -ReconciliationLate=Reconciliation late +SaveStatementOnly=只儲存報表 +ReconciliationLate=稍後調節 IncludeClosedAccount=包括已結束帳戶 OnlyOpenedAccount=僅開放的各式帳戶 -AccountToCredit=帳戶信用 -AccountToDebit=帳戶轉帳 +AccountToCredit=要貸方的帳戶 +AccountToDebit=要借方的帳戶 DisableConciliation=此帳戶禁用調節功能 ConciliationDisabled=調節功能禁用 -LinkedToAConciliatedTransaction=Linked to a conciliated entry +LinkedToAConciliatedTransaction=連結到調節項目 StatusAccountOpened=開放 StatusAccountClosed=已結束 AccountIdShort=數字 LineRecord=交易 AddBankRecord=新增一項 AddBankRecordLong=人工方式新增一項 -Conciliated=Reconciled +Conciliated=已調節 ConciliatedBy=由調節 DateConciliating=調節日期 BankLineConciliated=項目已調節 -Reconciled=Reconciled -NotReconciled=Not reconciled +Reconciled=已調節 +NotReconciled=未調節 CustomerInvoicePayment=客戶付款 SupplierInvoicePayment=供應商付款 -SubscriptionPayment=認購款項 +SubscriptionPayment=訂閱付款 WithdrawalPayment=提款支付 SocialContributionPayment=社會/財務稅負繳款單 BankTransfer=銀行轉帳 BankTransfers=銀行轉帳 -MenuBankInternalTransfer=Internal transfer -TransferDesc=Transfer from one account to another one, Dolibarr will write two records (a debit in source account and a credit in target account). The same amount (except sign), label and date will be used for this transaction) +MenuBankInternalTransfer=內部轉帳 +TransferDesc=從某一帳戶轉到另一帳戶時,Dolibarr 會寫成成兩筆記錄(來源帳戶是貸方,目標帳戶是借方)。此交易有相同金額、標籤、日期。 TransferFrom=從 TransferTo=至 TransferFromToDone=從%s%s%s%s轉帳已記錄。 @@ -117,7 +117,7 @@ ConfirmDeleteCheckReceipt=您確認定您要刪除此張支票收據? BankChecks=銀行支票 BankChecksToReceipt=託收票據 ShowCheckReceipt=顯示支票入存收據 -NumberOfCheques=No. of check +NumberOfCheques=票據號碼 DeleteTransaction=刪除項目 ConfirmDeleteTransaction=您確定要刪除此筆項目 ThisWillAlsoDeleteBankRecord=也會刪除產生的銀行項目 @@ -125,7 +125,7 @@ BankMovements=移動 PlannedTransactions=已安排的項目 Graph=圖像 ExportDataset_banque_1=銀行項目及會計項目描述 -ExportDataset_banque_2=Deposit slip +ExportDataset_banque_2=存款單 TransactionOnTheOtherAccount=在其他帳戶的交易 PaymentNumberUpdateSucceeded=付款號碼更新成功 PaymentNumberUpdateFailed=付款號碼無法更新 @@ -133,11 +133,11 @@ PaymentDateUpdateSucceeded=付款日期更新成功 PaymentDateUpdateFailed=付款日期可能無法更新 Transactions=交易 BankTransactionLine=銀行項目 -AllAccounts=All bank and cash accounts +AllAccounts=所有銀行及現金帳戶 BackToAccount=回到帳戶 ShowAllAccounts=顯示所有帳戶 -FutureTransaction=Transaction in future. No way to reconcile. -SelectChequeTransactionAndGenerate=Select/filter checks to include in the check deposit receipt and click on "Create". +FutureTransaction=未來的交易。不可調節。 +SelectChequeTransactionAndGenerate="選擇/篩選器"支票包含在支票存款的收據並點擊“建立”。 InputReceiptNumber=選擇要調節的銀行對帳單。使用可排序的數值: YYYYMM 或 YYYYMMDD EventualyAddCategory=Eventually, specify a category in which to classify the records ToConciliate=調節嗎? @@ -164,5 +164,4 @@ AddVariousPayment=新增雜項付款 SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to -BankAccountReleveModule=Module Bank statement -AutoReportLastAccountStatement=Automatic report account stament +AutoReportLastAccountStatement=Automaticaly fill the field 'numero of bank statement' with last statement numero when making reconciliation diff --git a/htdocs/langs/zh_TW/bills.lang b/htdocs/langs/zh_TW/bills.lang index e7fb3205c2c..0f9294bbede 100644 --- a/htdocs/langs/zh_TW/bills.lang +++ b/htdocs/langs/zh_TW/bills.lang @@ -13,13 +13,13 @@ BillsStatistics=客戶發票統計 BillsStatisticsSuppliers=供應商發票統計 DisabledBecauseDispatchedInBookkeeping=Disabled because invoice was dispatched into bookkeeping DisabledBecauseNotLastInvoice=Disabled because invoice is not erasable. Some invoices were recorded after this one and it will create holes in the counter. -DisabledBecauseNotErasable=Disabled because cannot be erased +DisabledBecauseNotErasable=因為不能刪除所以禁用 InvoiceStandard=標準發票 InvoiceStandardAsk=標準發票 InvoiceStandardDesc=這是一種常見的發票。 InvoiceDeposit=訂金發票 InvoiceDepositAsk=訂金發票 -InvoiceDepositDesc=This kind of invoice is done when a down payment has been received. +InvoiceDepositDesc=當有訂金時這類發票就已完成。 InvoiceProForma=形式發票 InvoiceProFormaAsk=形式發票 InvoiceProFormaDesc=形式發票是發票的形象,但沒有真實的會計價值。 diff --git a/htdocs/langs/zh_TW/members.lang b/htdocs/langs/zh_TW/members.lang index 4547ea00687..f4bbd3d9c1b 100644 --- a/htdocs/langs/zh_TW/members.lang +++ b/htdocs/langs/zh_TW/members.lang @@ -88,7 +88,7 @@ ConfirmDeleteSubscription=Are you sure you want to delete this subscription? Filehtpasswd=htpasswd文件 ValidateMember=驗證會員 ConfirmValidateMember=Are you sure you want to validate this member? -FollowingLinksArePublic=下面的鏈接是沒有任何Dolibarr權限保護打開的網頁。他們不是格式化網頁,提供的例子,說明如何列出成員數據庫。 +FollowingLinksArePublic=The following links are open pages not protected by any Dolibarr permission. They are not formatted pages, provided as example to show how to list members database. PublicMemberList=公共成員名單 BlankSubscriptionForm=Public self-subscription form BlankSubscriptionFormDesc=Dolibarr can provide you a public URL/website to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form may also be automatically provided. @@ -124,7 +124,7 @@ CardContent=內容您的會員卡 ThisIsContentOfYourMembershipRequestWasReceived=We want to let you know that your membership request was received.

    ThisIsContentOfYourMembershipWasValidated=We want to let you know that your membership was validated with the following information:

    ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded.

    -ThisIsContentOfSubscriptionReminderEmail=We want to let you know thet your subscription is about to expire. We hope you can make a renewal of it.

    +ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or is already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you can make a renewal of it.

    ThisIsContentOfYourCard=This is a remind of the information we get about you. Feel free to contact us if something looks wrong.

    DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the e-mail received in case of auto-inscription of a guest DescADHERENT_AUTOREGISTER_NOTIF_MAIL=E-mail received in case of auto-inscription of a guest @@ -188,11 +188,10 @@ MembersByNature=This screen show you statistics on members by nature. MembersByRegion=This screen show you statistics on members by region. VATToUseForSubscriptions=VAT rate to use for subscriptions NoVatOnSubscription=No TVA for subscriptions -MEMBER_PAYONLINE_SENDEMAIL=Email to use for email warning when Dolibarr receive a confirmation of a validated payment for a subscription (Example: paymentdone@example.com) ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for subscription line into invoice: %s NameOrCompany=Name or company SubscriptionRecorded=Subscription recorded NoEmailSentToMember=No email sent to member EmailSentToMember=Email sent to member at %s SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired subscription -SendReminderForExpiredSubscription=Send reminder by email to members when subscription is about to expire (parameter is number of days before end of subscription to send the remind) +SendReminderForExpiredSubscription=Send reminder by email to members when subscription is about to expire (parameter is number of days before end of subscription to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5') diff --git a/htdocs/langs/zh_TW/users.lang b/htdocs/langs/zh_TW/users.lang index cc0c96f5a6c..74ff1311bdc 100644 --- a/htdocs/langs/zh_TW/users.lang +++ b/htdocs/langs/zh_TW/users.lang @@ -35,7 +35,7 @@ SuperAdministrator=超級管理員 SuperAdministratorDesc=全域管理員 AdministratorDesc=管理員 DefaultRights=預設權限 -DefaultRightsDesc=這裏定義預設 權限自動授予一位新建立的用戶(移到用戶卡上改變現有的用戶權限)。 +DefaultRightsDesc=Define here default permissions that are automatically granted to a new created user (Go to user card to change permission of an existing user). DolibarrUsers=Dolibarr用戶 LastName=姓氏 FirstName=名字 @@ -66,7 +66,7 @@ CreateDolibarrThirdParty=建立一位合作方 LoginAccountDisableInDolibarr=在 Dolibarr 中帳戶已禁用。 UsePersonalValue=使用個人設定值 InternalUser=內部用戶 -ExportDataset_user_1=Dolibarr的用戶和屬性 +ExportDataset_user_1=Users and their properties DomainUser=域用戶%s Reactivate=重新啟用 CreateInternalUserDesc=This form allows you to create an user internal to your company/organization. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. @@ -92,8 +92,8 @@ LoginToCreate=登錄創建 NameToCreate=第三黨的名稱創建 YourRole=您的角色 YourQuotaOfUsersIsReached=你的活躍用戶達到配額! -NbOfUsers=用戶數 -NbOfPermissions=Nb of permissions +NbOfUsers=No. of users +NbOfPermissions=No. of permissions DontDowngradeSuperAdmin=只有超級管理員可以降級超級管理員 HierarchicalResponsible=Supervisor HierarchicView=Hierarchical view @@ -108,3 +108,4 @@ UserAccountancyCode=User accounting code UserLogoff=User logout UserLogged=User logged DateEmployment=Date of Employment +DateEmploymentEnd=End date of Employment From 09ce84ca93ba746cc12c7f50dad5f9b48ad331d0 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 21 Dec 2018 16:38:02 +0100 Subject: [PATCH 129/307] FIX avoid Class 'AdherentType' not found --- .../triggers/interface_50_modLdap_Ldapsynchro.class.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php index 1e9c2c2ec31..500f6bfa966 100644 --- a/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php +++ b/htdocs/core/triggers/interface_50_modLdap_Ldapsynchro.class.php @@ -436,9 +436,10 @@ class InterfaceLdapsynchro extends DolibarrTriggers // For member type if (! empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') { - $membertype=new AdherentType($this->db); if ($object->typeid > 0) { + require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"; + $membertype=new AdherentType($this->db); $membertype->fetch($object->typeid); $membertype->listMembersForMemberType(); @@ -555,6 +556,8 @@ class InterfaceLdapsynchro extends DolibarrTriggers // For member type if (! empty($conf->global->LDAP_MEMBER_TYPE_ACTIVE) && (string) $conf->global->LDAP_MEMBER_TYPE_ACTIVE == '1') { + require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"; + /* * Change member info */ @@ -679,6 +682,8 @@ class InterfaceLdapsynchro extends DolibarrTriggers { if ($object->typeid > 0) { + require_once DOL_DOCUMENT_ROOT."/adherents/class/adherent_type.class.php"; + /* * Remove member in member type */ From 33564ddafc9b3567714320a07458b3445f79f296 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 11:57:23 +0100 Subject: [PATCH 130/307] Fix css --- htdocs/core/class/html.form.class.php | 10 ++++++---- htdocs/core/tpl/objectline_create.tpl.php | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 8ba38b81edb..b63e380c2c1 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2491,9 +2491,10 @@ class Form * @param array $ajaxoptions Options for ajax_autocompleter * @param int $hidelabel Hide label (0=no, 1=yes) * @param int $alsoproductwithnosupplierprice 1=Add also product without supplier prices + * @param string $morecss More CSS * @return void */ - function select_produits_fournisseurs($socid, $selected='', $htmlname='productid', $filtertype='', $filtre='', $ajaxoptions=array(), $hidelabel=0, $alsoproductwithnosupplierprice=0) + function select_produits_fournisseurs($socid, $selected='', $htmlname='productid', $filtertype='', $filtre='', $ajaxoptions=array(), $hidelabel=0, $alsoproductwithnosupplierprice=0, $morecss='') { // phpcs:enable global $langs,$conf; @@ -2518,7 +2519,7 @@ class Form } else { - print $this->select_produits_fournisseurs_list($socid,$selected,$htmlname,$filtertype,$filtre,'',-1,0,0,$alsoproductwithnosupplierprice); + print $this->select_produits_fournisseurs_list($socid, $selected, $htmlname, $filtertype, $filtre, '', -1, 0, 0, $alsoproductwithnosupplierprice, $morecss); } } @@ -2536,9 +2537,10 @@ class Form * @param int $outputmode 0=HTML select string, 1=Array * @param int $limit Limit of line number * @param int $alsoproductwithnosupplierprice 1=Add also product without supplier prices + * @param string $morecss Add more CSS * @return array Array of keys for json */ - function select_produits_fournisseurs_list($socid,$selected='',$htmlname='productid',$filtertype='',$filtre='',$filterkey='',$statut=-1,$outputmode=0,$limit=100,$alsoproductwithnosupplierprice=0) + function select_produits_fournisseurs_list($socid,$selected='',$htmlname='productid',$filtertype='',$filtre='',$filterkey='',$statut=-1,$outputmode=0,$limit=100,$alsoproductwithnosupplierprice=0,$morecss='') { // phpcs:enable global $langs,$conf,$db; @@ -2593,7 +2595,7 @@ class Form $num = $this->db->num_rows($result); //$out.=''; + $out.=''; echo '
    '; From 0f06e39d23636bd1e4039ac61a743c79725c798b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 22 Dec 2018 16:55:31 +0100 Subject: [PATCH 131/307] FIX CVE-2018-19992 --- htdocs/adherents/card.php | 6 +++--- htdocs/adherents/type.php | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index c29743b60c4..0d7869d12db 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -951,14 +951,14 @@ else // Address print '
    '.$langs->trans("Address").''; - print ''; + print ''; print '
    '.$langs->trans("Zip").' / '.$langs->trans("Town").''; - print $formcompany->select_ziptown((GETPOST('zipcode','alpha')?GETPOST('zipcode','alpha'):$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6); + print $formcompany->select_ziptown((GETPOST('zipcode','alphanohtml')?GETPOST('zipcode','alphanohtml'):$object->zip),'zipcode',array('town','selectcountry_id','state_id'),6); print ' '; - print $formcompany->select_ziptown((GETPOST('town','alpha')?GETPOST('town','alpha'):$object->town),'town',array('zipcode','selectcountry_id','state_id')); + print $formcompany->select_ziptown((GETPOST('town','alphanohtml')?GETPOST('town','alphanohtml'):$object->town),'town',array('zipcode','selectcountry_id','state_id')); print '
    '; diff --git a/htdocs/user/list.php b/htdocs/user/list.php index d69dfce5f83..dcede3a5576 100644 --- a/htdocs/user/list.php +++ b/htdocs/user/list.php @@ -266,21 +266,21 @@ if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && llxHeader('',$langs->trans("ListOfUsers")); $param=''; -if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.$contextpage; -if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.$limit; +if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); +if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); if ($sall != '') $param.='&sall='.urlencode($sall); -if ($search_user != '') $param.="&search_user=".$search_user; -if ($search_login != '') $param.="&search_login=".$search_login; -if ($search_lastname != '') $param.="&search_lastname=".$search_lastname; -if ($search_firstname != '') $param.="&search_firstname=".$search_firstname; -if ($search_gender != '') $param.="&search_gender=".$search_gender; -if ($search_employee != '') $param.="&search_employee=".$search_employee; -if ($search_accountancy_code != '') $param.="&search_accountancy_code=".$search_accountancy_code; -if ($search_email != '') $param.="&search_email=".$search_email; -if ($search_supervisor > 0) $param.="&search_supervisor=".$search_supervisor; -if ($search_statut != '') $param.="&search_statut=".$search_statut; -if ($optioncss != '') $param.='&optioncss='.$optioncss; -if ($mode != '') $param.='&mode='.$mode; +if ($search_user != '') $param.="&search_user=".urlencode($search_user); +if ($search_login != '') $param.="&search_login=".urlencode($search_login); +if ($search_lastname != '') $param.="&search_lastname=".urlencode($search_lastname); +if ($search_firstname != '') $param.="&search_firstname=".urlencode($search_firstname); +if ($search_gender != '') $param.="&search_gender=".urlencode($search_gender); +if ($search_employee != '') $param.="&search_employee=".urlencode($search_employee); +if ($search_accountancy_code != '') $param.="&search_accountancy_code=".urlencode($search_accountancy_code); +if ($search_email != '') $param.="&search_email=".urlencode($search_email); +if ($search_supervisor > 0) $param.="&search_supervisor=".urlencode($search_supervisor); +if ($search_statut != '') $param.="&search_statut=".urlencode($search_statut); +if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); +if ($mode != '') $param.='&mode='.urlencode($mode); if ($search_categ > 0) $param.="&search_categ=".urlencode($search_categ); // Add $param from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; From 6557dcfb81966c9f497c36d2e60b08f96d501e81 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 23 Dec 2018 00:24:10 +0100 Subject: [PATCH 139/307] CSS --- htdocs/core/class/html.formactions.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.formactions.class.php b/htdocs/core/class/html.formactions.class.php index 0eba0a51e1d..066c2a25a23 100644 --- a/htdocs/core/class/html.formactions.class.php +++ b/htdocs/core/class/html.formactions.class.php @@ -243,7 +243,7 @@ class FormActions print ''; // Ref - print ''; + print ''; // Onwer print ''; + print ''; } print '
    '.$ref.''.$ref.''; if (! empty($action->userownerid)) From 7b61fc8fd1319987ece0e1e141ad8705f45cb173 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 23 Dec 2018 14:03:19 +0100 Subject: [PATCH 140/307] Fix setup of dav module --- htdocs/admin/dav.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/dav.php b/htdocs/admin/dav.php index e882a56e2b8..6f82c4f94a9 100644 --- a/htdocs/admin/dav.php +++ b/htdocs/admin/dav.php @@ -83,7 +83,16 @@ if ($action == 'edit') print '
    '; print $form->textwithpicto($langs->trans($key), $langs->trans($key.'Tooltip')); - print '
    '; + if ($key == 'DAV_ALLOW_PUBLIC_DIR' || $key == 'DAV_ALLOW_ECM_DIR') + { + print $form->selectyesno($key, $conf->global->$key, 1); + } + else + { + print ''; + } + print '
    '; @@ -104,7 +113,16 @@ else { print ''; print $form->textwithpicto($langs->trans($key),$langs->trans($key.'Tooltip')); - print '' . $conf->global->$key . ''; + print ''; + if ($key == 'DAV_ALLOW_PUBLIC_DIR' || $key == 'DAV_ALLOW_ECM_DIR') + { + print yn($conf->global->$key); + } + else + { + print $conf->global->$key; + } + print ''; } print ''; From 730f5d1ad423477ca564652cd3357d978892981b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 23 Dec 2018 14:05:37 +0100 Subject: [PATCH 141/307] Prepare 8.0.4 --- ChangeLog | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/ChangeLog b/ChangeLog index c0e3e277009..255810a05ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,72 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 8.0.4 compared to 8.0.3 ***** +FIX: #10030 better german chart +FIX: #10036 +FIX: #10080 Supplier translations are in english +FIX: #10183 using backport of fix done in 9.0 +FIX: #10218 Bad redirection after deleting a user or group +FIX: #3234 +FIX: #6580 +FIX: #8741 +FIX: #9629 #9625 +FIX: #9971 +FIX: avoid Class 'AdherentType' not found +FIX: Can relaunch install on v8 +FIX: Can't create a thirdparty from member if customer code is mandatory. +FIX: Can't delete a line of minimal stock per warehouse +FIX: check if "entity" is already defined in "$param" +FIX: contact/address tab issue when changing company +FIX: contact/adress tab: when changing company ajax combo, the first contact change is not taken into account +FIX: CVE-2018-19799 +FIX: CVE-2018-19992 +FIX: CVE-2018-19993 +FIX: CVE-2018-19994 +FIX: CVE-2018-19995 and CVE-2018-19998 +FIX: Error reported when creation of thirdparty from member fails +FIX: export only prices of the current entity ! +FIX: Extrafields on shipment module +FIX: filter on product category doesn't work +FIX: form actions: select_type_actions could be too small + bad $db init +FIX: form actions: select_type_actions could be too small + bad init +FIX: fourn payment modes musn't be available on customer docs +FIX: Function updatePrice with wrong parameters +FIX: hidden extrafield +FIX: if qty is 0 +FIX: If we change customer/supplier rule we can't edit old thirdparty. +FIX: lang not loaded +FIX: Lines are not inserted correctly if VAT have code +FIX: marge sign +FIX: Method setValid not found +FIX: Migration do not create not used table +FIX: missing action "edit" for the hook +FIX: missing field "visible" +FIX: Missing last month on vat report per month +FIX: mode is only customer in stats fichinter +FIX: OppStatusShort doesn't exists +FIX: Remote ip detection was wrong with proxy (example: cloudflare) +FIX: Removed not use table +FIX: Replenishment with option STOCK_ALLOW_ADD_LIMIT_STOCK_BY_WAREHOUSE +FIX: responsive +FIX: Same on customer card +FIX: same on lines +FIX: screen size fall +FIX: Select first mail model by default +FIX: slow SQL query on creating a new supplier invoice +FIX: sql query performance on list_qualified_avoir_supplier_invoices. +FIX: supplier order list keep socid +FIX: Same on customer card +FIX: same on lines +FIX: screen size fall +FIX: Select first mail model by default +FIX: slow SQL query on creating a new supplier invoice +FIX: sql query performance on list_qualified_avoir_supplier_invoices. +FIX: supplier order list keep socid +FIX: Vendor translations are in english +FIX: Warning: count() +FIX: We want to be able to send PDF of paid invoices + ***** ChangeLog for 8.0.3 compared to 8.0.2 ***** FIX: #9161 FIX: #9432 From e7b3c9164586242ef08ab8273a0a53a8b9824ba2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 26 Dec 2018 19:10:22 +0100 Subject: [PATCH 142/307] Fix dump file --- dev/initdemo/mysqldump_dolibarr_9.0.0.sql | 167 ------------------ .../mysql/tables/llx_ticket_msg.key.sql | 2 +- 2 files changed, 1 insertion(+), 168 deletions(-) diff --git a/dev/initdemo/mysqldump_dolibarr_9.0.0.sql b/dev/initdemo/mysqldump_dolibarr_9.0.0.sql index fc2be863791..03017dc1c11 100644 --- a/dev/initdemo/mysqldump_dolibarr_9.0.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_9.0.0.sql @@ -13005,36 +13005,6 @@ INSERT INTO `llx_ticket_extrafields` VALUES (1,'2018-06-04 19:36:42',1,NULL,NULL /*!40000 ALTER TABLE `llx_ticket_extrafields` ENABLE KEYS */; UNLOCK TABLES; --- --- Table structure for table `llx_ticket_logs` --- - -DROP TABLE IF EXISTS `llx_ticket_logs`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_ticket_logs` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `entity` int(11) DEFAULT '1', - `fk_track_id` varchar(128) DEFAULT NULL, - `fk_user_create` int(11) DEFAULT NULL, - `datec` datetime DEFAULT NULL, - `message` text, - PRIMARY KEY (`rowid`), - KEY `fk_ticket_logs_fk_track_id` (`fk_track_id`), - CONSTRAINT `fk_ticket_logs_fk_track_id` FOREIGN KEY (`fk_track_id`) REFERENCES `llx_ticket` (`track_id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_ticket_logs` --- - -LOCK TABLES `llx_ticket_logs` WRITE; -/*!40000 ALTER TABLE `llx_ticket_logs` DISABLE KEYS */; -INSERT INTO `llx_ticket_logs` VALUES (1,1,'d42iybp7p6d1cvqi',12,'2018-10-01 03:20:18','Ticket read by Alice Adminson'); -/*!40000 ALTER TABLE `llx_ticket_logs` ENABLE KEYS */; -UNLOCK TABLES; - -- -- Table structure for table `llx_ticket_msg` -- @@ -13066,143 +13036,6 @@ INSERT INTO `llx_ticket_msg` VALUES (1,1,'d42iybp7p6d1cvqi',12,'2018-10-01 03:18 /*!40000 ALTER TABLE `llx_ticket_msg` ENABLE KEYS */; UNLOCK TABLES; --- --- Table structure for table `llx_ticketsup` --- - -DROP TABLE IF EXISTS `llx_ticketsup`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_ticketsup` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `entity` int(11) DEFAULT '1', - `ref` varchar(128) NOT NULL, - `track_id` varchar(128) NOT NULL, - `fk_soc` int(11) DEFAULT '0', - `fk_project` int(11) DEFAULT '0', - `origin_email` varchar(128) DEFAULT NULL, - `fk_user_create` int(11) DEFAULT NULL, - `fk_user_assign` int(11) DEFAULT NULL, - `subject` varchar(255) DEFAULT NULL, - `message` text, - `fk_statut` int(11) DEFAULT NULL, - `resolution` int(11) DEFAULT NULL, - `progress` varchar(100) DEFAULT NULL, - `timing` varchar(20) DEFAULT NULL, - `type_code` varchar(32) DEFAULT NULL, - `category_code` varchar(32) DEFAULT NULL, - `severity_code` varchar(32) DEFAULT NULL, - `datec` datetime DEFAULT NULL, - `date_read` datetime DEFAULT NULL, - `date_close` datetime DEFAULT NULL, - `tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `notify_tiers_at_create` int(11) DEFAULT NULL, - PRIMARY KEY (`rowid`), - UNIQUE KEY `uk_ticketsup_track_id` (`track_id`), - KEY `id_ticketsup_track_id` (`track_id`) -) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_ticketsup` --- - -LOCK TABLES `llx_ticketsup` WRITE; -/*!40000 ALTER TABLE `llx_ticketsup` DISABLE KEYS */; -INSERT INTO `llx_ticketsup` VALUES (16,1,'TS1803-0001','bmhki5neaa7bszvy',64,12,NULL,12,11,'hfghfgbvcbcv','hgfhfghf
    \r\ngdgdgdhghfghf',3,NULL,'100','NORMAL','COM','OTHER','NORMAL','2018-03-13 15:19:47','2018-03-18 21:55:12','2018-04-10 18:00:15','2018-05-01 10:32:20',1),(17,1,'TS1803-0002','ltvd8zthmu5b7v42',148,NULL,NULL,12,NULL,'hfghf','jghjhg',6,NULL,'0',NULL,'COM','OTHER','NORMAL','2018-03-16 13:30:33','2018-03-18 22:00:39',NULL,'2018-03-18 18:27:03',1),(20,1,'TS1803-0005','o9997psaapahwrxi',NULL,NULL,NULL,12,NULL,'khjkhj','mmmmm',1,NULL,'0',NULL,'COM','OTHER','NORMAL','2018-03-18 22:55:56','2018-03-19 14:57:36',NULL,'2018-03-19 10:57:36',0),(21,1,'TS1803-0006','hh2ludsvj32lp8sq',NULL,NULL,NULL,12,NULL,'gdfg','gdfgfd',0,NULL,'0',NULL,'COM','OTHER','NORMAL','2018-03-18 22:56:20',NULL,NULL,'2018-03-18 18:56:20',1),(22,1,'TS1803-0007','4e8iy89hes9a5w8d',NULL,NULL,NULL,12,NULL,'ffffffff','fsdf',0,NULL,'0','NORMAL','COM','OTHER','NORMAL','2018-03-18 23:00:41',NULL,NULL,'2018-04-12 19:41:47',1),(23,1,'TS1804-0008','jbm8vxsqw19817fm',79,NULL,'aaa@aaa.com',NULL,NULL,'ssss','mmm',0,NULL,'0',NULL,'COM','OTHER','NORMAL','2018-04-12 23:20:40',NULL,NULL,'2018-04-12 21:20:40',1),(24,1,'TS1804-0009','q32naisayppjgr5b',NULL,NULL,'f@f.com',NULL,NULL,'sss','mmm',0,NULL,'0',NULL,'COM','OTHER','NORMAL','2018-04-12 23:23:34',NULL,NULL,'2018-04-12 21:23:34',1),(25,1,'TS1804-0010','dst5xryjb55jjxs6',NULL,NULL,'f@f.com',NULL,NULL,'sss','mmm',0,NULL,'0',NULL,'COM','OTHER','NORMAL','2018-04-12 23:31:01',NULL,NULL,'2018-04-12 21:31:01',1),(26,1,'TS1804-0011','qh9ar34ut2shp5rq',151,NULL,'testldr6@dolicloud.com',NULL,NULL,'ppppp','gdgdgdfg',0,NULL,'0',NULL,'COM','OTHER','NORMAL','2018-04-19 15:05:23',NULL,NULL,'2018-04-19 13:05:23',1); -/*!40000 ALTER TABLE `llx_ticketsup` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `llx_ticketsup_extrafields` --- - -DROP TABLE IF EXISTS `llx_ticketsup_extrafields`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_ticketsup_extrafields` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `fk_object` int(11) NOT NULL, - `import_key` varchar(14) DEFAULT NULL, - `aaa` varchar(255) DEFAULT NULL, - `listeonly` varchar(255) DEFAULT NULL, - `bbb` varchar(255) DEFAULT NULL, - PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_ticketsup_extrafields` --- - -LOCK TABLES `llx_ticketsup_extrafields` WRITE; -/*!40000 ALTER TABLE `llx_ticketsup_extrafields` DISABLE KEYS */; -INSERT INTO `llx_ticketsup_extrafields` VALUES (15,'2018-04-12 21:20:40',23,NULL,'aaaa',NULL,NULL),(16,'2018-04-12 21:23:34',24,NULL,'aaa',NULL,NULL),(17,'2018-04-12 21:31:01',25,NULL,'aaa',NULL,NULL),(20,'2018-04-13 10:42:15',22,NULL,'fffppgggffooppmmpp',NULL,NULL),(26,'2018-04-19 13:05:23',26,NULL,'aaa',NULL,NULL),(56,'2018-04-30 08:32:50',16,NULL,'ljklj',NULL,NULL); -/*!40000 ALTER TABLE `llx_ticketsup_extrafields` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `llx_ticketsup_logs` --- - -DROP TABLE IF EXISTS `llx_ticketsup_logs`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_ticketsup_logs` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `entity` int(11) DEFAULT '1', - `fk_track_id` varchar(128) DEFAULT NULL, - `fk_user_create` int(11) DEFAULT NULL, - `datec` datetime DEFAULT NULL, - `message` text, - PRIMARY KEY (`rowid`), - KEY `fk_ticketsup_logs_fk_track_id` (`fk_track_id`), - CONSTRAINT `fk_ticketsup_logs_fk_track_id` FOREIGN KEY (`fk_track_id`) REFERENCES `llx_ticketsup` (`track_id`) -) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_ticketsup_logs` --- - -LOCK TABLES `llx_ticketsup_logs` WRITE; -/*!40000 ALTER TABLE `llx_ticketsup_logs` DISABLE KEYS */; -INSERT INTO `llx_ticketsup_logs` VALUES (14,1,'bmhki5neaa7bszvy',12,'2018-03-16 13:31:15','Change classification : from Other to Other'),(15,1,'bmhki5neaa7bszvy',12,'2018-03-16 13:31:22','Change classification : from Commercial question to Issue or problem'),(16,1,'bmhki5neaa7bszvy',12,'2018-03-18 14:59:27','Ticket assigned to David Doe'),(17,1,'bmhki5neaa7bszvy',12,'2018-03-18 14:59:36','Ticket assigned to hgfhfg hgfh'),(18,1,'bmhki5neaa7bszvy',12,'2018-03-18 14:59:47','Ticket assigned to Sam Scientol'),(19,1,'bmhki5neaa7bszvy',12,'2018-03-18 15:01:20','Ticket assigned to Zack Zeceo'),(20,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:30:49','Ticket read by Alice Adminson'),(22,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:37:42','Status changed : Read to Not read'),(23,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:37:55','Ticket read by Alice Adminson'),(24,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:38:03','Status changed : Read to Not read'),(25,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:38:25','Ticket read by Alice Adminson'),(26,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:38:29','Status changed : Read to Not read'),(27,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:38:45','Ticket read by Alice Adminson'),(28,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:43:30','Status changed : Read to Not read'),(29,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:44:19','Status changed : Not read to Read'),(30,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:44:21','Status changed : Read to Not read'),(31,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:44:25','Ticket read by Alice Adminson'),(32,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:44:29','Status changed : Read to Not read'),(33,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:44:31','Status changed : Not read to Read'),(34,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:44:40','Status changed : Read to Not read'),(35,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:48:06','Ticket read by Alice Adminson'),(36,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:48:10','Status changed : Read to Not read'),(37,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:55:06','Ticket read by Alice Adminson'),(38,1,'bmhki5neaa7bszvy',12,'2018-03-18 21:55:12','Ticket read by Alice Adminson'),(39,1,'ltvd8zthmu5b7v42',12,'2018-03-18 22:00:39','Ticket read by Alice Adminson'),(40,1,'ltvd8zthmu5b7v42',12,'2018-03-18 22:25:01','Status changed : Answered to Assigned'),(41,1,'ltvd8zthmu5b7v42',12,'2018-03-18 22:25:08','Status changed : Assigned to Answered'),(42,1,'ltvd8zthmu5b7v42',12,'2018-03-18 22:25:16','Status changed : Answered to In progress'),(43,1,'ltvd8zthmu5b7v42',12,'2018-03-18 22:27:03','Status changed : In progress to Waiting'),(44,1,'o9997psaapahwrxi',12,'2018-03-19 14:57:35','Ticket read by Alice Adminson'),(45,1,'o9997psaapahwrxi',12,'2018-03-19 14:57:36','Ticket read by Alice Adminson'),(46,1,'bmhki5neaa7bszvy',12,'2018-04-10 17:58:28','Status changed : Lu to En cours'),(47,1,'bmhki5neaa7bszvy',12,'2018-04-10 17:58:44','Ticket clôt par Alice Adminson'),(48,1,'bmhki5neaa7bszvy',12,'2018-04-10 18:00:15','Ticket clôt par Alice Adminson'),(49,1,'bmhki5neaa7bszvy',12,'2018-04-13 12:11:32','Ticket ré-ouvert'),(50,1,'bmhki5neaa7bszvy',12,'2018-04-15 11:45:53','Status changed : assigné to Unread'),(51,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:01:24','Change classification : from to '),(52,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:01:26','Change classification : from to '),(53,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:02:03','Change classification : from to '),(54,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:02:27','Change classification : from to '),(55,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:09:03','Change classification : from to '),(56,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:09:34','Change classification : from to '),(57,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:15:04','Change classification : from to '),(58,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:15:54','Change classification : from to '),(59,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:17:47','Change classification : from to '),(60,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:18:04','Change classification : from to '),(61,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:18:28','Change classification : from to '),(62,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:18:39','Change classification : from to '),(63,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:19:00','Change classification : from to '),(64,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:19:06','Change classification : from to '),(65,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:19:09','Change classification : from to '),(66,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:19:13','Change classification : from to '),(67,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:24:52','Change classification : from to '),(68,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:24:58','Change classification : from to '),(69,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:26:41','Change classification : from to '),(70,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:27:03','Change classification : from to '),(71,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:27:06','Change classification : from to '),(72,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:27:30','Initial message modified \n hgfhfghf\n+ gdgdgd\n'),(73,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:28:13','Initial message modified \n hgfhfghf\n gdgdgd\n'),(74,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:28:28','Initial message modified \n hgfhfghf\n gdgdgd\n'),(75,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:28:47','Initial message modified \n hgfhfghf\n gdgdgd\n'),(76,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:28:55','Initial message modified \n hgfhfghf\n- gdgdgd\n+ gdgdgdhghfghf\n'),(77,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:28:58','Change classification : from to '),(78,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:29:55','Change classification : from to '),(79,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:32:42','Change classification : from to '),(80,1,'bmhki5neaa7bszvy',12,'2018-04-30 10:32:50','Change classification : from to '),(81,1,'bmhki5neaa7bszvy',12,'2018-05-01 12:32:20','Status changed : Unread to Answered'); -/*!40000 ALTER TABLE `llx_ticketsup_logs` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `llx_ticketsup_msg` --- - -DROP TABLE IF EXISTS `llx_ticketsup_msg`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_ticketsup_msg` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `entity` int(11) DEFAULT '1', - `fk_track_id` varchar(128) DEFAULT NULL, - `fk_user_action` int(11) DEFAULT NULL, - `datec` datetime DEFAULT NULL, - `message` text, - `private` int(11) DEFAULT '0', - PRIMARY KEY (`rowid`), - KEY `fk_ticketsup_msg_fk_track_id` (`fk_track_id`), - CONSTRAINT `fk_ticketsup_msg_fk_track_id` FOREIGN KEY (`fk_track_id`) REFERENCES `llx_ticketsup` (`track_id`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_ticketsup_msg` --- - -LOCK TABLES `llx_ticketsup_msg` WRITE; -/*!40000 ALTER TABLE `llx_ticketsup_msg` DISABLE KEYS */; -INSERT INTO `llx_ticketsup_msg` VALUES (1,1,'bmhki5neaa7bszvy',12,'2018-03-16 13:30:57','gdfd',0),(2,1,'ltvd8zthmu5b7v42',12,'2018-03-18 22:24:18','fdsfds',0),(3,1,'ltvd8zthmu5b7v42',12,'2018-03-18 22:24:39','hfghfg',0); -/*!40000 ALTER TABLE `llx_ticketsup_msg` ENABLE KEYS */; -UNLOCK TABLES; - -- -- Table structure for table `llx_tva` -- diff --git a/htdocs/install/mysql/tables/llx_ticket_msg.key.sql b/htdocs/install/mysql/tables/llx_ticket_msg.key.sql index 6998b798c84..f6ff6fc5e88 100755 --- a/htdocs/install/mysql/tables/llx_ticket_msg.key.sql +++ b/htdocs/install/mysql/tables/llx_ticket_msg.key.sql @@ -14,4 +14,4 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . -ALTER TABLE llx_ticket_msg ADD CONSTRAINT fk_ticket_msg_fk_track_id FOREIGN KEY (fk_track_id) REFERENCES llx_ticket (track_id); +--ALTER TABLE llx_ticket_msg ADD CONSTRAINT fk_ticket_msg_fk_track_id FOREIGN KEY (fk_track_id) REFERENCES llx_ticket (track_id); From def732246db1ff5ac9a04d26a60597fc4d44933a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 26 Dec 2018 19:16:05 +0100 Subject: [PATCH 143/307] Clean dump --- dev/initdemo/mysqldump_dolibarr_9.0.0.sql | 94 ----------------------- dev/initdemo/savedemo.sh | 5 ++ 2 files changed, 5 insertions(+), 94 deletions(-) diff --git a/dev/initdemo/mysqldump_dolibarr_9.0.0.sql b/dev/initdemo/mysqldump_dolibarr_9.0.0.sql index 03017dc1c11..c2fc6e39c9f 100644 --- a/dev/initdemo/mysqldump_dolibarr_9.0.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_9.0.0.sql @@ -4242,100 +4242,6 @@ INSERT INTO `llx_c_ticket_type` VALUES (1,1,'COM','10','Commercial question',1,1 /*!40000 ALTER TABLE `llx_c_ticket_type` ENABLE KEYS */; UNLOCK TABLES; --- --- Table structure for table `llx_c_ticketsup_category` --- - -DROP TABLE IF EXISTS `llx_c_ticketsup_category`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_c_ticketsup_category` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `entity` int(11) DEFAULT '1', - `code` varchar(32) NOT NULL, - `pos` varchar(32) NOT NULL, - `label` varchar(128) NOT NULL, - `active` int(11) DEFAULT '1', - `use_default` int(11) DEFAULT '1', - `description` varchar(255) DEFAULT NULL, - PRIMARY KEY (`rowid`), - UNIQUE KEY `uk_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_c_ticketsup_category` --- - -LOCK TABLES `llx_c_ticketsup_category` WRITE; -/*!40000 ALTER TABLE `llx_c_ticketsup_category` DISABLE KEYS */; -INSERT INTO `llx_c_ticketsup_category` VALUES (1,1,'OTHER','10','Other',1,1,NULL); -/*!40000 ALTER TABLE `llx_c_ticketsup_category` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `llx_c_ticketsup_severity` --- - -DROP TABLE IF EXISTS `llx_c_ticketsup_severity`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_c_ticketsup_severity` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `entity` int(11) DEFAULT '1', - `code` varchar(32) NOT NULL, - `pos` varchar(32) NOT NULL, - `label` varchar(128) NOT NULL, - `color` varchar(10) NOT NULL, - `active` int(11) DEFAULT '1', - `use_default` int(11) DEFAULT '1', - `description` varchar(255) DEFAULT NULL, - PRIMARY KEY (`rowid`), - UNIQUE KEY `uk_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_c_ticketsup_severity` --- - -LOCK TABLES `llx_c_ticketsup_severity` WRITE; -/*!40000 ALTER TABLE `llx_c_ticketsup_severity` DISABLE KEYS */; -INSERT INTO `llx_c_ticketsup_severity` VALUES (1,1,'LOW','10','Low','',1,0,NULL),(2,1,'NORMAL','20','Normal','',1,1,NULL),(3,1,'HIGH','30','High','',1,0,NULL),(4,1,'BLOCKING','40','Critical / blocking','',1,0,NULL); -/*!40000 ALTER TABLE `llx_c_ticketsup_severity` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `llx_c_ticketsup_type` --- - -DROP TABLE IF EXISTS `llx_c_ticketsup_type`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_c_ticketsup_type` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `entity` int(11) DEFAULT '1', - `code` varchar(32) NOT NULL, - `pos` varchar(32) NOT NULL, - `label` varchar(128) NOT NULL, - `active` int(11) DEFAULT '1', - `use_default` int(11) DEFAULT '1', - `description` varchar(255) DEFAULT NULL, - PRIMARY KEY (`rowid`), - UNIQUE KEY `uk_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_c_ticketsup_type` --- - -LOCK TABLES `llx_c_ticketsup_type` WRITE; -/*!40000 ALTER TABLE `llx_c_ticketsup_type` DISABLE KEYS */; -INSERT INTO `llx_c_ticketsup_type` VALUES (1,1,'COM','10','Commercial question',1,1,NULL),(2,1,'ISSUE','20','Issue or problem',1,0,NULL),(3,1,'REQUEST','25','Change or enhancement request',1,0,NULL),(4,1,'PROJECT','30','Project',1,0,NULL),(5,1,'OTHER','40','Other',1,0,NULL); -/*!40000 ALTER TABLE `llx_c_ticketsup_type` ENABLE KEYS */; -UNLOCK TABLES; - -- -- Table structure for table `llx_c_tva` -- diff --git a/dev/initdemo/savedemo.sh b/dev/initdemo/savedemo.sh index e94169ff155..1e051b4cded 100755 --- a/dev/initdemo/savedemo.sh +++ b/dev/initdemo/savedemo.sh @@ -191,6 +191,9 @@ export list=" --ignore-table=$base.llx_c_dolicloud_plans --ignore-table=$base.llx_c_pays --ignore-table=$base.llx_c_source + --ignore-table=$base.llx_c_ticketsup_category + --ignore-table=$base.llx_c_ticketsup_severity + --ignore-table=$base.llx_c_ticketsup_type --ignore-table=$base.llx_cabinetmed_c_banques --ignore-table=$base.llx_cabinetmed_c_ccam --ignore-table=$base.llx_cabinetmed_c_examconclusion @@ -248,6 +251,8 @@ export list=" --ignore-table=$base.llx_residence --ignore-table=$base.llx_residence_building --ignore-table=$base.llx_residence_building_links + --ignore-table=$base.llx_societe_rib2 + --ignore-table=$base.llx_ticketsup --ignore-table=$base.llx_ultimatepdf --ignore-table=$base.llx_update_modules --ignore-table=$base.llx_ventilation_achat From 63beb504656ad9db9d5811adfaa6446f67ab44d4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 26 Dec 2018 21:22:12 +0100 Subject: [PATCH 144/307] Fix missing migration of external site module --- htdocs/install/upgrade2.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 1077e37f78e..9315769d756 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -455,6 +455,7 @@ if (! GETPOST('action','aZ09') || preg_match('/upgrade/i',GETPOST('action','aZ09 'MAIN_MODULE_DEPLACEMENT'=>'newboxdefonly', 'MAIN_MODULE_DON'=>'newboxdefonly', 'MAIN_MODULE_ECM'=>'newboxdefonly', + 'MAIN_MODULE_EXTERNALSITE'=>'newboxdefonly', 'MAIN_MODULE_FACTURE'=>'newboxdefonly', 'MAIN_MODULE_FOURNISSEUR'=>'newboxdefonly', 'MAIN_MODULE_HOLIDAY'=>'newboxdefonly', From 0f76279a03d09297e8e7c711792f77d00e2c024a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 03:45:30 +0100 Subject: [PATCH 145/307] FIX Missing token and style --- .../facture/tpl/linkedobjectblock.tpl.php | 4 +-- .../tpl/linkedobjectblockForRec.tpl.php | 32 ++++++++++++------- htdocs/core/class/html.form.class.php | 9 ++++-- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php index 2ed8b081ceb..d57d594beac 100644 --- a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php @@ -47,8 +47,8 @@ foreach($linkedObjectBlock as $key => $objectlink) if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> - trans("CustomerInvoice"); ?> - getNomUrl(1); ?> + trans("CustomerInvoice"); ?> + getNomUrl(1); ?> ref_client; ?> date,'day'); ?> $objectlink) if ($ilink == count($linkedObjectBlock) && empty($noMoreLinkedObjectBlockAfter) && count($linkedObjectBlock) <= 1) $trclass.=' liste_sub_total'; ?> - trans("RepeatableInvoice"); ?> - getNomUrl(1); ?> - - date_when,'day'); ?> - trans("RepeatableInvoice"); ?> + getNomUrl(1); ?> + + date_when,'day'); ?> + rights->facture->lire) { $total = $total + $objectlink->total_ht; echo price($objectlink->total_ht); } ?> - - getLibStatut(3); - ?> - - ">transnoentitiesnoconv("RemoveLink"), 'unlink'); ?> + getLibStatut(3); ?> + ">transnoentitiesnoconv("RemoveLink"), 'unlink'); ?> 1) +{ + ?> + + trans("Total"); ?> + + + + + + + + \ No newline at end of file diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f5af034e43a..618c7832659 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -6257,7 +6257,7 @@ class Form $hookmanager->initHooks(array('commonobject')); $parameters=array( 'morehtmlright' => $morehtmlright, - 'compatibleImportElementsList' =>& $compatibleImportElementsList, + 'compatibleImportElementsList' => &$compatibleImportElementsList, ); $reshook=$hookmanager->executeHooks('showLinkedObjectBlock',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -6434,6 +6434,7 @@ class Form $hookmanager->initHooks(array('commonobject')); $parameters=array('listofidcompanytoscan' => $listofidcompanytoscan); $reshook=$hookmanager->executeHooks('showLinkToObjectBlock',$parameters,$object,$action); // Note that $action and $object may have been modified by hook + if (empty($reshook)) { if (is_array($hookmanager->resArray) && count($hookmanager->resArray)) @@ -6466,9 +6467,11 @@ class Form $num = $this->db->num_rows($resqllist); $i = 0; - print '
    '; - print ''; + print '
    '; + print ''; print ''; + print ''; + print ''; print ''; print ''; print ''; From 294107bba041d5ad58436bb5c0d894220abf1e7b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 04:40:22 +0100 Subject: [PATCH 146/307] FIX vars for substitution must be null if not applicable (and not '') --- htdocs/core/lib/functions.lib.php | 129 +++++++++++++----------- htdocs/core/tpl/massactions_pre.tpl.php | 5 +- 2 files changed, 73 insertions(+), 61 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 248ac312240..5ab77002b5f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5882,38 +5882,41 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob { $substitutionarray['__ID__'] = $object->id; $substitutionarray['__REF__'] = $object->ref; - $substitutionarray['__REFCLIENT__'] = (isset($object->ref_client) ? $object->ref_client : (isset($object->ref_customer) ? $object->ref_customer : '')); - $substitutionarray['__REFSUPPLIER__'] = (isset($object->ref_supplier) ? $object->ref_supplier : ''); + $substitutionarray['__REFCLIENT__'] = (isset($object->ref_client) ? $object->ref_client : (isset($object->ref_customer) ? $object->ref_customer : null)); + $substitutionarray['__REFSUPPLIER__'] = (isset($object->ref_supplier) ? $object->ref_supplier : null); // TODO Remove this $msgishtml = 0; $birthday = dol_print_date($object->birth,'day'); - $substitutionarray['__MEMBER_ID__']=$object->id; - if (method_exists($object, 'getCivilityLabel')) $substitutionarray['__MEMBER_CIVILITY__'] = $object->getCivilityLabel(); - $substitutionarray['__MEMBER_FIRSTNAME__']=$msgishtml?dol_htmlentitiesbr($object->firstname):$object->firstname; - $substitutionarray['__MEMBER_LASTNAME__']=$msgishtml?dol_htmlentitiesbr($object->lastname):$object->lastname; - if (method_exists($object, 'getFullName')) $substitutionarray['__MEMBER_FULLNAME__']=$msgishtml?dol_htmlentitiesbr($object->getFullName($outputlangs)):$object->getFullName($outputlangs); - $substitutionarray['__MEMBER_COMPANY__']=$msgishtml?dol_htmlentitiesbr($object->societe):$object->societe; - $substitutionarray['__MEMBER_ADDRESS__']=$msgishtml?dol_htmlentitiesbr($object->address):$object->address; - $substitutionarray['__MEMBER_ZIP__']=$msgishtml?dol_htmlentitiesbr($object->zip):$object->zip; - $substitutionarray['__MEMBER_TOWN__']=$msgishtml?dol_htmlentitiesbr($object->town):$object->town; - $substitutionarray['__MEMBER_COUNTRY__']=$msgishtml?dol_htmlentitiesbr($object->country):$object->country; - $substitutionarray['__MEMBER_EMAIL__']=$msgishtml?dol_htmlentitiesbr($object->email):$object->email; - $substitutionarray['__MEMBER_BIRTH__']=$msgishtml?dol_htmlentitiesbr($birthday):$birthday; - $substitutionarray['__MEMBER_PHOTO__']=$msgishtml?dol_htmlentitiesbr($object->photo):$object->photo; - $substitutionarray['__MEMBER_LOGIN__']=$msgishtml?dol_htmlentitiesbr($object->login):$object->login; - $substitutionarray['__MEMBER_PASSWORD__']=$msgishtml?dol_htmlentitiesbr($object->pass):$object->pass; - $substitutionarray['__MEMBER_PHONE__']=$msgishtml?dol_htmlentitiesbr($object->phone):$object->phone; - $substitutionarray['__MEMBER_PHONEPRO__']=$msgishtml?dol_htmlentitiesbr($object->phone_perso):$object->phone_perso; - $substitutionarray['__MEMBER_PHONEMOBILE__']=$msgishtml?dol_htmlentitiesbr($object->phone_mobile):$object->phone_mobile; - $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE__'] = dol_print_date($object->first_subscription_date, 'dayrfc'); - $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_START__'] = dol_print_date($object->first_subscription_date_start, 'dayrfc'); - $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_END__'] = dol_print_date($object->first_subscription_date_end, 'dayrfc'); - $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE__'] = dol_print_date($object->last_subscription_date, 'dayrfc'); - $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE_START__'] = dol_print_date($object->last_subscription_date_start, 'dayrfc'); - $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE_END__'] = dol_print_date($object->last_subscription_date_end, 'dayrfc'); + if ($object->id > 0) + { + $substitutionarray['__MEMBER_ID__']=$object->id; + if (method_exists($object, 'getCivilityLabel')) $substitutionarray['__MEMBER_CIVILITY__'] = $object->getCivilityLabel(); + $substitutionarray['__MEMBER_FIRSTNAME__']=$msgishtml?dol_htmlentitiesbr($object->firstname):$object->firstname; + $substitutionarray['__MEMBER_LASTNAME__']=$msgishtml?dol_htmlentitiesbr($object->lastname):$object->lastname; + if (method_exists($object, 'getFullName')) $substitutionarray['__MEMBER_FULLNAME__']=$msgishtml?dol_htmlentitiesbr($object->getFullName($outputlangs)):$object->getFullName($outputlangs); + $substitutionarray['__MEMBER_COMPANY__']=$msgishtml?dol_htmlentitiesbr($object->societe):$object->societe; + $substitutionarray['__MEMBER_ADDRESS__']=$msgishtml?dol_htmlentitiesbr($object->address):$object->address; + $substitutionarray['__MEMBER_ZIP__']=$msgishtml?dol_htmlentitiesbr($object->zip):$object->zip; + $substitutionarray['__MEMBER_TOWN__']=$msgishtml?dol_htmlentitiesbr($object->town):$object->town; + $substitutionarray['__MEMBER_COUNTRY__']=$msgishtml?dol_htmlentitiesbr($object->country):$object->country; + $substitutionarray['__MEMBER_EMAIL__']=$msgishtml?dol_htmlentitiesbr($object->email):$object->email; + $substitutionarray['__MEMBER_BIRTH__']=$msgishtml?dol_htmlentitiesbr($birthday):$birthday; + $substitutionarray['__MEMBER_PHOTO__']=$msgishtml?dol_htmlentitiesbr($object->photo):$object->photo; + $substitutionarray['__MEMBER_LOGIN__']=$msgishtml?dol_htmlentitiesbr($object->login):$object->login; + $substitutionarray['__MEMBER_PASSWORD__']=$msgishtml?dol_htmlentitiesbr($object->pass):$object->pass; + $substitutionarray['__MEMBER_PHONE__']=$msgishtml?dol_htmlentitiesbr($object->phone):$object->phone; + $substitutionarray['__MEMBER_PHONEPRO__']=$msgishtml?dol_htmlentitiesbr($object->phone_perso):$object->phone_perso; + $substitutionarray['__MEMBER_PHONEMOBILE__']=$msgishtml?dol_htmlentitiesbr($object->phone_mobile):$object->phone_mobile; + $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE__'] = dol_print_date($object->first_subscription_date, 'dayrfc'); + $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_START__'] = dol_print_date($object->first_subscription_date_start, 'dayrfc'); + $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_END__'] = dol_print_date($object->first_subscription_date_end, 'dayrfc'); + $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE__'] = dol_print_date($object->last_subscription_date, 'dayrfc'); + $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE_START__'] = dol_print_date($object->last_subscription_date_start, 'dayrfc'); + $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE_END__'] = dol_print_date($object->last_subscription_date_end, 'dayrfc'); + } if (is_object($object) && $object->element == 'societe') { @@ -5945,17 +5948,20 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob if (is_object($object) && $object->element == 'contrat' && is_array($object->lines)) { - $dateplannedstart=''; - $datenextexpiration=''; - foreach($object->lines as $line) + if ($object->id > 0) { - if ($line->date_ouverture_prevue > $dateplannedstart) $dateplannedstart = $line->date_ouverture_prevue; - if ($line->statut == 4 && $line->date_fin_prevue && (! $datenextexpiration || $line->date_fin_prevue < $datenextexpiration)) $datenextexpiration = $line->date_fin_prevue; + $dateplannedstart=''; + $datenextexpiration=''; + foreach($object->lines as $line) + { + if ($line->date_ouverture_prevue > $dateplannedstart) $dateplannedstart = $line->date_ouverture_prevue; + if ($line->statut == 4 && $line->date_fin_prevue && (! $datenextexpiration || $line->date_fin_prevue < $datenextexpiration)) $datenextexpiration = $line->date_fin_prevue; + } + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = dol_print_date($dateplannedstart, 'dayrfc'); + $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = dol_print_date($dateplannedstart, 'standard'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); + $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); } - $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATE__'] = dol_print_date($dateplannedstart, 'dayrfc'); - $substitutionarray['__CONTRACT_HIGHEST_PLANNED_START_DATETIME__'] = dol_print_date($dateplannedstart, 'standard'); - $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = dol_print_date($datenextexpiration, 'dayrfc'); - $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = dol_print_date($datenextexpiration, 'standard'); } // Create dynamic tags for __EXTRAFIELD_FIELD__ @@ -5994,30 +6000,33 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob $paymenturl=$url; } - $substitutionarray['__ONLINE_PAYMENT_TEXT_AND_URL__']=($paymenturl?str_replace('\n', "\n", $outputlangs->trans("PredefinedMailContentLink", $paymenturl)):''); - $substitutionarray['__ONLINE_PAYMENT_URL__']=$paymenturl; + if ($object->id > 0) + { + $substitutionarray['__ONLINE_PAYMENT_TEXT_AND_URL__']=($paymenturl?str_replace('\n', "\n", $outputlangs->trans("PredefinedMailContentLink", $paymenturl)):''); + $substitutionarray['__ONLINE_PAYMENT_URL__']=$paymenturl; - if (! empty($conf->global->PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD) && is_object($object) && $object->element == 'propal') - { - $substitutionarray['__DIRECTDOWNLOAD_URL_PROPOSAL__'] = $object->getLastMainDocLink($object->element); + if (! empty($conf->global->PROPOSAL_ALLOW_EXTERNAL_DOWNLOAD) && is_object($object) && $object->element == 'propal') + { + $substitutionarray['__DIRECTDOWNLOAD_URL_PROPOSAL__'] = $object->getLastMainDocLink($object->element); + } + else $substitutionarray['__DIRECTDOWNLOAD_URL_PROPOSAL__'] = ''; + if (! empty($conf->global->ORDER_ALLOW_EXTERNAL_DOWNLOAD) && is_object($object) && $object->element == 'commande') + { + $substitutionarray['__DIRECTDOWNLOAD_URL_ORDER__'] = $object->getLastMainDocLink($object->element); + } + else $substitutionarray['__DIRECTDOWNLOAD_URL_ORDER__'] = ''; + if (! empty($conf->global->INVOICE_ALLOW_EXTERNAL_DOWNLOAD) && is_object($object) && $object->element == 'facture') + { + $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = $object->getLastMainDocLink($object->element); + } + else $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = ''; } - else $substitutionarray['__DIRECTDOWNLOAD_URL_PROPOSAL__'] = ''; - if (! empty($conf->global->ORDER_ALLOW_EXTERNAL_DOWNLOAD) && is_object($object) && $object->element == 'commande') - { - $substitutionarray['__DIRECTDOWNLOAD_URL_ORDER__'] = $object->getLastMainDocLink($object->element); - } - else $substitutionarray['__DIRECTDOWNLOAD_URL_ORDER__'] = ''; - if (! empty($conf->global->INVOICE_ALLOW_EXTERNAL_DOWNLOAD) && is_object($object) && $object->element == 'facture') - { - $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = $object->getLastMainDocLink($object->element); - } - else $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = ''; } } if (empty($exclude) || ! in_array('objectamount', $exclude)) { - $substitutionarray['__DATE_YMD__'] = is_object($object)?(isset($object->date) ? dol_print_date($object->date, 'day', 0, $outputlangs) : '') : ''; - $substitutionarray['__DATE_DUE_YMD__'] = is_object($object)?(isset($object->date_lim_reglement)? dol_print_date($object->date_lim_reglement, 'day', 0, $outputlangs) : '') : ''; + $substitutionarray['__DATE_YMD__'] = is_object($object)?(isset($object->date) ? dol_print_date($object->date, 'day', 0, $outputlangs) : null) : ''; + $substitutionarray['__DATE_DUE_YMD__'] = is_object($object)?(isset($object->date_lim_reglement) ? dol_print_date($object->date_lim_reglement, 'day', 0, $outputlangs) : null) : ''; $substitutionarray['__AMOUNT__'] = is_object($object)?$object->total_ttc:''; $substitutionarray['__AMOUNT_EXCL_TAX__'] = is_object($object)?$object->total_ht:''; @@ -6025,11 +6034,11 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob if ($onlykey != 2 || $mysoc->useLocalTax(1)) $substitutionarray['__AMOUNT_TAX2__'] = is_object($object)?$object->total_localtax1:''; if ($onlykey != 2 || $mysoc->useLocalTax(2)) $substitutionarray['__AMOUNT_TAX3__'] = is_object($object)?$object->total_localtax2:''; - $substitutionarray['__AMOUNT_FORMATED__'] = is_object($object)?price($object->total_ttc, 0, $outputlangs, 0, 0, -1, $conf->currency):''; - $substitutionarray['__AMOUNT_EXCL_TAX_FORMATED__'] = is_object($object)?price($object->total_ht, 0, $outputlangs, 0, 0, -1, $conf->currency):''; - $substitutionarray['__AMOUNT_VAT_FORMATED__'] = is_object($object)?($object->total_vat?price($object->total_vat, 0, $outputlangs, 0, 0, -1, $conf->currency):price($object->total_tva, 0, $outputlangs, 0, 0, -1, $conf->currency)):''; - if ($onlykey != 2 || $mysoc->useLocalTax(1)) $substitutionarray['__AMOUNT_TAX2_FORMATED__'] = is_object($object)?price($object->total_localtax1, 0, $outputlangs, 0, 0, -1, $conf->currency):''; - if ($onlykey != 2 || $mysoc->useLocalTax(2)) $substitutionarray['__AMOUNT_TAX3_FORMATED__'] = is_object($object)?price($object->total_localtax2, 0, $outputlangs, 0, 0, -1, $conf->currency):''; + $substitutionarray['__AMOUNT_FORMATED__'] = is_object($object)?($object->total_ttc ? price($object->total_ttc, 0, $outputlangs, 0, 0, -1, $conf->currency) : null):''; + $substitutionarray['__AMOUNT_EXCL_TAX_FORMATED__'] = is_object($object)?($object->total_ht ? price($object->total_ht, 0, $outputlangs, 0, 0, -1, $conf->currency) : null):''; + $substitutionarray['__AMOUNT_VAT_FORMATED__'] = is_object($object)?($object->total_vat ? price($object->total_vat, 0, $outputlangs, 0, 0, -1, $conf->currency): ($object->total_tva ? price($object->total_tva, 0, $outputlangs, 0, 0, -1, $conf->currency) : null)):''; + if ($onlykey != 2 || $mysoc->useLocalTax(1)) $substitutionarray['__AMOUNT_TAX2_FORMATED__'] = is_object($object)? ($object->total_localtax1 ? price($object->total_localtax1, 0, $outputlangs, 0, 0, -1, $conf->currency) : null):''; + if ($onlykey != 2 || $mysoc->useLocalTax(2)) $substitutionarray['__AMOUNT_TAX3_FORMATED__'] = is_object($object)? ($object->total_localtax2 ? price($object->total_localtax2, 0, $outputlangs, 0, 0, -1, $conf->currency) : null):''; // TODO Add keys for foreign multicurrency @@ -6140,10 +6149,12 @@ function make_substitutions($text, $substitutionarray, $outputlangs=null) // Make substitition for array $substitutionarray foreach ($substitutionarray as $key => $value) { + if (! isset($value)) continue; // If value is null, it same than not having substitution key at all into array, we do not replace. + if ($key == '__SIGNATURE__' && (! empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))) $value=''; // Protection if ($key == '__USER_SIGNATURE__' && (! empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN))) $value=''; // Protection - $text=str_replace("$key","$value",$text); // We must keep the " to work when value is 123.5 for example + $text=str_replace("$key", "$value", $text); // We must keep the " to work when value is 123.5 for example } return $text; diff --git a/htdocs/core/tpl/massactions_pre.tpl.php b/htdocs/core/tpl/massactions_pre.tpl.php index a66e9ba270e..9c586f82e9e 100644 --- a/htdocs/core/tpl/massactions_pre.tpl.php +++ b/htdocs/core/tpl/massactions_pre.tpl.php @@ -44,7 +44,7 @@ if ($massaction == 'presend') $listofselectedid = array(); $listofselectedthirdparties = array(); $listofselectedref = array(); - + if (! GETPOST('cancel', 'alpha')) { foreach ($arrayofselected as $toselectid) @@ -111,7 +111,7 @@ if ($massaction == 'presend') } else { $formmail->withtoreadonly = 1; } - + $formmail->withoptiononeemailperrecipient = (count($listofselectedref) == 1 || empty($liste))? 0 : ((GETPOST('oneemailperrecipient')=='on')?1:-1); $formmail->withto = empty($liste)?(GETPOST('sendto','alpha')?GETPOST('sendto','alpha'):array()):$liste; $formmail->withtofree = empty($liste)?1:0; @@ -131,6 +131,7 @@ if ($massaction == 'presend') // Make substitution in email content $substitutionarray = getCommonSubstitutionArray($langs, 0, null, $object); + $substitutionarray['__EMAIL__'] = $sendto; $substitutionarray['__CHECK_READ__'] = (is_object($object) && is_object($object->thirdparty)) ? '' : ''; $substitutionarray['__PERSONALIZED__'] = ''; // deprecated From 2b0240a1e25cad136d5320090051f7d039381e9d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 05:48:10 +0100 Subject: [PATCH 147/307] Add log Conflicts: htdocs/core/actions_massactions.inc.php --- htdocs/core/actions_massactions.inc.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index b56f40c269d..0018b2985fe 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -423,6 +423,8 @@ if (! $error && $massaction == 'confirm_presend') // Insert logs into agenda foreach($listofqualifiedobj as $objid => $objectobj) { + dol_syslog("Try to insert email event into agenda for objid=".$objid." => objectobj=".get_class($objectobj)); + /*if ($objectclass == 'Propale') $actiontypecode='AC_PROP'; if ($objectclass == 'Commande') $actiontypecode='AC_COM'; if ($objectclass == 'Facture') $actiontypecode='AC_FAC'; From 8ab2ef0cf098d0c738bef93144de85497bd21358 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 05:58:27 +0100 Subject: [PATCH 148/307] Add log --- htdocs/core/class/interfaces.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/interfaces.class.php b/htdocs/core/class/interfaces.class.php index abcf2132efa..903a05981b6 100644 --- a/htdocs/core/class/interfaces.class.php +++ b/htdocs/core/class/interfaces.class.php @@ -61,7 +61,7 @@ class Interfaces * @param string $action Trigger event code * @param object $object Objet concerned. Some context information may also be provided into array property object->context. * @param User $user Objet user - * @param Lang $langs Objet lang + * @param Translate $langs Objet lang * @param Conf $conf Objet conf * @return int Nb of triggers ran if no error, -Nb of triggers with errors otherwise. */ @@ -86,6 +86,7 @@ class Interfaces global $db; $user = new User($db); } + dol_syslog(get_class($this)."::run_triggers action=".$action." Launch run_triggers", LOG_DEBUG); $nbfile = $nbtotal = $nbok = $nbko = 0; @@ -94,6 +95,7 @@ class Interfaces $orders = array(); $i=0; + $dirtriggers=array_merge(array('/core/triggers'),$conf->modules_parts['triggers']); foreach($dirtriggers as $reldir) { @@ -179,7 +181,7 @@ class Interfaces if (method_exists($objMod, 'runTrigger')) // New method to implement { - //dol_syslog(get_class($this)."::run_triggers action=".$action." Launch runTrigger for file '".$files[$key]."'", LOG_DEBUG); + dol_syslog(get_class($this)."::run_triggers action=".$action." Launch runTrigger for file '".$files[$key]."'", LOG_DEBUG); $result=$objMod->runTrigger($action,$object,$user,$langs,$conf); } elseif (method_exists($objMod, 'run_trigger')) // Deprecated method From deba3249f8417ba9cc2948838c3283c1c5fe645c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 06:04:55 +0100 Subject: [PATCH 149/307] FIX Bad trigger name --- htdocs/core/actions_massactions.inc.php | 12 ++++++------ htdocs/core/class/interfaces.class.php | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 0018b2985fe..86278a353f5 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -450,14 +450,14 @@ if (! $error && $massaction == 'confirm_presend') $objectobj->elementtype = $objectobj->element; $triggername = strtoupper(get_class($objectobj)) .'_SENTBYMAIL'; - if ($triggername == 'SOCIETE_SENTBYMAIL') $triggername = 'COMPANY_SENTBYEMAIL'; - if ($triggername == 'CONTRAT_SENTBYMAIL') $triggername = 'CONTRACT_SENTBYEMAIL'; - if ($triggername == 'COMMANDE_SENTBYMAIL') $triggername = 'ORDER_SENTBYEMAIL'; + if ($triggername == 'SOCIETE_SENTBYMAIL') $triggername = 'COMPANY_SENTBYMAIL'; + if ($triggername == 'CONTRAT_SENTBYMAIL') $triggername = 'CONTRACT_SENTBYMAIL'; + if ($triggername == 'COMMANDE_SENTBYMAIL') $triggername = 'ORDER_SENTBYMAIL'; if ($triggername == 'FACTURE_SENTBYMAIL') $triggername = 'BILL_SENTBYMAIL'; - if ($triggername == 'EXPEDITION_SENTBYMAIL') $triggername = 'SHIPPING_SENTBYEMAIL'; + if ($triggername == 'EXPEDITION_SENTBYMAIL') $triggername = 'SHIPPING_SENTBYMAIL'; if ($triggername == 'COMMANDEFOURNISSEUR_SENTBYMAIL') $triggername = 'ORDER_SUPPLIER_SENTBYMAIL'; - if ($triggername == 'FACTUREFOURNISSEUR_SENTBYMAIL') $triggername = 'BILL_SUPPLIER_SENTBYEMAIL'; - if ($triggername == 'SUPPLIERPROPOSAL_SENTBYMAIL') $triggername = 'PROPOSAL_SUPPLIER_SENTBYEMAIL'; + if ($triggername == 'FACTUREFOURNISSEUR_SENTBYMAIL') $triggername = 'BILL_SUPPLIER_SENTBYMAIL'; + if ($triggername == 'SUPPLIERPROPOSAL_SENTBYMAIL') $triggername = 'PROPOSAL_SUPPLIER_SENTBYMAIL'; if (! empty($triggername)) { diff --git a/htdocs/core/class/interfaces.class.php b/htdocs/core/class/interfaces.class.php index 903a05981b6..28d202c9219 100644 --- a/htdocs/core/class/interfaces.class.php +++ b/htdocs/core/class/interfaces.class.php @@ -86,7 +86,7 @@ class Interfaces global $db; $user = new User($db); } - dol_syslog(get_class($this)."::run_triggers action=".$action." Launch run_triggers", LOG_DEBUG); + //dol_syslog(get_class($this)."::run_triggers action=".$action." Launch run_triggers", LOG_DEBUG); $nbfile = $nbtotal = $nbok = $nbko = 0; From 64de31ef67f5ea4419a134933e04c7f42a92174a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 06:06:32 +0100 Subject: [PATCH 150/307] Clean log --- htdocs/core/class/interfaces.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/interfaces.class.php b/htdocs/core/class/interfaces.class.php index 28d202c9219..6f43643eeb7 100644 --- a/htdocs/core/class/interfaces.class.php +++ b/htdocs/core/class/interfaces.class.php @@ -181,7 +181,7 @@ class Interfaces if (method_exists($objMod, 'runTrigger')) // New method to implement { - dol_syslog(get_class($this)."::run_triggers action=".$action." Launch runTrigger for file '".$files[$key]."'", LOG_DEBUG); + //dol_syslog(get_class($this)."::run_triggers action=".$action." Launch runTrigger for file '".$files[$key]."'", LOG_DEBUG); $result=$objMod->runTrigger($action,$object,$user,$langs,$conf); } elseif (method_exists($objMod, 'run_trigger')) // Deprecated method From cd53e22d64658a202ac9a278a33345338a5eb515 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 06:16:54 +0100 Subject: [PATCH 151/307] FIX Edit description of event --- htdocs/comm/action/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 22648189f99..8ced2826155 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -432,8 +432,8 @@ if ($action == 'update') foreach ($socpeopleassigned as $cid) $object->socpeopleassigned[$cid] = array('id' => $cid); $object->contactid = GETPOST("contactid",'int'); $object->fk_project = GETPOST("projectid",'int'); - $object->note = GETPOST("note"); - $object->pnote = GETPOST("note"); + $object->note = GETPOST("note","none"); // deprecated + $object->note_private= GETPOST("note","none"); $object->fk_element = GETPOST("fk_element"); $object->elementtype = GETPOST("elementtype"); From 9842f50942ab09c7b3bc58254255df02b5f056b3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 27 Dec 2018 21:16:33 +0100 Subject: [PATCH 152/307] Fix substitution for members --- htdocs/adherents/class/adherent.class.php | 30 +++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 1ce440b3afb..3c123a4b8da 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -325,22 +325,22 @@ class Adherent extends CommonObject // Substitutions $substitutionarray=array( '__CIVILITY__'=>$this->getCivilityLabel(), - '__FIRSTNAME__'=>$msgishtml?dol_htmlentitiesbr($this->firstname):$this->firstname, - '__LASTNAME__'=>$msgishtml?dol_htmlentitiesbr($this->lastname):$this->lastname, + '__FIRSTNAME__'=>$msgishtml?dol_htmlentitiesbr($this->firstname):($this->firstname?$this->firstname:''), + '__LASTNAME__'=>$msgishtml?dol_htmlentitiesbr($this->lastname):($this->lastname?$this->lastname:''), '__FULLNAME__'=>$msgishtml?dol_htmlentitiesbr($this->getFullName($langs)):$this->getFullName($langs), - '__COMPANY__'=>$msgishtml?dol_htmlentitiesbr($this->societe):$this->societe, - '__ADDRESS__'=>$msgishtml?dol_htmlentitiesbr($this->address):$this->address, - '__ZIP__'=>$msgishtml?dol_htmlentitiesbr($this->zip):$this->zip, - '__TOWN__'=>$msgishtml?dol_htmlentitiesbr($this->town):$this->town, - '__COUNTRY__'=>$msgishtml?dol_htmlentitiesbr($this->country):$this->country, - '__EMAIL__'=>$msgishtml?dol_htmlentitiesbr($this->email):$this->email, - '__BIRTH__'=>$msgishtml?dol_htmlentitiesbr($birthday):$birthday, - '__PHOTO__'=>$msgishtml?dol_htmlentitiesbr($this->photo):$this->photo, - '__LOGIN__'=>$msgishtml?dol_htmlentitiesbr($this->login):$this->login, - '__PASSWORD__'=>$msgishtml?dol_htmlentitiesbr($this->pass):$this->pass, - '__PHONE__'=>$msgishtml?dol_htmlentitiesbr($this->phone):$this->phone, - '__PHONEPRO__'=>$msgishtml?dol_htmlentitiesbr($this->phone_perso):$this->phone_perso, - '__PHONEMOBILE__'=>$msgishtml?dol_htmlentitiesbr($this->phone_mobile):$this->phone_mobile, + '__COMPANY__'=>$msgishtml?dol_htmlentitiesbr($this->societe):($this->societe?$this->societe:''), + '__ADDRESS__'=>$msgishtml?dol_htmlentitiesbr($this->address):($this->address?$this->address:''), + '__ZIP__'=>$msgishtml?dol_htmlentitiesbr($this->zip):($this->zip?$this->zip:''), + '__TOWN__'=>$msgishtml?dol_htmlentitiesbr($this->town):($this->town?$this->town:''), + '__COUNTRY__'=>$msgishtml?dol_htmlentitiesbr($this->country):($this->country?$this->country:''), + '__EMAIL__'=>$msgishtml?dol_htmlentitiesbr($this->email):($this->email?$this->email:''), + '__BIRTH__'=>$msgishtml?dol_htmlentitiesbr($birthday):($birthday?$birthday:''), + '__PHOTO__'=>$msgishtml?dol_htmlentitiesbr($this->photo):($this->photo?$this->photo:''), + '__LOGIN__'=>$msgishtml?dol_htmlentitiesbr($this->login):($this->login?$this->login:''), + '__PASSWORD__'=>$msgishtml?dol_htmlentitiesbr($this->pass):($this->pass?$this->pass:''), + '__PHONE__'=>$msgishtml?dol_htmlentitiesbr($this->phone):($this->phone?$this->phone:''), + '__PHONEPRO__'=>$msgishtml?dol_htmlentitiesbr($this->phone_perso):($this->phone_perso?$this->phone_perso:''), + '__PHONEMOBILE__'=>$msgishtml?dol_htmlentitiesbr($this->phone_mobile):($this->phone_mobile?$this->phone_mobile:'') ); complete_substitutions_array($substitutionarray, $langs, $this); From 3cd91d7c66584ae3fc8778540a2e8e121de8d3f1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 28 Dec 2018 00:41:05 +0100 Subject: [PATCH 153/307] Fix look and feel v9 (autofocus) --- htdocs/core/search_page.php | 5 ++++- htdocs/main.inc.php | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/htdocs/core/search_page.php b/htdocs/core/search_page.php index acf2f788802..c3ed5a4aacc 100644 --- a/htdocs/core/search_page.php +++ b/htdocs/core/search_page.php @@ -81,6 +81,7 @@ else $showtitlebefore = GETPOST('showtitlebefore','int'); include DOL_DOCUMENT_ROOT.'/core/ajax/selectsearchbox.php'; + $i=0; $accesskeyalreadyassigned=array(); foreach($arrayresult as $key => $val) { @@ -94,7 +95,9 @@ else $accesskey=$val['label'][0]; $accesskeyalreadyassigned[$accesskey]=$accesskey; } - $searchform.=printSearchForm($urlaction, $urlaction, $val['label'], 'minwidth200', $keysearch, $accesskey, $key, img_picto('',$val['img'],'', 0, 1), $showtitlebefore); + $searchform.=printSearchForm($urlaction, $urlaction, $val['label'], 'minwidth200', $keysearch, $accesskey, $key, img_picto('',$val['img'],'', 0, 1), $showtitlebefore, ($i>0?0:1)); + + $i++; } } diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 9afed25286c..27e3b84b1de 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1740,7 +1740,7 @@ function left_menu($menu_array_before, $helppagename='', $notused='', $menu_arra if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) || empty($conf->use_javascript_ajax)) { $urltosearch=DOL_URL_ROOT.'/core/search_page.php?showtitlebefore=1'; - $searchform=''; + $searchform=''; } elseif ($conf->use_javascript_ajax && ! empty($conf->global->MAIN_USE_OLD_SEARCH_FORM)) { @@ -1935,9 +1935,10 @@ function getHelpParamFor($helppagename,$langs) * @param string $prefhtmlinputname Complement for id to avoid multiple same id in the page * @param string $img Image to use * @param string $showtitlebefore Show title before input text instead of into placeholder. This can be set when output is dedicated for text browsers. + * @param string $autofocus Set autofocus on field * @return string */ -function printSearchForm($urlaction, $urlobject, $title, $htmlmorecss, $htmlinputname, $accesskey='', $prefhtmlinputname='',$img='', $showtitlebefore=0) +function printSearchForm($urlaction, $urlobject, $title, $htmlmorecss, $htmlinputname, $accesskey='', $prefhtmlinputname='',$img='', $showtitlebefore=0, $autofocus=0) { global $conf,$langs,$user; @@ -1951,6 +1952,7 @@ function printSearchForm($urlaction, $urlobject, $title, $htmlmorecss, $htmlinpu $ret.=' style="text-indent: 22px; background-image: url(\''.$img.'\'); background-repeat: no-repeat; background-position: 3px;"'; $ret.=($accesskey?' accesskey="'.$accesskey.'"':''); $ret.=' placeholder="'.strip_tags($title).'"'; + $ret.=($autofocus?' autofocus':''); $ret.=' name="'.$htmlinputname.'" id="'.$prefhtmlinputname.$htmlinputname.'" />'; //$ret.=''; $ret.='
    '; if ($action == 'editconditions') { - $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id',1); + $form->form_conditions_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->cond_reglement_id, 'cond_reglement_id', 1); } else { @@ -346,7 +346,7 @@ if ($object->id > 0) print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->mode_reglement_id,'mode_reglement_id', 'CRDT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); } else { diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 618c7832659..51a36d758ee 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4296,9 +4296,10 @@ class Form * @param string $htmlname Name of select html field * @param string $filtertype To filter on field type in llx_c_paiement (array('code'=>xx,'label'=>zz)) * @param int $active Active or not, -1 = all + * @param int $addempty 1=Add empty entry * @return void */ - function form_modes_reglement($page, $selected='', $htmlname='mode_reglement_id', $filtertype='', $active=1) + function form_modes_reglement($page, $selected='', $htmlname='mode_reglement_id', $filtertype='', $active=1, $addempty=0) { // phpcs:enable global $langs; @@ -4307,7 +4308,7 @@ class Form print ''; print ''; print ''; - $this->select_types_paiements($selected,$htmlname,$filtertype,0,0,0,0,$active); + $this->select_types_paiements($selected, $htmlname, $filtertype, 0, $addempty, 0, 0, $active); print ''; print ''; } From 7b91c14cb332edb1901ac917849b6c50ed42ea99 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 28 Dec 2018 23:13:39 +0100 Subject: [PATCH 158/307] FIX sql error when resetting payment mode / term --- htdocs/core/class/commonobject.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 13cdfe1c495..3b7da9fc1ed 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1777,7 +1777,7 @@ abstract class CommonObject if (get_class($this) == 'Fournisseur') $fieldname = 'mode_reglement_supplier'; $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql .= ' SET '.$fieldname.' = '.$id; + $sql .= ' SET '.$fieldname.' = '.(($id > 0 || $id == '0') ? $id : 'NULL'); $sql .= ' WHERE rowid='.$this->id; if ($this->db->query($sql)) @@ -1962,7 +1962,7 @@ abstract class CommonObject if (get_class($this) == 'Fournisseur') $fieldname = 'cond_reglement_supplier'; $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql .= ' SET '.$fieldname.' = '.$id; + $sql .= ' SET '.$fieldname.' = '.(($id > 0 || $id == '0') ? $id : 'NULL'); $sql .= ' WHERE rowid='.$this->id; if ($this->db->query($sql)) From 0353bd53020c65ca660351e66ac4824c97a1ae86 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 28 Dec 2018 23:16:44 +0100 Subject: [PATCH 159/307] FIX sql error when resetting payment mode / term --- htdocs/compta/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index cafd59569bb..8c6a2b9d71a 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -3900,7 +3900,7 @@ else if ($id > 0 || ! empty($ref)) print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); } else { From 3af418349ad54380203655cc36939009113d797f Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Sat, 29 Dec 2018 07:54:30 +0100 Subject: [PATCH 160/307] FIX Can't empty the payment mode --- htdocs/comm/propal/card.php | 2 +- htdocs/commande/card.php | 2 +- htdocs/compta/facture/fiche-rec.php | 4 ++-- htdocs/fourn/card.php | 2 +- htdocs/fourn/commande/card.php | 2 +- htdocs/fourn/facture/card.php | 4 ++-- htdocs/supplier_proposal/card.php | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index 0bd4bb3d0d7..ed1c5c627ee 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -2105,7 +2105,7 @@ if ($action == 'create') print '
    '; print ''; if (! empty($object->brouillon) && $action == 'editmode' && $usercancreate) { - $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); } else { $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none'); } diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 978bc5aa04a..547b3803f7f 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -2191,7 +2191,7 @@ if ($action == 'create' && $user->rights->commande->creer) print ''; print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); } else { $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none'); } diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 856433173ad..8ab4fa6f80f 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -1335,11 +1335,11 @@ else print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'CRDT', 1, 1); } else { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'none', 'CRDT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?facid='.$object->id, $object->mode_reglement_id, 'none'); } print ''; diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 235a3c85396..6a19fc0eaf4 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -256,7 +256,7 @@ if ($object->id > 0) print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->mode_reglement_supplier_id,'mode_reglement_supplier_id'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?socid='.$object->id,$object->mode_reglement_supplier_id,'mode_reglement_supplier_id', 'DBIT', 1, 1); } else { diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 8098946b186..47cdf4a3c53 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -1949,7 +1949,7 @@ elseif (! empty($object->id)) print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'mode_reglement_id'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'mode_reglement_id','DBIT', 1, 1); } else { diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 4f40b0cae36..1aaeb69029a 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -2504,11 +2504,11 @@ else print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'DBIT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'mode_reglement_id', 'DBIT', 1, 1); } else { - $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'none', 'DBIT'); + $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id, $object->mode_reglement_id, 'none'); } print ''; diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 99e99517f75..5ed5a10cfda 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -1511,7 +1511,7 @@ if ($action == 'create') print ''; print ''; if ($action == 'editmode') { - $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id'); + $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'mode_reglement_id', 'DBIT', 1, 1); } else { $form->form_modes_reglement($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->mode_reglement_id, 'none'); } From 3eb5b06472ac674f4bad2f027375ca9ec81aeb4e Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sat, 29 Dec 2018 22:26:06 +0100 Subject: [PATCH 161/307] FIX: Generation of FEC:CompteLib --- htdocs/accountancy/journal/bankjournal.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 6e6a84b1884..172ae6e3748 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -573,35 +573,35 @@ if (! $error && $action == 'writebookkeeping') { $bookkeeping->subledger_label = ''; $bookkeeping->numero_compte = $k; - $accountingaccount->fetch($k, null, true); + $accountingaccount->fetch(null, $k, true); $bookkeeping->label_compte = $accountingaccount->label; } else if ($tabtype[$key] == 'payment_donation') { $bookkeeping->subledger_account = ''; $bookkeeping->subledger_label = ''; $bookkeeping->numero_compte = $k; - $accountingaccount->fetch($k, null, true); + $accountingaccount->fetch(null, $k, true); $bookkeeping->label_compte = $accountingaccount->label; } else if ($tabtype[$key] == 'payment_loan') { $bookkeeping->subledger_account = ''; $bookkeeping->subledger_label = ''; $bookkeeping->numero_compte = $k; - $accountingaccount->fetch($k, null, true); + $accountingaccount->fetch(null, $k, true); $bookkeeping->label_compte = $accountingaccount->label; } else if ($tabtype[$key] == 'payment_various') { $bookkeeping->subledger_account = ''; $bookkeeping->subledger_label = ''; $bookkeeping->numero_compte = $k; - $accountingaccount->fetch($k, null, true); + $accountingaccount->fetch(null, $k, true); $bookkeeping->label_compte = $accountingaccount->label; } else if ($tabtype[$key] == 'banktransfert') { $bookkeeping->subledger_account = ''; $bookkeeping->subledger_label = ''; $bookkeeping->numero_compte = $k; - $accountingaccount->fetch($k, null, true); + $accountingaccount->fetch(null, $k, true); $bookkeeping->label_compte = $accountingaccount->label; } else { if ($tabtype[$key] == 'unknown') // Unknown transaction, we will use a waiting account for thirdparty. From cbcf097ec1761f2a8cf9af2642c65f6bedb2535d Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sat, 29 Dec 2018 23:20:30 +0100 Subject: [PATCH 162/307] FIX: #10221 Html codes in accounting export --- htdocs/accountancy/journal/bankjournal.php | 36 +++++++++++----------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 6e6a84b1884..e19658ad87f 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -1152,28 +1152,28 @@ function getSourceDocRef($val, $typerecord) // WE MUST HAVE SAME REF FOR ALL LINES WE WILL RECORD INTO THE BOOKKEEPING $ref = $val['ref']; if ($ref == '(SupplierInvoicePayment)' || $ref == '(SupplierInvoicePaymentBack)') { - $ref = $langs->trans('Supplier'); + $ref = $langs->transnoentitiesnoconv('Supplier'); } if ($ref == '(CustomerInvoicePayment)' || $ref == '(CustomerInvoicePaymentBack)') { - $ref = $langs->trans('Customer'); + $ref = $langs->transnoentitiesnoconv('Customer'); } if ($ref == '(SocialContributionPayment)') { - $ref = $langs->trans('SocialContribution'); + $ref = $langs->transnoentitiesnoconv('SocialContribution'); } if ($ref == '(DonationPayment)') { - $ref = $langs->trans('Donation'); + $ref = $langs->transnoentitiesnoconv('Donation'); } if ($ref == '(SubscriptionPayment)') { - $ref = $langs->trans('Subscription'); + $ref = $langs->transnoentitiesnoconv('Subscription'); } if ($ref == '(ExpenseReportPayment)') { - $ref = $langs->trans('Employee'); + $ref = $langs->transnoentitiesnoconv('Employee'); } if ($ref == '(LoanPayment)') { - $ref = $langs->trans('Loan'); + $ref = $langs->transnoentitiesnoconv('Loan'); } if ($ref == '(payment_salary)') { - $ref = $langs->trans('Employee'); + $ref = $langs->transnoentitiesnoconv('Employee'); } $sqlmid = ''; @@ -1182,63 +1182,63 @@ function getSourceDocRef($val, $typerecord) $sqlmid = 'SELECT payfac.fk_facture as id, f.facnumber as ref'; $sqlmid .= " FROM ".MAIN_DB_PREFIX."paiement_facture as payfac, ".MAIN_DB_PREFIX."facture as f"; $sqlmid .= " WHERE payfac.fk_facture = f.rowid AND payfac.fk_paiement=" . $val["paymentid"]; - $ref = $langs->trans("Invoice"); + $ref = $langs->transnoentitiesnoconv("Invoice"); } elseif ($typerecord == 'payment_supplier') { $sqlmid = 'SELECT payfac.fk_facturefourn as id, f.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as payfac, ".MAIN_DB_PREFIX."facture_fourn as f"; $sqlmid .= " WHERE payfac.fk_facturefourn = f.rowid AND payfac.fk_paiementfourn=" . $val["paymentsupplierid"]; - $ref = $langs->trans("SupplierInvoice"); + $ref = $langs->transnoentitiesnoconv("SupplierInvoice"); } elseif ($typerecord == 'payment_expensereport') { $sqlmid = 'SELECT e.rowid as id, e.ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "payment_expensereport as pe, " . MAIN_DB_PREFIX . "expensereport as e"; $sqlmid .= " WHERE pe.rowid=" . $val["paymentexpensereport"]." AND pe.fk_expensereport = e.rowid"; - $ref = $langs->trans("ExpenseReport"); + $ref = $langs->transnoentitiesnoconv("ExpenseReport"); } elseif ($typerecord == 'payment_salary') { $sqlmid = 'SELECT s.rowid as ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "payment_salary as s"; $sqlmid .= " WHERE s.rowid=" . $val["paymentsalid"]; - $ref = $langs->trans("SalaryPayment"); + $ref = $langs->transnoentitiesnoconv("SalaryPayment"); } elseif ($typerecord == 'sc') { $sqlmid = 'SELECT sc.rowid as ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "paiementcharge as sc"; $sqlmid .= " WHERE sc.rowid=" . $val["paymentscid"]; - $ref = $langs->trans("SocialContribution"); + $ref = $langs->transnoentitiesnoconv("SocialContribution"); } elseif ($typerecord == 'payment_vat') { $sqlmid = 'SELECT v.rowid as ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "tva as v"; $sqlmid .= " WHERE v.rowid=" . $val["paymentvatid"]; - $ref = $langs->trans("PaymentVat"); + $ref = $langs->transnoentitiesnoconv("PaymentVat"); } elseif ($typerecord == 'payment_donation') { $sqlmid = 'SELECT payd.fk_donation as ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "payment_donation as payd"; $sqlmid .= " WHERE payd.fk_donation=" . $val["paymentdonationid"]; - $ref = $langs->trans("Donation"); + $ref = $langs->transnoentitiesnoconv("Donation"); } elseif ($typerecord == 'payment_loan') { $sqlmid = 'SELECT l.rowid as ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "payment_loan as l"; $sqlmid .= " WHERE l.rowid=" . $val["paymentloanid"]; - $ref = $langs->trans("LoanPayment"); + $ref = $langs->transnoentitiesnoconv("LoanPayment"); } elseif ($typerecord == 'payment_various') { $sqlmid = 'SELECT v.rowid as ref'; $sqlmid .= " FROM " . MAIN_DB_PREFIX . "payment_various as v"; $sqlmid .= " WHERE v.rowid=" . $val["paymentvariousid"]; - $ref = $langs->trans("VariousPayment"); + $ref = $langs->transnoentitiesnoconv("VariousPayment"); } // Add warning if (empty($sqlmid)) @@ -1260,6 +1260,6 @@ function getSourceDocRef($val, $typerecord) else dol_print_error($db); } - $ref = dol_trunc($langs->trans("BankId").' '.$val['fk_bank'].' - '.$ref, 295); // 295 + 3 dots (...) is < than max size of 300 + $ref = dol_trunc($langs->transnoentitiesnoconv("BankId").' '.$val['fk_bank'].' - '.$ref, 295); // 295 + 3 dots (...) is < than max size of 300 return $ref; } From a2075b9d2c771dc68a90f579c14209f013af8b5a Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 30 Dec 2018 20:32:44 +0100 Subject: [PATCH 163/307] V9 look & Feel, etc --- htdocs/compta/sociales/list.php | 2 +- htdocs/compta/tva/list.php | 2 +- htdocs/langs/en_US/blockedlog.lang | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index 636cb92978a..be3e7ea5791 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -19,7 +19,7 @@ */ /** - * \file htdocs/compta/list/index.php + * \file htdocs/compta/sociales/list.php * \ingroup tax * \brief Page to list all social contributions */ diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index 7c0d813c2cb..f0bb433c65c 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -166,7 +166,7 @@ if ($result) print_barre_liste($langs->trans("VATPayments"),$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$totalnboflines, 'title_accountancy', 0, $newcardbutton, '', $limit); print '
    '; - print ''; + print '
    '."\n"; print ''; print ''; diff --git a/htdocs/langs/en_US/blockedlog.lang b/htdocs/langs/en_US/blockedlog.lang index 0dac5a6fd8c..5081b1c0384 100644 --- a/htdocs/langs/en_US/blockedlog.lang +++ b/htdocs/langs/en_US/blockedlog.lang @@ -1,6 +1,6 @@ BlockedLog=Unalterable Logs Field=Field -BlockedLogDesc=This module tracks some events into an unalterable log (that you can't modify once recorded) into a block chain, in real time. This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF535). +BlockedLogDesc=This module tracks some events into an unalterable log (that you can't modify once recorded) into a block chain, in real time. This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525). Fingerprints=Archived events and fingerprints FingerprintsDesc=This is the tool to browse or extract the unalterable logs. Unalterable logs are generated and archived locally into a dedicated table, in real time when you record a business event. You can use this tool to export this archive and save it into an external support (some countries, like France, ask that you do it every year). Note that, there is no feature to purge this log and every change tried to be done directly into this log (by a hacker for example) will be reported with a non-valid fingerprint. If you really need to purge this table because you used your application for a demo/test purpose and want to clean your data to start your production, you can ask your reseller or integrator to reset your database (all your data will be removed). CompanyInitialKey=Company initial key (hash of genesis block) From c4dbf415302002736e73dcf843af8b173c9d0d55 Mon Sep 17 00:00:00 2001 From: Alexandre SPANGARO Date: Sun, 30 Dec 2018 21:21:40 +0100 Subject: [PATCH 164/307] Look & feel --- htdocs/compta/bank/treso.php | 77 ++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php index ef471aea693..3d9ba5e376d 100644 --- a/htdocs/compta/bank/treso.php +++ b/htdocs/compta/bank/treso.php @@ -115,11 +115,10 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) print ''; print ''; print ''; - print ''; + print ''; print ''; // Current balance - print ''; print ''; print ''; @@ -133,7 +132,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) // Remainder to pay in future - $sqls = array(); + $sqls = array(); // Customer invoices $sql = "SELECT 'invoice' as family, f.rowid as objid, f.facnumber as ref, f.total_ttc, f.type, f.date_lim_reglement as dlr,"; @@ -142,9 +141,9 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON f.fk_soc = s.rowid"; $sql.= " WHERE f.entity = ".$conf->entity; $sql.= " AND f.paye = 0 AND f.fk_statut = 1"; // Not paid - $sql.= " AND (f.fk_account IN (0, ".$object->id.") OR f.fk_account IS NULL)"; // Id bank account of invoice - $sql.= " ORDER BY dlr ASC"; - $sqls[] = $sql; + $sql.= " AND (f.fk_account IN (0, ".$object->id.") OR f.fk_account IS NULL)"; // Id bank account of invoice + $sql.= " ORDER BY dlr ASC"; + $sqls[] = $sql; // Supplier invoices $sql = " SELECT 'invoice_supplier' as family, ff.rowid as objid, ff.ref as ref, ff.ref_supplier as ref_supplier, (-1*ff.total_ttc) as total_ttc, ff.type, ff.date_lim_reglement as dlr,"; @@ -153,51 +152,51 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON ff.fk_soc = s.rowid"; $sql.= " WHERE ff.entity = ".$conf->entity; $sql.= " AND ff.paye = 0 AND fk_statut = 1"; // Not paid - $sql.= " AND (ff.fk_account IN (0, ".$object->id.") OR ff.fk_account IS NULL)"; // Id bank account of supplier invoice - $sql.= " ORDER BY dlr ASC"; - $sqls[] = $sql; + $sql.= " AND (ff.fk_account IN (0, ".$object->id.") OR ff.fk_account IS NULL)"; // Id bank account of supplier invoice + $sql.= " ORDER BY dlr ASC"; + $sqls[] = $sql; // Social contributions $sql = " SELECT 'social_contribution' as family, cs.rowid as objid, cs.libelle as ref, (-1*cs.amount) as total_ttc, ccs.libelle as type, cs.date_ech as dlr"; - $sql.= ", cs.fk_account"; + $sql.= ", cs.fk_account"; $sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as cs"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_chargesociales as ccs ON cs.fk_type = ccs.id"; $sql.= " WHERE cs.entity = ".$conf->entity; $sql.= " AND cs.paye = 0"; // Not paid - $sql.= " AND (cs.fk_account IN (0, ".$object->id.") OR cs.fk_account IS NULL)"; // Id bank account of social contribution + $sql.= " AND (cs.fk_account IN (0, ".$object->id.") OR cs.fk_account IS NULL)"; // Id bank account of social contribution $sql.= " ORDER BY dlr ASC"; - $sqls[] = $sql; + $sqls[] = $sql; - // others sql - $parameters = array(); - $reshook = $hookmanager->executeHooks('addMoreSQL', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - if(empty($reshook) and isset($hookmanager->resArray['sql'])){ - $sqls[] = $hookmanager->resArray['sql']; - } + // others sql + $parameters = array(); + $reshook = $hookmanager->executeHooks('addMoreSQL', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if(empty($reshook) and isset($hookmanager->resArray['sql'])){ + $sqls[] = $hookmanager->resArray['sql']; + } $error=0; $tab_sqlobjOrder=array(); $tab_sqlobj=array(); - foreach($sqls as $sql){ - $resql = $db->query($sql); - if($resql){ - while($sqlobj = $db->fetch_object($resql)){ - $tab_sqlobj[] = $sqlobj; - $tab_sqlobjOrder[]= $db->jdate($sqlobj->dlr); - } - $db->free($resql); - }else{ - $error++; - } - } + foreach($sqls as $sql){ + $resql = $db->query($sql); + if($resql){ + while($sqlobj = $db->fetch_object($resql)){ + $tab_sqlobj[] = $sqlobj; + $tab_sqlobjOrder[]= $db->jdate($sqlobj->dlr); + } + $db->free($resql); + }else{ + $error++; + } + } // Sort array if (! $error) { array_multisort($tab_sqlobjOrder,$tab_sqlobj); - //Apply distinct filter + // Apply distinct filter foreach ($tab_sqlobj as $key=>$value) { $tab_sqlobj[$key] = "'" . serialize($value) . "'"; } @@ -262,13 +261,13 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) $paiement = -1*$socialcontribstatic->getSommePaiement(); // Payment already done } - $parameters = array('obj' => $obj); - $reshook = $hookmanager->executeHooks('moreFamily', $parameters, $object, $action); // Note that $action and $object may have been modified by hook - if(empty($reshook)){ - $ref = isset($hookmanager->resArray['ref']) ? $hookmanager->resArray['ref'] : ''; - $refcomp = isset($hookmanager->resArray['refcomp']) ? $hookmanager->resArray['refcomp'] : ''; - $paiement = isset($hookmanager->resArray['paiement']) ? $hookmanager->resArray['paiement'] : 0; - } + $parameters = array('obj' => $obj); + $reshook = $hookmanager->executeHooks('moreFamily', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if(empty($reshook)){ + $ref = isset($hookmanager->resArray['ref']) ? $hookmanager->resArray['ref'] : ''; + $refcomp = isset($hookmanager->resArray['refcomp']) ? $hookmanager->resArray['refcomp'] : ''; + $paiement = isset($hookmanager->resArray['paiement']) ? $hookmanager->resArray['paiement'] : 0; + } $total_ttc = $obj->total_ttc; if ($paiement) $total_ttc = $obj->total_ttc - $paiement; @@ -307,7 +306,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) $solde = isset($hookmanager->resArray['solde']) ? $hookmanager->resArray['solde'] : $solde; } - // solde + // solde print ''; print ''; print ''; From fc3da0f5be83fbed832cb81f00453073264372fe Mon Sep 17 00:00:00 2001 From: gauthier Date: Wed, 2 Jan 2019 10:02:30 +0100 Subject: [PATCH 165/307] FIX : holidays get natural_search if search params are set only --- htdocs/holiday/define_holiday.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php index 87cb1920394..199787cbc06 100644 --- a/htdocs/holiday/define_holiday.php +++ b/htdocs/holiday/define_holiday.php @@ -205,7 +205,7 @@ if ($result < 0) setEventMessages($holiday->error, $holiday->errors, 'errors'); } -$filters=natural_search(array('u.firstname','u.lastname'), $search_name); +if(!empty($search_name)) $filters=natural_search(array('u.firstname','u.lastname'), $search_name); $listUsers = $holiday->fetchUsers(false,true,$filters); if (is_numeric($listUsers) && $listUsers < 0) From cad95c7dc2411587e3e8d79b54f9273c495d427f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Wed, 2 Jan 2019 15:39:22 +0100 Subject: [PATCH 166/307] Update societe.class.php --- htdocs/societe/class/societe.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 4b1f9053353..fcdf4e9741a 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -1353,7 +1353,7 @@ class Societe extends CommonObject } // Use first price level if level not defined for third party - if (! empty($conf->global->PRODUIT_MULTIPRICES) && empty($this->price_level)) $this->price_level=1; + if ((! empty($conf->global->PRODUIT_MULTIPRICES) || ! empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) && empty($this->price_level)) $this->price_level=1; return $result; } From 8645a7f524ff2862ab9c5ab71ddec8bc7806160d Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Wed, 2 Jan 2019 18:48:27 +0100 Subject: [PATCH 167/307] FIX Interface regression for bind people. Fix option MAIN_OPTIMIZEFORTEXTBROWSER --- htdocs/core/lib/ajax.lib.php | 1 + htdocs/core/lib/usergroups.lib.php | 40 ++++++++++++++++++++++++++++++ htdocs/user/param_ihm.php | 6 +++++ 3 files changed, 47 insertions(+) diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 92f057b4b94..12088894896 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -400,6 +400,7 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $ if (! empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return ''; if (empty($conf->use_javascript_ajax)) return ''; if (empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && ! defined('REQUIRE_JQUERY_MULTISELECT')) return ''; + if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) return ''; if (empty($minLengthToAutocomplete)) $minLengthToAutocomplete=0; diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index b8833e42543..abe774950a5 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -458,6 +458,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; + print ''; } // Background color THEME_ELDY_BACKBODY @@ -503,6 +504,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '   ('.$langs->trans("Default").': ffffff) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; + print ''; } // TopMenuBackgroundColor @@ -550,6 +552,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; + print ''; } // LeftMenuBackgroundColor @@ -597,6 +600,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; + print ''; } // TextTitleColor @@ -678,6 +682,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; + print ''; } // BackgroundTableLineEvenColor @@ -706,6 +711,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '   ('.$langs->trans("Default").': '.$default.') '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; + print ''; } // Text LinkColor @@ -755,6 +761,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print '   ('.$langs->trans("Default").': 000078) '; print $form->textwithpicto('', $langs->trans("NotSupportedByAllThemes").', '.$langs->trans("PressF5AfterChangingThis")); print ''; + print ''; } // Use Hover @@ -801,5 +808,38 @@ function show_theme($fuser,$edit=0,$foruserprofile=false) print ''; } + // Use MAIN_OPTIMIZEFORTEXTBROWSER + if ($foruserprofile) + { + $default=$langs->trans('No'); + print ''; + print ''; + print ''; + print ''; + } + else + { + // TODO + } + print '
    '.$langs->trans("ThirdParty").''.$langs->trans("Debit").''.$langs->trans("Credit").''.$langs->trans("BankBalance").''.$langs->trans("BankBalance").'
    '.$langs->trans("CurrentBalance").''.price($solde).'
    '.$langs->trans("FutureBalance").' ('.$object->currency_code.')'.price($solde, 0, $langs, 0, 0, -1, $object->currency_code).'
    '.$langs->trans("MAIN_OPTIMIZEFORTEXTBROWSER").''; + if ($edit) + { + print $form->selectyesno('MAIN_OPTIMIZEFORTEXTBROWSER', $fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER, 1); + } + else + { + if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) + { + print yn($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER); + } + else + { + print yn(1); + if (empty($fuser->conf->MAIN_OPTIMIZEFORTEXTBROWSER)) print ' ('.$langs->trans("ForcedByGlobalSetup").')'; + } + } + print '   ('.$langs->trans("Default").': '.yn(0).') '; + print $form->textwithpicto('', $langs->trans("MAIN_OPTIMIZEFORTEXTBROWSERDesc")); + print '
    '; } diff --git a/htdocs/user/param_ihm.php b/htdocs/user/param_ihm.php index 64913683276..929720e983b 100644 --- a/htdocs/user/param_ihm.php +++ b/htdocs/user/param_ihm.php @@ -142,6 +142,12 @@ if (empty($reshook)) { $tabparam["THEME_ELDY_USE_HOVER"] = 0; } + if (GETPOST('MAIN_OPTIMIZEFORTEXTBROWSER')) { + $tabparam["MAIN_OPTIMIZEFORTEXTBROWSER"] = 1; + } else { + $tabparam["MAIN_OPTIMIZEFORTEXTBROWSER"] = 0; + } + $result = dol_set_user_param($db, $conf, $object, $tabparam); header('Location: ' . $_SERVER["PHP_SELF"] . '?id=' . $id); From 99e2f893fdecb2bc1bd1e6c39486546e7c02b5f3 Mon Sep 17 00:00:00 2001 From: JC Prieto Date: Wed, 26 Dec 2018 20:42:26 +0100 Subject: [PATCH 168/307] Fix: loadBatchInfo() --- htdocs/product/class/product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 693323d63b0..316a911d5a3 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -4241,7 +4241,7 @@ class Product extends CommonObject { $result=array(); - $sql = "SELECT pb.batch, pb.eatby, pb.sellby, SUM(pb.qty) FROM ".MAIN_DB_PREFIX."product_batch as pb, ".MAIN_DB_PREFIX."product_stock as ps"; + $sql = "SELECT pb.batch, pb.eatby, pb.sellby, SUM(pb.qty) AS qty FROM ".MAIN_DB_PREFIX."product_batch as pb, ".MAIN_DB_PREFIX."product_stock as ps"; $sql.= " WHERE pb.fk_product_stock = ps.rowid AND ps.fk_product = ".$this->id." AND pb.batch = '".$this->db->escape($batch)."'"; $sql.= " GROUP BY pb.batch, pb.eatby, pb.sellby"; dol_syslog(get_class($this)."::loadBatchInfo load first entry found for lot/serial = ".$batch, LOG_DEBUG); From a39336c80d4f00c10b1ada840f843fa17d187a24 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Jan 2019 19:50:23 +0100 Subject: [PATCH 169/307] Simple join is better than RIGHT JOIN --- htdocs/accountancy/journal/bankjournal.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 36b1ed8ce80..6bf387c9b0e 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -371,8 +371,8 @@ if ($result) { $tabpay[$obj->rowid]["paymentloanid"] = $paymentloanstatic->id; //$tabtp[$obj->rowid][$account_pay_loan] += $obj->amount; $sqlmid = 'SELECT pl.amount_capital, pl.amount_insurance, pl.amount_interest, l.accountancy_account_capital, l.accountancy_account_insurance, l.accountancy_account_interest'; - $sqlmid.= ' FROM '.MAIN_DB_PREFIX.'payment_loan as pl RIGHT JOIN '.MAIN_DB_PREFIX.'loan as l ON l.rowid = pl.fk_loan'; - $sqlmid.= ' WHERE pl.fk_bank = '.$obj->rowid; + $sqlmid.= ' FROM '.MAIN_DB_PREFIX.'payment_loan as pl, '.MAIN_DB_PREFIX.'loan as l'; + $sqlmid.= ' WHERE l.rowid = pl.fk_loan AND pl.fk_bank = '.$obj->rowid; dol_syslog("accountancy/journal/bankjournal.php:: sqlmid=" . $sqlmid, LOG_DEBUG); $resultmid = $db->query($sqlmid); From 8b380489f249f379c943c3506222edc5e70e1ae9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Jan 2019 19:53:59 +0100 Subject: [PATCH 170/307] Update commonobject.class.php Conflicts: htdocs/core/class/commonobject.class.php --- htdocs/core/class/commonobject.class.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 3b7da9fc1ed..bc414ed722c 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -5024,8 +5024,6 @@ abstract class CommonObject $new_array_options[$key] = price2num($this->array_options[$key]); break; case 'date': - $new_array_options[$key] = $this->db->idate($this->array_options[$key]); - break; case 'datetime': // If data is a string instead of a timestamp, we convert it if (! is_int($this->array_options[$key])) { From 5f9bbbcdd77a5637d759cf0d9e42c2230507d0cf Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Thu, 3 Jan 2019 11:12:14 +0100 Subject: [PATCH 171/307] Fix migration --- htdocs/install/mysql/migration/8.0.0-9.0.0.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql index 28d080584d1..b2842a39548 100644 --- a/htdocs/install/mysql/migration/8.0.0-9.0.0.sql +++ b/htdocs/install/mysql/migration/8.0.0-9.0.0.sql @@ -180,6 +180,7 @@ CREATE TABLE llx_emailcollector_emailcollector( -- END MODULEBUILDER FIELDS ) ENGINE=innodb; +ALTER TABLE llx_emailcollector_emailcollector ADD COLUMN login varchar(128); ALTER TABLE llx_emailcollector_emailcollector ADD INDEX idx_emailcollector_entity (entity); ALTER TABLE llx_emailcollector_emailcollector ADD INDEX idx_emailcollector_status (status); From dbbfdd984a846bf25b5bf5142edd647dad2cc391 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Thu, 3 Jan 2019 11:47:27 +0100 Subject: [PATCH 172/307] Fix emailcollector can't be used without syntax rules --- htdocs/admin/emailcollector_card.php | 9 +- htdocs/admin/emailcollector_list.php | 94 ++++++++++--------- htdocs/core/class/html.form.class.php | 2 +- htdocs/langs/en_US/admin.lang | 1 + .../modulebuilder/template/myobject_list.php | 19 ++-- 5 files changed, 71 insertions(+), 54 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index 2fb5013b4f9..eaef18c9543 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -384,7 +384,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $connectstringserver = ''; $connectstringsource = ''; $connectstringtarget = ''; - + if (function_exists('imap_open')) { $connectstringserver = $object->getConnectStringIMAP(); @@ -397,7 +397,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { $morehtml .= 'IMAP functions not available on your PHP'; } - + if (! $connection) { $morehtml .= 'Failed to open IMAP connection '.$connectstringsource; @@ -412,7 +412,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea { imap_close($connection); } - + dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref.'
    '.$morehtml.'
    ', '', 0, '', '', 0, ''); print '
    '; @@ -487,6 +487,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print $form->selectarray('operationtype', $arrayoftypes, '', 1, 0, 0, '', 1); print ''; print ''; + $htmltext=$langs->transnoentitiesnoconv("OperationParamDesc"); + //var_dump($htmltext); + print $form->textwithpicto('', $htmltext); print ''; print ''; print ''; diff --git a/htdocs/admin/emailcollector_list.php b/htdocs/admin/emailcollector_list.php index 71169ddffb0..cacebb8e55d 100644 --- a/htdocs/admin/emailcollector_list.php +++ b/htdocs/admin/emailcollector_list.php @@ -120,8 +120,6 @@ $arrayfields = dol_sort_array($arrayfields, 'position'); /* * Actions - * - * Put here all code to do according to value of "$action" parameter */ if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; } @@ -165,8 +163,6 @@ if (empty($reshook)) /* * View - * - * Put here all code to render page */ $form=new Form($db); @@ -212,20 +208,20 @@ $reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters, $object) $sql.=$hookmanager->resPrint; /* If a group by is required - $sql.= " GROUP BY " - foreach($object->fields as $key => $val) - { - $sql.='t.'.$key.', '; - } - // Add fields from extrafields - if (! empty($extrafields->attributes[$object->table_element]['label'])) { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.', ' : ''); - // Add where from hooks - $parameters=array(); - $reshook=$hookmanager->executeHooks('printFieldListGroupBy',$parameters); // Note that $action and $object may have been modified by hook - $sql.=$hookmanager->resPrint; - $sql=preg_replace('/, $/','', $sql); - */ +$sql.= " GROUP BY " +foreach($object->fields as $key => $val) +{ + $sql.='t.'.$key.', '; +} +// Add fields from extrafields +if (! empty($extrafields->attributes[$object->table_element]['label'])) { + foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.', ' : ''); +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListGroupBy',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; +$sql=preg_replace('/, $/','', $sql); +*/ $sql.=$db->order($sortfield,$sortorder); @@ -305,8 +301,8 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; // List of mass actions available $arrayofmassactions = array( -//'presend'=>$langs->trans("SendByMail"), -//'builddoc'=>$langs->trans("PDFMerge"), + //'presend'=>$langs->trans("SendByMail"), + //'builddoc'=>$langs->trans("PDFMerge"), ); if ($user->rights->emailcollector->delete) $arrayofmassactions['predelete']=$langs->trans("Delete"); if (GETPOST('nomassaction','int') || in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); @@ -324,7 +320,7 @@ print ''; $newcardbutton=''; //if ($user->rights->emailcollector->creer) - //{ +//{ $newcardbutton=''.$langs->trans('New').''; $newcardbutton.= ''; $newcardbutton.= ''; @@ -333,6 +329,10 @@ $newcardbutton.= ''; print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_companies', 0, $newcardbutton, '', $limit); // Add code for pre mass action (confirmation or email presend form) +/*$topicmail=""; +$modelmail=""; +$objecttmp=new EmailCollector($db); +$trackid='xxxx'.$object->id;*/ include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; if ($sall) @@ -343,8 +343,8 @@ if ($sall) $moreforfilter = ''; /*$moreforfilter.='
    '; - $moreforfilter.= $langs->trans('MyFilter') . ': '; - $moreforfilter.= '
    ';*/ +$moreforfilter.= $langs->trans('MyFilter') . ': '; +$moreforfilter.= '
    ';*/ $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook @@ -371,11 +371,11 @@ print ''; foreach($object->fields as $key => $val) { - $align=''; - if (in_array($val['type'], array('date','datetime','timestamp'))) $align.=($align?' ':'').'center'; - if (in_array($val['type'], array('timestamp'))) $align.=($align?' ':'').'nowrap'; - if ($key == 'status') $align.=($align?' ':'').'center'; - if (! empty($arrayfields['t.'.$key]['checked'])) print ''; + $cssforfield=''; + if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; + if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; + if ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; + if (! empty($arrayfields['t.'.$key]['checked'])) print ''; } // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; @@ -397,11 +397,14 @@ print ''."\n"; print ''; foreach($object->fields as $key => $val) { - $align=''; - if (in_array($val['type'], array('date','datetime','timestamp'))) $align.=($align?' ':'').'center'; - if (in_array($val['type'], array('timestamp'))) $align.=($align?' ':'').'nowrap'; - if ($key == 'status') $align.=($align?' ':'').'center'; - if (! empty($arrayfields['t.'.$key]['checked'])) print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($align?'class="'.$align.'"':''), $sortfield, $sortorder, $align.' ')."\n"; + $cssforfield=''; + if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; + if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; + if ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; + if (! empty($arrayfields['t.'.$key]['checked'])) + { + print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield?'class="'.$cssforfield.'"':''), $sortfield, $sortorder, ($cssforfield?$cssforfield.' ':''))."\n"; + } } // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; @@ -444,15 +447,22 @@ while ($i < min($num, $limit)) print ''; foreach($object->fields as $key => $val) { - $align=''; - if (in_array($val['type'], array('date','datetime','timestamp'))) $align.=($align?' ':'').'center'; - if (in_array($val['type'], array('timestamp'))) $align.=($align?' ':'').'nowrap'; - if ($key == 'status') $align.=($align?' ':'').'center'; - if (! empty($arrayfields['t.'.$key]['checked'])) - { - print ''; + $cssforfield=''; + if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; + elseif ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; + + if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; + elseif ($key == 'ref') $cssforfield.=($cssforfield?' ':'').'nowrap'; + + if (! empty($arrayfields['t.'.$key]['checked'])) + { + print ''; print $object->showOutputField($val, $key, $obj->$key, ''); print ''; if (! $i) $totalarray['nbfield']++; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 51a36d758ee..3c0278511d9 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -450,7 +450,7 @@ class Form if ($notabs == 2) $tag='div'; if ($notabs == 3) $tag='span'; // Sanitize tooltip - $htmltext=str_replace("\\","\\\\",$htmltext); + //$htmltext=str_replace("\\","\\\\",$htmltext); $htmltext=str_replace("\r","",$htmltext); $htmltext=str_replace("\n","",$htmltext); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 1606cc3a7c0..6fbc49d8359 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1846,6 +1846,7 @@ WithoutDolTrackingID=Dolibarr Tracking ID not found FormatZip=Zip MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree +OperationParamDesc=Define values to use for action, or how to extract values. For example:
    VALUE:abc
    REGEX:SUBJECT:([^\s]*)
    REGEX:BODY:My company name is\s([^\s]*) ##### Resource #### ResourceSetup=Configuration du module Resource UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 4150ca75ca7..23c2614eb0f 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -88,13 +88,13 @@ $pagenext = $page + 1; //if (! $sortorder) $sortorder="DESC"; // Initialize technical objects -$object=new MyObject($db); +$object = new MyObject($db); $extrafields = new ExtraFields($db); -$diroutputmassaction=$conf->mymodule->dir_output . '/temp/massgeneration/'.$user->id; +$diroutputmassaction = $conf->mymodule->dir_output . '/temp/massgeneration/'.$user->id; $hookmanager->initHooks(array('myobjectlist')); // Note that conf->hooks_modules contains array // Fetch optionals attributes and labels $extralabels = $extrafields->fetch_name_optionals_label('myobject'); // Load $extrafields->attributes['myobject'] -$search_array_options=$extrafields->getOptionalsFromPost($object->table_element,'','search_'); +$search_array_options = $extrafields->getOptionalsFromPost($object->table_element,'','search_'); // Default sort order (if not yet defined by previous GETPOST) if (! $sortfield) $sortfield="t.".key($object->fields); // Set here default search field. By default 1st field in definition. @@ -474,11 +474,14 @@ while ($i < min($num, $limit)) print '
    '; foreach($object->fields as $key => $val) { - $cssforfield=''; - if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; - if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; - if ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; - if (! empty($arrayfields['t.'.$key]['checked'])) + $cssforfield=''; + if (in_array($val['type'], array('date','datetime','timestamp'))) $cssforfield.=($cssforfield?' ':'').'center'; + elseif ($key == 'status') $cssforfield.=($cssforfield?' ':'').'center'; + + if (in_array($val['type'], array('timestamp'))) $cssforfield.=($cssforfield?' ':'').'nowrap'; + elseif ($key == 'ref') $cssforfield.=($cssforfield?' ':'').'nowrap'; + + if (! empty($arrayfields['t.'.$key]['checked'])) { print ''; $i++; } @@ -493,16 +524,12 @@ if (empty($action) || $action=="view") print price($object->opening, 0, $langs, 1, -1, -1, $conf->currency); print ""; - print '"; - print '"; - print '"; - + foreach($arrayofpaymentmode as $key => $val) + { + print '"; + } print "
    '; - print ''; + print ''; print '
    '.$langs->trans("Cash").''; - print price($object->cash, 0, $langs, 1, -1, -1, $conf->currency); - print "
    '.$langs->trans("Cheque").''; - print price($object->cheque, 0, $langs, 1, -1, -1, $conf->currency); - print "
    '.$langs->trans("Card").''; - print price($object->card, 0, $langs, 1, -1, -1, $conf->currency); - print "
    '.$langs->trans($val).''; + print price($object->$key, 0, $langs, 1, -1, -1, $conf->currency); + print "
    \n"; print '
    '; @@ -516,6 +543,8 @@ if (empty($action) || $action=="view") if ($object->status == CashControl::STATUS_DRAFT) { print ''; + + print ''; } print '
    '; diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index fdf77b17961..071be33fd1f 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -276,6 +276,18 @@ class CashControl extends CommonObject return $result; } + /** + * Delete object in database + * + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, >0 if OK + */ + public function delete(User $user, $notrigger = false) + { + return $this->deleteCommon($user, $notrigger); + //return $this->deleteCommon($user, $notrigger, 1); + } /** * Return label of the status diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index c85e48f09e7..a2187e3b344 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -286,7 +286,7 @@ if ($resql) print "

    "; print $langs->trans("Cash").": ".price($cash)."

    "; print $langs->trans("PaymentTypeCB").": ".price($bank)."

    "; - print $langs->trans("PaymentTypeCheque").": ".price($cheque)."

    "; + print $langs->trans("PaymentTypeCHQ").": ".price($cheque)."

    "; print "

    "; //save totals to DB diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php index 31a6549cc27..b8b4237cc93 100644 --- a/htdocs/core/actions_addupdatedelete.inc.php +++ b/htdocs/core/actions_addupdatedelete.inc.php @@ -149,6 +149,7 @@ if ($action == 'update' && ! empty($permissiontoadd)) if ($action == "update_extras" && ! empty($permissiontoadd)) { $object->fetch(GETPOST('id','int')); + $attributekey = GETPOST('attribute','alpha'); $attributekeylong = 'options_'.$attributekey; $object->array_options['options_'.$attributekey] = GETPOST($attributekeylong,' alpha'); @@ -169,6 +170,12 @@ if ($action == "update_extras" && ! empty($permissiontoadd)) // Action to delete if ($action == 'confirm_delete' && ! empty($permissiontodelete)) { + if (! ($object->id > 0)) + { + dol_print_error('', 'Error, object must be fetched before being deleted'); + exit; + } + $result=$object->delete($user); if ($result > 0) { diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index 73b2b4f6b37..ba14b343954 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -42,4 +42,7 @@ Place=Place TakeposConnectorNecesary='TakePOS Connector' required OrderPrinters=Order printers SearchProduct=Search product -AmountAtEndOfPeriod=Amount at end of period (day, month or year) \ No newline at end of file +AmountAtEndOfPeriod=Amount at end of period (day, month or year) +TheoricalAmount=Theorical amount +RealAmount=Real amount +CashFenceDone=Cash fence done for the period \ No newline at end of file diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index f9b3db7a99e..84a23ab979d 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -118,7 +118,7 @@ if (empty($reshook)) $error=0; $permissiontoadd = $user->rights->mymodule->write; - $permissiontodelete = $user->rights->mymodule->delete; + $permissiontodelete = $user->rights->mymodule->delete || ($permissiontoadd && $object->status == 0); if (empty($backtopage)) $backtopage = dol_buildpath('/mymodule/myobject_card.php',1).'?id='.($id > 0 ? $id : '__ID__'); $backurlforlist = dol_buildpath('/mymodule/myobject_list.php',1); $triggermodname = 'MYMODULE_MYOBJECT_MODIFY'; // Name of trigger action code to execute when we modify record From cf84fdf7c7bd9d29316365391d383d9ced19ea7b Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Thu, 3 Jan 2019 20:07:58 +0100 Subject: [PATCH 177/307] Translate option "Simplify interface for blind persons" --- ChangeLog | 2 +- htdocs/langs/en_US/admin.lang | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 834f274fdb3..bbc242f2747 100644 --- a/ChangeLog +++ b/ChangeLog @@ -78,7 +78,7 @@ NEW: tag odt line_product_ref_fourn for supplier doc lines NEW: The binding step in accountancy has a country filter with autocompletion NEW: Top menu is always on screen with MD theme. NEW: Withdraw request massaction can include already partially paid invoices - +NEW: Option "Simplify interface for blind persons" For developers: NEW: Add lib for multiselect with checkboxes diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 6fbc49d8359..ebc0d89468b 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1855,3 +1855,5 @@ DisabledResourceLinkContact=Disable feature to link a resource to contacts ConfirmUnactivation=Confirm module reset OnMobileOnly=On small screen (smartphone) only DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be Prospect or Customer but can't be both) +MAIN_OPTIMIZEFORTEXTBROWSER=Simplify interface for blind person +MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or use application from a text browser like lynx or links. \ No newline at end of file From 1ae11c554b5e71c186563d6f9d008ea15772c459 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Thu, 3 Jan 2019 21:35:25 +0100 Subject: [PATCH 178/307] Fix regression if style --- htdocs/core/tpl/contacts.tpl.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index 9ae34602ef6..f1dfdf3d7a8 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -157,6 +157,8 @@ if ($permission) { -
    +
    trans("User"); ?> trans("ThirdPartyContact"); ?> From 082b126c06f0473b6b2a10cf326560b39b0aec4a Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Thu, 3 Jan 2019 22:39:51 +0100 Subject: [PATCH 179/307] FIX Can't switch page when html editing without save or cancel --- htdocs/website/index.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index bb9d6ae43e0..16b73934fce 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -1857,7 +1857,7 @@ if (! GETPOST('hide_websitemenu')) if ($action != 'addcontainer') { $out=''; - $out.=''; if ($atleastonepage) { if (empty($pageid) && $action != 'createcontainer') // Page id is not defined, we try to take one @@ -1893,7 +1893,7 @@ if (! GETPOST('hide_websitemenu')) } //print ''; - print ''; + print ''; // Print nav arrows From 15cc45b8ae9273972b3824906ff708267104a5a3 Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Fri, 4 Jan 2019 10:52:10 +0100 Subject: [PATCH 180/307] FIX: Can't generate invoice pdf --- htdocs/core/actions_massactions.inc.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 4fad63ca840..0c66d51d589 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -1,6 +1,7 @@ * Copyright (C) 2018 Juanjo Menent + * Copyright (C) 2019 Ferran Marcet * * 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 @@ -680,6 +681,7 @@ if ($massaction == 'confirm_createbills') } $id = $objecttmp->id; // For builddoc action + $object = $objecttmp; // Builddoc $donotredirect = 1; From 4694af048837c94c9b3e738f1724618b0a574a21 Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Fri, 4 Jan 2019 11:45:02 +0100 Subject: [PATCH 181/307] FIX: Can't generate invoice pdf --- htdocs/commande/list.php | 1 + htdocs/core/actions_massactions.inc.php | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 04ef69b2638..27fa4bd48e3 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -102,6 +102,7 @@ if (! $sortorder) $sortorder='DESC'; $contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'orderlist'; // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$object = new Commande($db); $hookmanager->initHooks(array($contextpage)); $extrafields = new ExtraFields($db); diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index 0c66d51d589..a89b6dcdb2c 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -681,7 +681,6 @@ if ($massaction == 'confirm_createbills') } $id = $objecttmp->id; // For builddoc action - $object = $objecttmp; // Builddoc $donotredirect = 1; From f3dd875fc799a059225221629323e8d007458b33 Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Fri, 4 Jan 2019 12:00:39 +0100 Subject: [PATCH 182/307] FIX: Can't generate invoice pdf --- htdocs/commande/list.php | 1 - htdocs/core/actions_massactions.inc.php | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 27fa4bd48e3..04ef69b2638 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -102,7 +102,6 @@ if (! $sortorder) $sortorder='DESC'; $contextpage=GETPOST('contextpage','aZ')?GETPOST('contextpage','aZ'):'orderlist'; // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context -$object = new Commande($db); $hookmanager->initHooks(array($contextpage)); $extrafields = new ExtraFields($db); diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index a89b6dcdb2c..0c66d51d589 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -681,6 +681,7 @@ if ($massaction == 'confirm_createbills') } $id = $objecttmp->id; // For builddoc action + $object = $objecttmp; // Builddoc $donotredirect = 1; From 5638ac8f4d2131ec55260091c5e7f1f2bede1bad Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 4 Jan 2019 15:22:59 +0100 Subject: [PATCH 183/307] FIX title on picto no more visible Conflicts: htdocs/core/lib/functions.lib.php --- htdocs/core/lib/functions.lib.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5ab77002b5f..dbae1b0264e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3015,8 +3015,8 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ //if (in_array($picto, array('switch_off', 'switch_on', 'off', 'on'))) if (empty($srconly) && in_array($pictowithoutext, array( 'bank', 'close_title', 'delete', 'edit', 'ellipsis-h', 'filter', 'grip', 'grip_title', 'list', 'listlight', 'off', 'on', 'play', 'playdisabled', 'printer', 'resize', - 'note','switch_off', 'switch_on', 'unlink', 'uparrow', '1downarrow', '1uparrow', - 'skype','twitter','facebook' + 'note', 'split', 'switch_off', 'switch_on', 'unlink', 'uparrow', '1downarrow', '1uparrow', + 'jabber','skype','twitter','facebook' ) )) { $fakey = $pictowithoutext; @@ -3103,16 +3103,23 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $fakey = 'fa-play'; $facolor = '#444'; } + elseif ($pictowithoutext == 'jabber') { + $fakey = 'fa-comment-o'; + } + elseif ($pictowithoutext == 'split') { + $fakey = 'fa-code-fork'; + } else { $fakey = 'fa-'.$pictowithoutext; $facolor = '#444'; $marginleftonlyshort=0; } + $reg=array(); if (preg_match('/class="([^"]+)"/', $moreatt, $reg)) { $morecss.= ($morecss?' ':'').$reg[1]; } - $enabledisablehtml = ''; + $enabledisablehtml = ''; if (! empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $enabledisablehtml.= $titlealt; } @@ -3128,11 +3135,11 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ $path = $conf->global->MAIN_OVERWRITE_THEME_RES.'/theme/'.$conf->global->MAIN_OVERWRITE_THEME_RES; // To allow an external module to overwrite image resources whatever is activated theme } else if (! empty($conf->modules_parts['theme']) && array_key_exists($theme, $conf->modules_parts['theme'])) { - $path = $theme.'/theme/'.$theme; // If the theme have the same name as the module + $path = $theme.'/theme/'.$theme; // If the theme have the same name as the module } // If we ask an image into $url/$mymodule/img (instead of default path) - if (preg_match('/^([^@]+)@([^@]+)$/i',$picto,$regs)) { + if (preg_match('/^([^@]+)@([^@]+)$/i', $picto, $regs)) { $picto = $regs[1]; $path = $regs[2]; // $path is $mymodule } From 2c474de61ebdd380569480d045f9fa65b9eb22a2 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 4 Jan 2019 15:44:09 +0100 Subject: [PATCH 184/307] FIX Update of timespent when date is empty --- htdocs/projet/class/task.class.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 50c7f0d007f..49e0c34a0dc 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -1362,6 +1362,18 @@ class Task extends CommonObject $ret = 0; + // Check parameters + if ($this->timespent_date == '') + { + $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")); + return -1; + } + if (! ($this->timespent_fk_user > 0)) + { + $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("User")); + return -1; + } + // Clean parameters if (empty($this->timespent_datehour)) $this->timespent_datehour = $this->timespent_date; if (isset($this->timespent_note)) $this->timespent_note = trim($this->timespent_note); From 3b6d6eec9afe8aa2cf955c01e55925adb3c7c528 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 4 Jan 2019 18:06:54 +0100 Subject: [PATCH 185/307] Fix cach on image for website --- htdocs/website/samples/wrapper.html | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/htdocs/website/samples/wrapper.html b/htdocs/website/samples/wrapper.html index fb6a10b1264..32ed05e49c1 100644 --- a/htdocs/website/samples/wrapper.html +++ b/htdocs/website/samples/wrapper.html @@ -1,11 +1,12 @@ entity; $original_file=GETPOST("file","alpha"); @@ -54,17 +55,26 @@ if (! empty($hashp)) // Define attachment (attachment=true to force choice popup 'open'/'save as') $attachment = true; if (preg_match('/\.(html|htm)$/i',$original_file)) $attachment = false; -if (isset($_GET["attachment"])) $attachment = GETPOST("attachment",'alpha')?true:false; -if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS)) $attachment=false; +if (isset($_GET["attachment"])) $attachment = GETPOST("attachment",'none')?true:false; +if (! empty($conf->global->MAIN_DISABLE_FORCE_SAVEAS_WEBSITE)) $attachment=false; // Define mime type $type = 'application/octet-stream'; -if (GETPOST('type','alpha')) $type=GETPOST('type','alpha'); +if (GETPOST('type','none')) $type=GETPOST('type','alpha'); else $type=dol_mimetype($original_file); // Security: Delete string ../ into $original_file $original_file=str_replace("../","/", $original_file); +// Cache or not +if (GETPOST("cache",'none') || image_format_supported($original_file) >= 0) +{ + // Important: Following code is to avoid page request by browser and PHP CPU at + // each Dolibarr page access. + header('Cache-Control: max-age=3600, public, must-revalidate'); + header('Pragma: cache'); // This is to avoid having Pragma: no-cache +} + // Find the subdirectory name as the reference $refname=basename(dirname($original_file)."/"); @@ -110,15 +120,13 @@ else // Permissions are ok and file found, so we return it //top_httphead($type); + header('Content-Type: '.$type); header('Content-Description: File Transfer'); if ($encoding) header('Content-Encoding: '.$encoding); // Add MIME Content-Disposition from RFC 2183 (inline=automatically displayed, attachment=need user action to open) if ($attachment) header('Content-Disposition: attachment; filename="'.$filename.'"'); else header('Content-Disposition: inline; filename="'.$filename.'"'); header('Content-Length: ' . dol_filesize($fullpath_original_file)); - // Ajout directives pour resoudre bug IE - header('Cache-Control: Public, must-revalidate'); - header('Pragma: public'); readfile($fullpath_original_file_osencoded); } From 3485d0b4e5b7770061147a0a14df1e041d9881b0 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 4 Jan 2019 18:39:02 +0100 Subject: [PATCH 186/307] Fix regression when editing html source --- htdocs/website/index.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 16b73934fce..e4d0e8e6145 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -1857,7 +1857,14 @@ if (! GETPOST('hide_websitemenu')) if ($action != 'addcontainer') { $out=''; - $out.=''; + } + else + { + $out.=''; - $out.=ajax_combobox('pageid'); + if ($atleastonepage && $action != 'editsource') + { + $out.=ajax_combobox('pageid'); + } + else + { + $out.=''; + $out.=ajax_combobox('pageid'); + } print $out; } else From 89f24f6fe8de0c043c2a05b5bb5f736eeeec2bc9 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 4 Jan 2019 18:58:36 +0100 Subject: [PATCH 187/307] Fix cache not working on css files --- htdocs/website/index.php | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index e4d0e8e6145..e56808f8f9e 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -910,6 +910,7 @@ if ($action == 'updatecss') $csscontent.= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n"; $csscontent.= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n"; $csscontent.= "ob_start();\n"; + $csscontent.= "header('Cache-Control: max-age=3600, public, must-revalidate');\n"; $csscontent.= "header('Content-type: text/css');\n"; $csscontent.= "// END PHP ?>\n"; @@ -942,6 +943,7 @@ if ($action == 'updatecss') $jscontent.= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n"; $jscontent.= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n"; $jscontent.= "ob_start();\n"; + $jscontent.= "header('Cache-Control: max-age=3600, public, must-revalidate');\n"; $jscontent.= "header('Content-type: application/javascript');\n"; $jscontent.= "// END PHP ?>\n"; @@ -974,6 +976,7 @@ if ($action == 'updatecss') $robotcontent.= "require_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php';\n"; $robotcontent.= "require_once DOL_DOCUMENT_ROOT.'/core/website.inc.php';\n"; $robotcontent.= "ob_start();\n"; + $robotcontent.= "header('Cache-Control: max-age=3600, public, must-revalidate');\n"; $robotcontent.= "header('Content-type: text/css');\n"; $robotcontent.= "// END PHP ?>\n";*/ @@ -1000,20 +1003,21 @@ if ($action == 'updatecss') // Css file $htaccesscontent =''; - /*$robotcontent.= "\n";*/ + /*$htaccesscontent.= "\n";*/ $htaccesscontent.= GETPOST('WEBSITE_HTACCESS', 'none'); - /*$robotcontent.= "\n".'"."\n";*/ + /*$htaccesscontent.= "\n".'"."\n";*/ dol_syslog("Save file htaccess into ".$filehtaccess); From e47cf24fa18d0af7584aea543affc52e06bb5397 Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Fri, 4 Jan 2019 19:10:25 +0100 Subject: [PATCH 188/307] Try to fix chrome xss protection --- htdocs/website/index.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index e56808f8f9e..0c7ae842c9b 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -24,6 +24,8 @@ define('NOSCANPOSTFORINJECTION',1); define('NOSTYLECHECK',1); +header('X-XSS-Protection:0'); + require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; From 0ce514079b4b7288689c47df758922cc33c110af Mon Sep 17 00:00:00 2001 From: ldestailleur Date: Sat, 5 Jan 2019 12:51:08 +0100 Subject: [PATCH 189/307] FIX Button journalize grey when mandatroy setup not done --- htdocs/accountancy/journal/bankjournal.php | 74 +++++++++++++++------- 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index e610d9c0bba..6f114b91a11 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -4,7 +4,7 @@ * Copyright (C) 2011 Juanjo Menent * Copyright (C) 2012 Regis Houssin * Copyright (C) 2013 Christophe Battarel - * Copyright (C) 2013-2018 Alexandre Spangaro + * Copyright (C) 2013-2018 Alexandre Spangaro * Copyright (C) 2013-2014 Florian Henry * Copyright (C) 2013-2014 Olivier Geffroy * Copyright (C) 2017-2018 Frédéric France @@ -56,9 +56,10 @@ require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/paymentvarious.class.php'; require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php'; require_once DOL_DOCUMENT_ROOT . '/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT . '/loan/class/paymentloan.class.php'; +require_once DOL_DOCUMENT_ROOT . '/adherents/class/subscription.class.php'; // Load translation files required by the page -$langs->loadLangs(array("companies","other","compta","banks","bills","donations","loan","accountancy","trips","salaries","hrm")); +$langs->loadLangs(array("companies","other","compta","banks","bills","donations","loan","accountancy","trips","salaries","hrm","members")); // Multi journal $id_journal = GETPOST('id_journal', 'int'); @@ -149,6 +150,7 @@ $paymentexpensereportstatic = new PaymentExpenseReport($db); $paymentvariousstatic = new PaymentVarious($db); $paymentloanstatic = new PaymentLoan($db); $accountLinestatic=new AccountLine($db); +$paymentsubscriptionstatic = new Subscription($db); $accountingaccount = new AccountingAccount($db); @@ -167,12 +169,13 @@ if ($result) { //print $sql; // Variables - $account_supplier = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : 'NotDefined'); // NotDefined is a reserved word - $account_customer = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : 'NotDefined'); // NotDefined is a reserved word - $account_employee = (! empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) ? $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT : 'NotDefined'); // NotDefined is a reserved word - $account_pay_vat = (! empty($conf->global->ACCOUNTING_VAT_PAY_ACCOUNT) ? $conf->global->ACCOUNTING_VAT_PAY_ACCOUNT : 'NotDefined'); // NotDefined is a reserved word - $account_pay_donation = (! empty($conf->global->DONATION_ACCOUNTINGACCOUNT) ? $conf->global->DONATION_ACCOUNTINGACCOUNT : 'NotDefined'); // NotDefined is a reserved word - $account_transfer = (! empty($conf->global->ACCOUNTING_ACCOUNT_TRANSFER_CASH) ? $conf->global->ACCOUNTING_ACCOUNT_TRANSFER_CASH : 'NotDefined'); // NotDefined is a reserved word + $account_supplier = (! empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) ? $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER : 'NotDefined'); // NotDefined is a reserved word + $account_customer = (! empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) ? $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER : 'NotDefined'); // NotDefined is a reserved word + $account_employee = (! empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) ? $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT : 'NotDefined'); // NotDefined is a reserved word + $account_pay_vat = (! empty($conf->global->ACCOUNTING_VAT_PAY_ACCOUNT) ? $conf->global->ACCOUNTING_VAT_PAY_ACCOUNT : 'NotDefined'); // NotDefined is a reserved word + $account_pay_donation = (! empty($conf->global->DONATION_ACCOUNTINGACCOUNT) ? $conf->global->DONATION_ACCOUNTINGACCOUNT : 'NotDefined'); // NotDefined is a reserved word + $account_pay_subscription = (! empty($conf->global->ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT) ? $conf->global->ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT : 'NotDefined'); // NotDefined is a reserved word + $account_transfer = (! empty($conf->global->ACCOUNTING_ACCOUNT_TRANSFER_CASH) ? $conf->global->ACCOUNTING_ACCOUNT_TRANSFER_CASH : 'NotDefined'); // NotDefined is a reserved word $tabcompany = array(); $tabuser = array(); @@ -263,7 +266,7 @@ if ($result) { // Now loop on each link of record in bank. foreach ($links as $key => $val) { - if (in_array($links[$key]['type'], array('sc', 'payment_sc', 'payment', 'payment_supplier', 'payment_vat', 'payment_expensereport', 'banktransfert', 'payment_donation', 'payment_loan', 'payment_salary', 'payment_various'))) + if (in_array($links[$key]['type'], array('sc', 'payment_sc', 'payment', 'payment_supplier', 'payment_vat', 'payment_expensereport', 'banktransfert', 'payment_donation', 'member', 'payment_loan', 'payment_salary', 'payment_various'))) { // So we excluded 'company' and 'user' here. We want only payment lines @@ -341,6 +344,14 @@ if ($result) { $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentdonstatic->getNomUrl(2); $tabpay[$obj->rowid]["paymentdonationid"] = $paymentdonstatic->id; $tabtp[$obj->rowid][$account_pay_donation] += $obj->amount; + } else if ($links[$key]['type'] == 'member') { + $paymentsubscriptionstatic->id = $links[$key]['url_id']; + $paymentsubscriptionstatic->ref = $links[$key]['url_id']; + $paymentsubscriptionstatic->label = $links[$key]['label']; + $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsubscriptionstatic->getNomUrl(2); + $tabpay[$obj->rowid]["paymentsubscriptionid"] = $paymentsubscriptionstatic->id; + $paymentsubscriptionstatic->fetch($paymentsubscriptionstatic->id); + $tabtp[$obj->rowid][$account_pay_subscription] += $obj->amount; } else if ($links[$key]['type'] == 'payment_vat') { // Payment VAT $paymentvatstatic->id = $links[$key]['url_id']; $paymentvatstatic->ref = $links[$key]['url_id']; @@ -580,6 +591,13 @@ if (! $error && $action == 'writebookkeeping') { $bookkeeping->subledger_label = ''; $bookkeeping->numero_compte = $k; + $accountingaccount->fetch(null, $k, true); + $bookkeeping->label_compte = $accountingaccount->label; + } else if ($tabtype[$key] == 'member') { + $bookkeeping->subledger_account = ''; + $bookkeeping->subledger_label = ''; + $bookkeeping->numero_compte = $k; + $accountingaccount->fetch(null, $k, true); $bookkeeping->label_compte = $accountingaccount->label; } else if ($tabtype[$key] == 'payment_loan') { @@ -915,9 +933,18 @@ if (empty($action) || $action == 'view') { print '
    '; + if (! empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL)) print ''; - if ($in_bookkeeping == 'notyet') print ''; - else print '' . $langs->trans("WriteBookKeeping") . ''; + + if (empty($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) || $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER == '-1' + || empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) || $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER == '-1' + || empty($conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT) || $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT == '-1') { + print ''; + } + else { + if ($in_bookkeeping == 'notyet') print ''; + else print '' . $langs->trans("WriteBookKeeping") . ''; + } print '
    '; // TODO Avoid using js. We can use a direct link with $param @@ -1027,11 +1054,13 @@ if (empty($action) || $action == 'view') { print ""; $account_ledger = $k; // Try to force general ledger account depending on type - if ($tabtype[$key] == 'payment') $account_ledger = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; - if ($tabtype[$key] == 'payment_supplier') $account_ledger = $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER; - if ($tabtype[$key] == 'payment_expensereport') $account_ledger = $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT; - if ($tabtype[$key] == 'payment_salary') $account_ledger = $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT; - if ($tabtype[$key] == 'payment_vat') $account_ledger = $conf->global->ACCOUNTING_VAT_PAY_ACCOUNT; + if ($tabtype[$key] == 'payment') $account_ledger = $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER; + if ($tabtype[$key] == 'payment_supplier') $account_ledger = $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER; + if ($tabtype[$key] == 'payment_expensereport') $account_ledger = $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT; + if ($tabtype[$key] == 'payment_salary') $account_ledger = $conf->global->SALARIES_ACCOUNTING_ACCOUNT_PAYMENT; + if ($tabtype[$key] == 'payment_vat') $account_ledger = $conf->global->ACCOUNTING_VAT_PAY_ACCOUNT; + if ($tabtype[$key] == 'member') $account_ledger = $conf->global->ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT; + $accounttoshow = length_accounta($account_ledger); if (empty($accounttoshow) || $accounttoshow == 'NotDefined') { @@ -1051,11 +1080,12 @@ if (empty($action) || $action == 'view') { { // We will refuse writing $errorstring='UnknownAccountForThirdpartyBlocking'; - if ($tabtype[$key] == 'payment') $errorstring='MainAccountForCustomersNotDefined'; - if ($tabtype[$key] == 'payment_supplier') $errorstring='MainAccountForSuppliersNotDefined'; - if ($tabtype[$key] == 'payment_expensereport') $errorstring='MainAccountForUsersNotDefined'; - if ($tabtype[$key] == 'payment_salary') $errorstring='MainAccountForUsersNotDefined'; - if ($tabtype[$key] == 'payment_vat') $errorstring='MainAccountForVatPaymentNotDefined'; + if ($tabtype[$key] == 'payment') $errorstring='MainAccountForCustomersNotDefined'; + if ($tabtype[$key] == 'payment_supplier') $errorstring='MainAccountForSuppliersNotDefined'; + if ($tabtype[$key] == 'payment_expensereport') $errorstring='MainAccountForUsersNotDefined'; + if ($tabtype[$key] == 'payment_salary') $errorstring='MainAccountForUsersNotDefined'; + if ($tabtype[$key] == 'payment_vat') $errorstring='MainAccountForVatPaymentNotDefined'; + if ($tabtype[$key] == 'member') $errorstring='MainAccountForSubscriptionPaymentNotDefined'; print ''.$langs->trans($errorstring).''; } } @@ -1179,7 +1209,7 @@ function getSourceDocRef($val, $typerecord) $sqlmid = ''; if ($typerecord == 'payment') { - $sqlmid = 'SELECT payfac.fk_facture as id, f.facnumber as ref'; + $sqlmid = 'SELECT payfac.fk_facture as id, f.ref as ref'; $sqlmid .= " FROM ".MAIN_DB_PREFIX."paiement_facture as payfac, ".MAIN_DB_PREFIX."facture as f"; $sqlmid .= " WHERE payfac.fk_facture = f.rowid AND payfac.fk_paiement=" . $val["paymentid"]; $ref = $langs->transnoentitiesnoconv("Invoice"); From 96967100ba61ac0f90e6cca92cf83b3b417e7c5c Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 5 Jan 2019 13:35:32 +0100 Subject: [PATCH 190/307] Prepare 7.0.5 --- ChangeLog | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ChangeLog b/ChangeLog index 61b3f85edb3..b63cc948980 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,39 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 7.0.5 compared to 7.0.4 ***** +FIX: #3234 +FIX: #6580 +FIX: #8741 +FIX: #9934 +FIX: avoid Class 'AdherentType' not found +FIX: Can't create a thirdparty from member if customer code is mandatory. +FIX: Can't generate invoice pdf +FIX: contact/adress tab: when changing company ajax combo, the first contact change is not taken into account +FIX: Error generating ODT when option to use contact on doc on +FIX: Error reported when creation of thirdparty from member fails +FIX: filter on product category doesn't work +FIX: form actions: select_type_actions could be too small + bad init +FIX: fourn payment modes musn't be available on customer docs +FIX: Function updatePrice with wrong parameters +FIX: If we change customer/supplier rule we can't edit old thirdparty. +FIX: Interface regression for bind people. Fix option MAIN_OPTIMIZEFORTEXTBROWSER +FIX: Lines are not inserted correctly if VAT have code +FIX: OppStatusShort doesn't exists +FIX: pdf typhon: order reference duplicate +FIX: propal pdf: missing parenthesis for customs code +FIX: Same on customer card +FIX: same on lines +FIX: Select first mail model by default +FIX: sql query performance on list_qualified_avoir_supplier_invoices. +FIX: task time screen: last fix was overkill +FIX: task time screen: prevent users with access to all project from assigning to tasks they're not allowed to do +FIX: use discount with multicurrency +FIX: Variable name +FIX: We want to be able to send PDF of paid invoices +FIX: When delete a product, llx_product_association rows are not deleted +FIX: wrong occurence number of contract on contact card, we must only count externals + ***** ChangeLog for 7.0.4 compared to 7.0.3 ***** FIX: #8984 button create expense report FIX: #9032 From 74442911a7f9c99b7da83ae9dc4400da84324bc2 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Sat, 5 Jan 2019 14:45:23 +0100 Subject: [PATCH 191/307] Change to 7.0.6 --- htdocs/filefunc.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index dbc0e4bda8c..6675a1c3fb3 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -31,7 +31,7 @@ */ if (! defined('DOL_APPLICATION_TITLE')) define('DOL_APPLICATION_TITLE','Dolibarr'); -if (! defined('DOL_VERSION')) define('DOL_VERSION','7.0.5'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c +if (! defined('DOL_VERSION')) define('DOL_VERSION','7.0.6'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c if (! defined('EURO')) define('EURO',chr(128)); From 59d6000e89ff5d93269c7ae6eb856d9c705d5bbb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 5 Jan 2019 15:13:35 +0100 Subject: [PATCH 192/307] Code comment --- htdocs/main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 27e3b84b1de..ec4f894e4e1 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -913,7 +913,7 @@ if ((! empty($conf->browser->layout) && $conf->browser->layout == 'phone') // If we force to use jmobile, then we reenable javascript if (! empty($conf->dol_use_jmobile)) $conf->use_javascript_ajax=1; // Replace themes bugged with jmobile with eldy -if (! empty($conf->dol_use_jmobile) && in_array($conf->theme,array('bureau2crea','cameleo','amarok'))) +if (! empty($conf->dol_use_jmobile) && in_array($conf->theme, array('bureau2crea','cameleo','amarok'))) { $conf->theme='eldy'; $conf->css = "/theme/".$conf->theme."/style.css.php"; From c9e607455160699e54728119277d3e37a7a3e0a3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 5 Jan 2019 15:14:06 +0100 Subject: [PATCH 193/307] Code clean --- htdocs/core/class/html.form.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 3c0278511d9..e174b847dac 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -1141,8 +1141,8 @@ class Form $sql = "SELECT s.rowid, s.nom as name, s.name_alias, s.client, s.fournisseur, s.code_client, s.code_fournisseur"; if ($conf->global->COMPANY_SHOW_ADDRESS_SELECTLIST) { - $sql .= " ,s.address, s.zip, s.town"; - $sql .= " , dictp.code as country_code"; + $sql .= ", s.address, s.zip, s.town"; + $sql .= ", dictp.code as country_code"; } $sql.= " FROM (".MAIN_DB_PREFIX ."societe as s"; From b5ad35f886cc69b2b2a6ae49ebf5735a92523058 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 5 Jan 2019 15:18:37 +0100 Subject: [PATCH 194/307] Fix better test tool --- dev/tools/fixdosfiles.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/tools/fixdosfiles.sh b/dev/tools/fixdosfiles.sh index 5fcacd8e2fd..a5221d0d201 100755 --- a/dev/tools/fixdosfiles.sh +++ b/dev/tools/fixdosfiles.sh @@ -17,8 +17,8 @@ fi # To detec if [ "x$1" = "xlist" ] then - find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep CRLF -# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'htdocs\/includes' | grep CRLF + find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'documents\/website' | grep CRLF +# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'documents\/website' | grep -v 'htdocs\/includes' | grep CRLF fi # To convert From cbf1c30647af1a08b894eade7bfb8c14a42a6463 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 5 Jan 2019 15:19:07 +0100 Subject: [PATCH 195/307] Fix better test tool --- dev/tools/fixdosfiles.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/tools/fixdosfiles.sh b/dev/tools/fixdosfiles.sh index a5221d0d201..e4ccb1485e1 100755 --- a/dev/tools/fixdosfiles.sh +++ b/dev/tools/fixdosfiles.sh @@ -24,7 +24,7 @@ fi # To convert if [ "x$1" = "xfix" ] then - for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep CRLF | awk -F':' '{ print $1 }' ` + for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'documents\/website' | grep CRLF | awk -F':' '{ print $1 }' ` do echo "Fix file $fic" dos2unix "$fic" From b1559dbc394d08b0f7968e4891a6163737401b82 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 5 Jan 2019 15:22:24 +0100 Subject: [PATCH 196/307] Fix perms --- .../swiftmailer/lib/swiftmailer_generate_mimes_config.php | 0 htdocs/modulebuilder/template/scripts/myobject.php | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 htdocs/includes/swiftmailer/lib/swiftmailer_generate_mimes_config.php mode change 100755 => 100644 htdocs/modulebuilder/template/scripts/myobject.php diff --git a/htdocs/includes/swiftmailer/lib/swiftmailer_generate_mimes_config.php b/htdocs/includes/swiftmailer/lib/swiftmailer_generate_mimes_config.php old mode 100755 new mode 100644 diff --git a/htdocs/modulebuilder/template/scripts/myobject.php b/htdocs/modulebuilder/template/scripts/myobject.php old mode 100755 new mode 100644 From 38ec05f2f1c5c1b7e6dd535f1ffe75bceacb4a43 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 6 Jan 2019 01:17:11 +0100 Subject: [PATCH 197/307] Fix search filter lost --- htdocs/admin/mails_templates.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index 40daa521989..2ff20e9acc7 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -606,10 +606,16 @@ if ($resql) $i = 0; $param = '&id='.$id; + if ($search_label) $param.= '&search_label='.urlencode($search_label); + if ($search_lang > 0) $param.= '&search_lang='.urlencode($search_lang); + if ($search_type_template > 0) $param.= '&search_type_template='.urlencode($search_type_template); + if ($search_fk_user > 0) $param.= '&search_fk_user='.urlencode($search_fk_user); + if ($search_topic) $param.= '&search_topic='.urlencode($search_topic); + $paramwithsearch = $param; - if ($sortorder) $paramwithsearch.= '&sortorder='.$sortorder; - if ($sortfield) $paramwithsearch.= '&sortfield='.$sortfield; - if (GETPOST('from')) $paramwithsearch.= '&from='.GETPOST('from','alpha'); + if ($sortorder) $paramwithsearch.= '&sortorder='.urlencode($sortorder); + if ($sortfield) $paramwithsearch.= '&sortfield='.urlencode($sortfield); + if (GETPOST('from','alpha')) $paramwithsearch.= '&from='.urlencode(GETPOST('from','alpha')); // There is several pages if ($num > $listlimit) From 2c496d2ac06c8d5547c8d3013a7767f5390d5c28 Mon Sep 17 00:00:00 2001 From: Xebax Date: Sun, 6 Jan 2019 13:42:41 +0100 Subject: [PATCH 198/307] FIX Civility not saved when creating a member. --- htdocs/adherents/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 0284155ddc1..0776a86d7d9 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -446,7 +446,7 @@ if (empty($reshook)) } $typeid=GETPOST("typeid",'int'); - $civility_id=GETPOST("civility_id",'int'); + $civility_id=GETPOST("civility_id",'alpha'); $lastname=GETPOST("lastname",'alpha'); $firstname=GETPOST("firstname",'alpha'); $societe=GETPOST("societe",'alpha'); From 1306918eb0f96ecc61fef82991b38ac25a098b5a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Jan 2019 16:03:55 +0100 Subject: [PATCH 199/307] FIX #10299 --- htdocs/core/lib/functions.lib.php | 24 ++++++++++++++++++------ htdocs/product/card.php | 2 +- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index dbae1b0264e..5ce4f370976 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4519,37 +4519,49 @@ function price2num($amount,$rounding='',$alreadysqlnb=0) * Output a dimension with best unit * * @param float $dimension Dimension - * @param int $unit Unit of dimension (0, -3, ...) + * @param int $unit Unit of dimension (Example: 0=kg, -3=g, 98=ounce, 99=pound, ...) * @param string $type 'weight', 'volume', ... * @param Translate $outputlangs Translate language object * @param int $round -1 = non rounding, x = number of decimal - * @param string $forceunitoutput 'no' or numeric (-3, -6, ...) compared to $unit + * @param string $forceunitoutput 'no' or numeric (-3, -6, ...) compared to $unit (In most case, this value is value defined into $conf->global->MAIN_WEIGHT_DEFAULT_UNIT) * @return string String to show dimensions */ function showDimensionInBestUnit($dimension, $unit, $type, $outputlangs, $round=-1, $forceunitoutput='no') { require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; - if (($forceunitoutput == 'no' && $dimension < 1/10000) || (is_numeric($forceunitoutput) && $forceunitoutput == -6)) + if (($forceunitoutput == 'no' && $dimension < 1/10000 && $unit < 90) || (is_numeric($forceunitoutput) && $forceunitoutput == -6)) { $dimension = $dimension * 1000000; $unit = $unit - 6; } - elseif (($forceunitoutput == 'no' && $dimension < 1/10) || (is_numeric($forceunitoutput) && $forceunitoutput == -3)) + elseif (($forceunitoutput == 'no' && $dimension < 1/10 && $unit < 90) || (is_numeric($forceunitoutput) && $forceunitoutput == -3)) { $dimension = $dimension * 1000; $unit = $unit - 3; } - elseif (($forceunitoutput == 'no' && $dimension > 100000000) || (is_numeric($forceunitoutput) && $forceunitoutput == 6)) + elseif (($forceunitoutput == 'no' && $dimension > 100000000 && $unit < 90) || (is_numeric($forceunitoutput) && $forceunitoutput == 6)) { $dimension = $dimension / 1000000; $unit = $unit + 6; } - elseif (($forceunitoutput == 'no' && $dimension > 100000) || (is_numeric($forceunitoutput) && $forceunitoutput == 3)) + elseif (($forceunitoutput == 'no' && $dimension > 100000 && $unit < 90) || (is_numeric($forceunitoutput) && $forceunitoutput == 3)) { $dimension = $dimension / 1000; $unit = $unit + 3; } + // Special case when we want output unit into pound or ounce + /* TODO + if ($unit < 90 && $type == 'weight' && is_numeric($forceunitoutput) && (($forceunitoutput == 98) || ($forceunitoutput == 99)) + { + $dimension = // convert dimension from standard unit into ounce or pound + $unit = $forceunitoutput; + } + if ($unit > 90 && $type == 'weight' && is_numeric($forceunitoutput) && $forceunitoutput < 90) + { + $dimension = // convert dimension from standard unit into ounce or pound + $unit = $forceunitoutput; + }*/ $ret=price($dimension, 0, $outputlangs, 0, 0, $round).' '.measuring_units_string($unit, $type); diff --git a/htdocs/product/card.php b/htdocs/product/card.php index f94c34d1804..3068cae0583 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1046,7 +1046,7 @@ else // Weight print ''.$langs->trans("Weight").''; print ''; - print $formproduct->select_measuring_units("weight_units","weight"); + print $formproduct->select_measuring_units("weight_units", "weight", (empty($conf->global->MAIN_WEIGHT_DEFAULT_UNIT)?0:$conf->global->MAIN_WEIGHT_DEFAULT_UNIT)); print ''; // Length if (empty($conf->global->PRODUCT_DISABLE_SIZE)) From 527ef8bdc88ced7d13516b0674a827aa88548717 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Jan 2019 19:02:38 +0100 Subject: [PATCH 200/307] Add nb of invoice to help cash fence --- .../compta/cashcontrol/cashcontrol_card.php | 23 +++++++++++++++++-- htdocs/langs/en_US/cashdesk.lang | 3 ++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index d494b5777f2..314a4641f12 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -228,6 +228,7 @@ if ($action=="create" || $action=="start") $initialbalanceforterminal=array(); $theoricalamountforterminal=array(); + $theoricalnbofinvoiceforterminal=array(); if (GETPOST('posnumber','alpha') != '' && GETPOST('posnumber','alpha') != '' && GETPOST('posnumber','alpha') != '-1') { @@ -269,8 +270,7 @@ if ($action=="create" || $action=="start") { /*$sql = "SELECT SUM(amount) as total FROM ".MAIN_DB_PREFIX."bank"; $sql.= " WHERE fk_account = ".$bankid;*/ - - $sql = "SELECT SUM(pf.amount) as total"; + $sql = "SELECT SUM(pf.amount) as total, COUNT(*) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as cp"; $sql.= " WHERE pf.fk_facture = f.rowid AND p.rowid = pf.fk_paiement AND cp.id = p.fk_paiement"; $sql.= " AND f.module_source = '".$db->escape($posmodule)."'"; @@ -299,6 +299,7 @@ if ($action=="create" || $action=="start") if ($obj) { $theoricalamountforterminal[$terminalid][$key] = price2num($theoricalamountforterminal[$terminalid][$key] + $obj->total); + $theoricalnbofinvoiceforterminal[$terminalid][$key] = $obj->nb; } } else dol_print_error($db); @@ -415,6 +416,24 @@ if ($action=="create" || $action=="start") print ''; print ''; + print ''; + // Initial amount + print ''.$langs->trans("NbOfInvoices").''; + print ''; + print ''; + // Amount per payment type + $i=0; + foreach($arrayofpaymentmode as $key => $val) + { + print ''; + print $theoricalnbofinvoiceforterminal[$terminalid][$key]; + print ''; + $i++; + } + // Save + print ''; + print ''; + print ''; // Initial amount print ''.$langs->trans("TheoricalAmount").''; diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index ba14b343954..836a9489b25 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -45,4 +45,5 @@ SearchProduct=Search product AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Theorical amount RealAmount=Real amount -CashFenceDone=Cash fence done for the period \ No newline at end of file +CashFenceDone=Cash fence done for the period +NbOfInvoices=Nb of invoices \ No newline at end of file From 8b1455f29ef10bb8d9b3dde25dfba77a51a8bd9a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Jan 2019 19:35:20 +0100 Subject: [PATCH 201/307] FIX Cash fence --- .../compta/cashcontrol/cashcontrol_list.php | 2 +- .../cashcontrol/class/cashcontrol.class.php | 2 +- htdocs/compta/cashcontrol/report.php | 71 ++++++------------- 3 files changed, 23 insertions(+), 52 deletions(-) diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php index 219a8d987af..11c14218440 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_list.php +++ b/htdocs/compta/cashcontrol/cashcontrol_list.php @@ -18,7 +18,7 @@ /** * \file cashcontrol_list.php - * \ingroup bank + * \ingroup cashdesk|takepos * \brief List page for cashcontrol */ diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php index 071be33fd1f..d0a10ec94da 100644 --- a/htdocs/compta/cashcontrol/class/cashcontrol.class.php +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -20,7 +20,7 @@ /** * \file cashcontrol/class/cashcontrol.class.php - * \ingroup bank + * \ingroup cashdesk|takepos * \brief This file is CRUD class file (Create/Read/Update/Delete) for cash fence table */ diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php index a2187e3b344..749d112f711 100644 --- a/htdocs/compta/cashcontrol/report.php +++ b/htdocs/compta/cashcontrol/report.php @@ -25,13 +25,14 @@ /** * \file htdocs/compta/cashcontrol/report.php - * \ingroup pos + * \ingroup cashdesk|takepos * \brief List of bank transactions */ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $id = GETPOST('id','int'); @@ -94,9 +95,9 @@ $sql.=" OR b.fk_account=".$conf->global->CASHDESK_ID_BANKACCOUNT_CB; $sql.=" OR b.fk_account=".$conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE; $sql.=")"; */ -$sql = "SELECT f.facnumber, pf.amount as total, cp.code"; -$sql.= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as cp"; -$sql.= " WHERE pf.fk_facture = f.rowid AND p.rowid = pf.fk_paiement AND cp.id = p.fk_paiement"; +$sql = "SELECT f.rowid as facid, f.facnumber, f.datef as do, pf.amount as amount, b.fk_account as bankid, cp.code"; +$sql.= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as cp, ".MAIN_DB_PREFIX."bank as b"; +$sql.= " WHERE pf.fk_facture = f.rowid AND p.rowid = pf.fk_paiement AND cp.id = p.fk_paiement AND p.fk_bank = b.rowid"; $sql.= " AND f.module_source = '".$db->escape($posmodule)."'"; $sql.= " AND f.pos_source = '".$db->escape($terminalid)."'"; $sql.= " AND f.paye = 1"; @@ -125,6 +126,12 @@ if ($resql) else print $langs->trans("CashControl")." - ".$langs->trans("Draft"); print "
    ".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'dayhour').""; + $invoicetmp = new Facture($db); + + + print "

    "; + print $langs->trans("InitialBankBalance").' - '.$langs->trans("Cash")." : ".price($cashcontrol->opening); + print "

    "; print '
    '; print ''."\n"; @@ -138,55 +145,17 @@ if ($resql) print_liste_field_titre($arrayfields['b.credit']['label'],$_SERVER['PHP_SELF'],'b.amount','',$param,'align="right"',$sortfield,$sortorder); print "\n"; - $balance = 0; // For balance - $balancecalculated = false; $posconciliatecol = 0; // Loop on each record $sign = 1; - $first='yes'; + $cash=$bank=$cheque=$other=0; $totalarray=array(); while ($i < min($num,$limit)) { $objp = $db->fetch_object($resql); - // If we are in a situation where we need/can show balance, we calculate the start of balance - if (! $balancecalculated && (! empty($arrayfields['balancebefore']['checked']) || ! empty($arrayfields['balance']['checked'])) && $mode_balance_ok) - { - if (! $account) - { - dol_print_error('', 'account is not defined but $mode_balance_ok is true'); - exit; - } - - // Loop on each record before - $sign = 1; - $i = 0; - $sqlforbalance='SELECT SUM(b.amount) as balance'; - $sqlforbalance.= " FROM "; - $sqlforbalance.= " ".MAIN_DB_PREFIX."bank_account as ba,"; - $sqlforbalance.= " ".MAIN_DB_PREFIX."bank as b"; - $sqlforbalance.= " WHERE b.fk_account = ba.rowid"; - $sqlforbalance.= " AND ba.entity IN (".getEntity('bank_account').")"; - $sqlforbalance.= " AND b.fk_account = ".$account; - $sqlforbalance.= " AND (b.datev < '" . $db->idate($db->jdate($objp->dv)) . "' OR (b.datev = '" . $db->idate($db->jdate($objp->dv)) . "' AND (b.dateo < '".$db->idate($db->jdate($objp->do))."' OR (b.dateo = '".$db->idate($db->jdate($objp->do))."' AND b.rowid < ".$objp->rowid."))))"; - $resqlforbalance = $db->query($sqlforbalance); - if ($resqlforbalance) - { - $objforbalance = $db->fetch_object($resqlforbalance); - if ($objforbalance) - { - $balance = $objforbalance->balance; - } - } - else dol_print_error($db); - - $balancecalculated=true; - } - - $balance = price2num($balance + ($sign * $objp->amount),'MT'); - if (empty($cachebankaccount[$objp->bankid])) { $bankaccounttmp = new Account($db); @@ -198,22 +167,22 @@ if ($resql) { $bankaccount = $cachebankaccount[$objp->bankid]; } - print ''; - if ($first == "yes") + /*if ($first == "yes") { print ''; print ''; print ''; print ''; $first = "no"; - } + }*/ print ''; // Ref print ''; if (! $i) $totalarray['nbfield']++; @@ -227,9 +196,10 @@ if ($resql) // Bank account print '\n"; if (! $i) $totalarray['nbfield']++; @@ -287,6 +257,7 @@ if ($resql) print $langs->trans("Cash").": ".price($cash)."

    "; print $langs->trans("PaymentTypeCB").": ".price($bank)."

    "; print $langs->trans("PaymentTypeCHQ").": ".price($cheque)."

    "; + if ($other) print $langs->trans("Other").": ".price($other)."

    "; print ""; //save totals to DB From 1188540b41a14808688c25dbe3106ad73fd21236 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Jan 2019 19:39:41 +0100 Subject: [PATCH 202/307] Sync transifex --- htdocs/langs/de_AT/agenda.lang | 1 - htdocs/langs/de_AT/banks.lang | 1 - htdocs/langs/de_AT/categories.lang | 1 - htdocs/langs/de_AT/products.lang | 1 - htdocs/langs/de_CH/agenda.lang | 1 - htdocs/langs/es_CL/admin.lang | 2 -- htdocs/langs/es_CL/agenda.lang | 1 - htdocs/langs/es_CL/banks.lang | 1 - htdocs/langs/es_CL/bills.lang | 3 --- htdocs/langs/es_CL/companies.lang | 1 - htdocs/langs/es_CL/orders.lang | 1 - htdocs/langs/es_CL/projects.lang | 1 - htdocs/langs/es_CL/stocks.lang | 1 - htdocs/langs/es_CO/admin.lang | 1 - htdocs/langs/es_MX/admin.lang | 1 - htdocs/langs/es_MX/banks.lang | 1 - htdocs/langs/es_MX/bills.lang | 1 - htdocs/langs/es_MX/products.lang | 1 - htdocs/langs/es_MX/stocks.lang | 1 - htdocs/langs/fr_BE/bills.lang | 3 --- htdocs/langs/fr_CA/admin.lang | 1 - htdocs/langs/fr_CA/agenda.lang | 1 - htdocs/langs/fr_CA/exports.lang | 3 --- htdocs/langs/fr_CA/products.lang | 1 - htdocs/langs/fr_FR/cashdesk.lang | 7 +++++++ htdocs/langs/nl_BE/categories.lang | 1 - htdocs/langs/nl_BE/stocks.lang | 2 -- htdocs/langs/pt_BR/admin.lang | 3 --- htdocs/langs/pt_BR/agenda.lang | 1 - htdocs/langs/pt_BR/bills.lang | 3 --- htdocs/langs/pt_BR/categories.lang | 1 - htdocs/langs/pt_BR/companies.lang | 1 - htdocs/langs/pt_BR/exports.lang | 4 ---- htdocs/langs/pt_BR/orders.lang | 1 - htdocs/langs/pt_BR/paybox.lang | 1 - htdocs/langs/pt_BR/products.lang | 1 - htdocs/langs/pt_BR/projects.lang | 1 - htdocs/langs/pt_BR/stocks.lang | 4 ---- htdocs/langs/pt_BR/users.lang | 1 - 39 files changed, 7 insertions(+), 56 deletions(-) diff --git a/htdocs/langs/de_AT/agenda.lang b/htdocs/langs/de_AT/agenda.lang index 54235c2b65e..978befe9040 100644 --- a/htdocs/langs/de_AT/agenda.lang +++ b/htdocs/langs/de_AT/agenda.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - agenda Actions=Termine LocalAgenda=interner Kalender -Events=Termine EventsNb=Anzahl der Termine ListOfActions=Terminliste EventOnFullDay=Terminliste diff --git a/htdocs/langs/de_AT/banks.lang b/htdocs/langs/de_AT/banks.lang index a56f7dff964..78f8663fd90 100644 --- a/htdocs/langs/de_AT/banks.lang +++ b/htdocs/langs/de_AT/banks.lang @@ -23,7 +23,6 @@ BankAccountDomiciliation=Konto-Adresse LabelBankCashAccount=Bank- oder Kassabezeichnung BankType0=Sparkonto\n BankType2=Kassa -Account=Kontonummer IncludeClosedAccount=Geschlossene konten miteinbeziehen StatusAccountClosed=geschlossen WithdrawalPayment=Widerrufsrecht Zahlung diff --git a/htdocs/langs/de_AT/categories.lang b/htdocs/langs/de_AT/categories.lang index 39e26fbf16b..6daa1c3efb2 100644 --- a/htdocs/langs/de_AT/categories.lang +++ b/htdocs/langs/de_AT/categories.lang @@ -1,3 +1,2 @@ # Dolibarr language file - Source file is en_US - categories CategoryExistsAtSameLevel=Gleichnamige Kategorie auf diesem Level gefunden -DeleteFromCat=Aus dieser Kategorie entfernen diff --git a/htdocs/langs/de_AT/products.lang b/htdocs/langs/de_AT/products.lang index 9b23a8fba00..3957c4a86c0 100644 --- a/htdocs/langs/de_AT/products.lang +++ b/htdocs/langs/de_AT/products.lang @@ -19,7 +19,6 @@ SellingPriceHT=Verkaufspreis (netto) SellingPriceTTC=Verkaufspreis (brutto) MinPrice=Preisuntergrenze CantBeLessThanMinPrice=Der aktuelle Verkaufspreis unterschreitet die Preisuntergrenze dieses Produkts (%s ohne MwSt.) -ContractStatusClosed=geschlossen NoMatchFound=Keine Treffer gefunden ProductAssociationList=Liste der verknüpften Produkte/Services: Name des Produkts/des Service (Stückzahl) DeleteProduct=Produkt/Service löschen diff --git a/htdocs/langs/de_CH/agenda.lang b/htdocs/langs/de_CH/agenda.lang index e2a0bfdcccd..07ad040a915 100644 --- a/htdocs/langs/de_CH/agenda.lang +++ b/htdocs/langs/de_CH/agenda.lang @@ -10,7 +10,6 @@ AgendaAutoActionDesc=Definieren Sie hier Ereignisse für die Dolibarr einen Kale ShipmentValidatedInDolibarr=Versand %s in Dolibarr geprüft OrderCanceledInDolibarr=Auftrag storniert %s ShippingSentByEMail=Lieferung %s per Email versendet -InterventionSentByEMail=Intervention %s gesendet via E-Mail AgendaHideBirthdayEvents=Geburtstage von Kontakten verstecken DateActionBegin=Beginnzeit des Ereignis DateStartPlusOne=Anfangsdatum + 1 Stunde diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 27c8e300d02..a40e99a796c 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -604,7 +604,6 @@ PermanentLeftSearchForm=Formulario de búsqueda permanente en el menú de la izq EnableMultilangInterface=Habilitar interfaz multilingüe EnableShowLogo=Mostrar logo en el menú de la izquierda CompanyInfo=Empresa / Organización -CompanyName=Nombre CompanyCurrency=Moneda principal DoNotSuggestPaymentMode=No sugiera NoActiveBankAccountDefined=No se definió una cuenta bancaria activa @@ -969,7 +968,6 @@ Buy=Comprar Sell=Vender InvoiceDateUsed=Fecha de la factura utilizada YourCompanyDoesNotUseVAT=Su empresa ha sido definida para no usar el IVA (Inicio - Configuración - Compañía / Organización), por lo que no hay opciones de IVA para configurar. -AccountancyCode=Código de contabilidad AccountancyCodeSell=Cuenta de venta. código AccountancyCodeBuy=Cuenta de compra código AgendaSetup=Configuración del módulo de eventos y agenda diff --git a/htdocs/langs/es_CL/agenda.lang b/htdocs/langs/es_CL/agenda.lang index e77382bd868..e16e293a8d9 100644 --- a/htdocs/langs/es_CL/agenda.lang +++ b/htdocs/langs/es_CL/agenda.lang @@ -52,7 +52,6 @@ SupplierOrderSentByEMail=Pedido del proveedor %s enviado por EMail SupplierInvoiceSentByEMail=Factura del proveedor %s enviado por EMail ShippingSentByEMail=Envío %s enviado por EMail ShippingValidated=Envío %s validado -InterventionSentByEMail=Intervención %s enviado por EMail ProposalDeleted=Propuesta eliminada OrderDeleted=Orden eliminada InvoiceDeleted=Factura borrada diff --git a/htdocs/langs/es_CL/banks.lang b/htdocs/langs/es_CL/banks.lang index 73d6e9eae94..cd9413f895f 100644 --- a/htdocs/langs/es_CL/banks.lang +++ b/htdocs/langs/es_CL/banks.lang @@ -65,7 +65,6 @@ AddBankRecord=Añadir entrada AddBankRecordLong=Agregar entrada manualmente DateConciliating=Fecha de conciliación BankLineConciliated=Entrada reconciliada -CustomerInvoicePayment=Pago del Cliente SupplierInvoicePayment=Pago del proveedor WithdrawalPayment=Pago de retiros SocialContributionPayment=Pago de impuestos sociales/fiscales diff --git a/htdocs/langs/es_CL/bills.lang b/htdocs/langs/es_CL/bills.lang index 9c34e11775f..e1da06b40d4 100644 --- a/htdocs/langs/es_CL/bills.lang +++ b/htdocs/langs/es_CL/bills.lang @@ -230,8 +230,6 @@ AddCreditNote=Crear nota de crédito ShowDiscount=Mostrar descuento ShowReduc=Muestra la deducción GlobalDiscount=Descuento global -CreditNote=Nota de crédito -CreditNotes=Notas de crédito Deposit=Pago inicial Deposits=Bajo pago DiscountFromCreditNote=Descuento de la nota de crédito %s @@ -256,7 +254,6 @@ IdSocialContribution=Identificación de pago de impuesto social / fiscal PaymentId=Identificación de pago PaymentRef=Pago ref. InvoiceId=Id de factura -InvoiceRef=Factura ref. InvoiceDateCreation=Fecha de creación de la factura InvoiceStatus=Estado de la factura InvoiceNote=Nota de factura diff --git a/htdocs/langs/es_CL/companies.lang b/htdocs/langs/es_CL/companies.lang index 249ab6e6b41..ad25154bf97 100644 --- a/htdocs/langs/es_CL/companies.lang +++ b/htdocs/langs/es_CL/companies.lang @@ -83,7 +83,6 @@ VATIntraShort=Identificación del impuesto VATIntraSyntaxIsValid=La sintaxis es valida VATReturn=Devolución del IVA ProspectCustomer=Prospecto/Cliente -Prospect=Prospectar CustomerCard=Tarjeta Cliente CustomerRelativeDiscount=Descuento relativo del cliente SupplierRelativeDiscount=Descuento relativo del vendedor diff --git a/htdocs/langs/es_CL/orders.lang b/htdocs/langs/es_CL/orders.lang index a151781cc48..d83a1561aa4 100644 --- a/htdocs/langs/es_CL/orders.lang +++ b/htdocs/langs/es_CL/orders.lang @@ -56,7 +56,6 @@ AddToDraftOrders=Añadir a orden de borrador OrdersOpened=Órdenes para procesar NoDraftOrders=No hay borradores de pedidos NoOrder=Sin orden -NoSupplierOrder=Sin orden de compra LastOrders=Últimas %s pedidos de clientes LastCustomerOrders=Últimas %s pedidos de clientes LastSupplierOrders=Últimas %s órdenes de compra diff --git a/htdocs/langs/es_CL/projects.lang b/htdocs/langs/es_CL/projects.lang index 38a931d2b48..7e74822f74f 100644 --- a/htdocs/langs/es_CL/projects.lang +++ b/htdocs/langs/es_CL/projects.lang @@ -22,7 +22,6 @@ ProjectCategories=Etiquetas / categorías de proyecto ConfirmDeleteAProject=¿Seguro que quieres eliminar este proyecto? ConfirmDeleteATask=¿Seguro que quieres eliminar esta tarea? ShowProject=Mostrar proyecto -ShowTask=Mostrar tarea SetProject=Establecer proyecto NoProject=Ningún proyecto definido o propiedad TimeSpentByYou=Tiempo pasado por ti diff --git a/htdocs/langs/es_CL/stocks.lang b/htdocs/langs/es_CL/stocks.lang index 1922b6ff759..3ec3de75e9f 100644 --- a/htdocs/langs/es_CL/stocks.lang +++ b/htdocs/langs/es_CL/stocks.lang @@ -13,7 +13,6 @@ CancelSending=Cancelar el envío StocksByLotSerial=Stock por lote/serie ErrorWarehouseRefRequired=Se requiere el nombre de referencia del almacén ListOfWarehouses=Lista de almacenes -ListOfStockMovements=Lista de movimientos de stock ListOfInventories=Lista de inventarios MovementId=Identificación del movimiento StockMovementForId=ID de movimiento %d diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index b2e59fdd9a9..a652afe7502 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -68,4 +68,3 @@ CurrentHour=Hora del PHP (servidor) Position=Puesto DictionaryCanton=Departamento LTRate=Tipo -CompanyName=Nombre diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index 49489213a95..33d57ef30e5 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -125,7 +125,6 @@ Module770Name=Reporte de gastos DictionaryCanton=Estado/Provincia DictionaryAccountancyJournal=Diarios de contabilidad Upgrade=Actualizar -CompanyName=Nombre LDAPFieldFirstName=Nombre(s) AGENDA_SHOW_LINKED_OBJECT=Mostrar objeto vinculado en la vista de agenda ConfFileMustContainCustom=Instalar o construir un módulo externo desde la aplicación necesita guardar los archivos del módulo en el directorio %s . Para que este directorio sea procesado por Dolibarr, debe configurar su conf/conf.php para agregar las 2 líneas de directiva: $dolibarr_main_url_root_alt='/custom';
    $dolibarr_main_document_root_alt='%s/custom'; diff --git a/htdocs/langs/es_MX/banks.lang b/htdocs/langs/es_MX/banks.lang index 37a09ed7694..c2ea66eabab 100644 --- a/htdocs/langs/es_MX/banks.lang +++ b/htdocs/langs/es_MX/banks.lang @@ -46,7 +46,6 @@ AddBankRecord=Añadir entrada AddBankRecordLong=Añadir entrada manualmente DateConciliating=Fecha de conciliación BankLineConciliated=Entrada reconciliada -CustomerInvoicePayment=Pago de cliente WithdrawalPayment=Pago de retiro SocialContributionPayment=Pago de impuesto social/fiscal TransferFromToDone=La transferencia de %s hacia %s de %s %s ha sido registrada. diff --git a/htdocs/langs/es_MX/bills.lang b/htdocs/langs/es_MX/bills.lang index bc4047a4106..1bcc2895f3f 100644 --- a/htdocs/langs/es_MX/bills.lang +++ b/htdocs/langs/es_MX/bills.lang @@ -45,7 +45,6 @@ BillTo=Hacia StandingOrder=Orden de domiciliación bancaria SupplierBillsToPay=Facturas de proveedores no pagadas CustomerBillsUnpaid=Facturas de clientes no pagadas -CreditNote=Nota de crédito ReasonDiscount=Razón PaymentTypeCB=Tarjeta de crédito PaymentTypeShortCB=Tarjeta de crédito diff --git a/htdocs/langs/es_MX/products.lang b/htdocs/langs/es_MX/products.lang index 020764ca7f6..7577107fe4e 100644 --- a/htdocs/langs/es_MX/products.lang +++ b/htdocs/langs/es_MX/products.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - products ProductId=ID de producto / servicio CantBeLessThanMinPrice=El precio de venta no puede ser inferior al mínimo permitido para este producto (%s sin impuestos). Este mensaje también puede aparecer si escribe un descuento demasiado importante. -ContractStatusClosed=Cerrada ErrorProductBadRefOrLabel=Valor incorrecto para referencia o etiqueta. ProductsAndServicesArea=Área de productos y servicios ProductsArea=Área de producto diff --git a/htdocs/langs/es_MX/stocks.lang b/htdocs/langs/es_MX/stocks.lang index 07ee78f0dea..6b99216feac 100644 --- a/htdocs/langs/es_MX/stocks.lang +++ b/htdocs/langs/es_MX/stocks.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - stocks -Stock=stock Location=Ubicación inventoryEdit=Editar inventoryDeleteLine=Borrar línea diff --git a/htdocs/langs/fr_BE/bills.lang b/htdocs/langs/fr_BE/bills.lang index 8fe53169113..bb84bd2017d 100644 --- a/htdocs/langs/fr_BE/bills.lang +++ b/htdocs/langs/fr_BE/bills.lang @@ -16,7 +16,6 @@ UsedByInvoice=Utilisée pour payer la facture %s PredefinedInvoices=Factures prédéfinies SupplierBills=factures fournisseurs Payment=Paiement -Payments=Paiements DeletePayment=Supprimer paiement SupplierPayments=Paiements fournisseurs ReceivedPayments=Paiements reçus @@ -43,8 +42,6 @@ EscompteOfferedShort=Ristourne Discounts=Ristournes AddDiscount=Créer ristourne ShowDiscount=Visualiser le crédit -CreditNote=Note de crédit -CreditNotes=Notes de crédit DiscountFromCreditNote=Remise issue de la note de crédit %s PaymentTypeLIQ=En espèces PaymentTypeShortLIQ=En espèces diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 0a4118bdacf..a66102ceb59 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -201,7 +201,6 @@ UseUnits=Définir une unité de mesure pour la quantité lors de la commande, l' IsNotADir=n'est pas un répertoire BarcodeDescDATAMATRIX=Codebarre de type Datamatrix BarcodeDescQRCODE=Codebarre de type QRcode -WithdrawalsSetup=Configuration du module Ordres de paiement de débit direct SendingsAbility=Fiches d'expédition de soutien pour les livraisons aux clients FCKeditorForMail=Création / édition WYSIWIG pour tous les courriers (sauf Outils-> eMailing) NotTopTreeMenuPersonalized=Menus personnalisés non liés à une entrée de menu supérieure diff --git a/htdocs/langs/fr_CA/agenda.lang b/htdocs/langs/fr_CA/agenda.lang index 98f60f4c0c1..a485f8ab934 100644 --- a/htdocs/langs/fr_CA/agenda.lang +++ b/htdocs/langs/fr_CA/agenda.lang @@ -14,7 +14,6 @@ ShipmentDeletedInDolibarr=Envoi %s supprimé OrderCreatedInDolibarr=L'ordre %s a été créé OrderDeliveredInDolibarr=Commande %s classée Délivrée ShippingSentByEMail=Bon expédition %s envoyé par EMail -InterventionSentByEMail=Intervention %s envoyée par EMail ProposalDeleted=Proposition supprimée AgendaModelModule=Modèles de document pour l'événement AgendaShowBirthdayEvents=Afficher les dates d'anniversaire des contacts diff --git a/htdocs/langs/fr_CA/exports.lang b/htdocs/langs/fr_CA/exports.lang index d1b114f8f3d..33f87265ee6 100644 --- a/htdocs/langs/fr_CA/exports.lang +++ b/htdocs/langs/fr_CA/exports.lang @@ -1,9 +1,7 @@ # Dolibarr language file - Source file is en_US - exports -ExportsArea=Zone d'exportation ImportArea=Zone d'importation NewExport=Nouvelle exportation NewImport=Nouvelle importation -ExportableDatas=Ensemble de données exportables ImportableDatas=Ensemble de données Importable SelectExportDataSet=Choisissez l'ensemble de données que vous souhaitez exporter ... SelectImportDataSet=Choisissez l'ensemble de données que vous souhaitez importer ... @@ -34,7 +32,6 @@ FormatedExportDesc3=Lorsque les données à exporter sont sélectionnées, vous Sheet=Drap NoImportableData=Aucune donnée importable (aucun module avec des définitions permettant d'importer des données) SQLUsedForExport=Requête SQL utilisée pour créer un fichier d'exportation -LineId=Id de ligne LineLabel=Étiquette de ligne LineDescription=Description de la ligne LineUnitPrice=Prix ​​unitaire de la ligne diff --git a/htdocs/langs/fr_CA/products.lang b/htdocs/langs/fr_CA/products.lang index 02bd444e0e5..e9cba99c00d 100644 --- a/htdocs/langs/fr_CA/products.lang +++ b/htdocs/langs/fr_CA/products.lang @@ -48,7 +48,6 @@ SoldAmount=Montant vendu PurchasedAmount=Montant acheté MinPrice=Min. prix de vente CantBeLessThanMinPrice=Le prix de vente ne peut être inférieur au minimum autorisé pour ce produit (%s sans taxes). Ce message peut également apparaître si vous tapez une remise trop importante. -ContractStatusClosed=Fermées ErrorProductBadRefOrLabel=Valeur incorrecte pour référence ou étiquette. ErrorProductClone=Il y a eu un problème en essayant de cloner le produit ou le service. SupplierRef=Produit ref. diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index 7e3edff4ce6..7895f905265 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -42,3 +42,10 @@ Place=Marché TakeposConnectorNecesary='Connecteur TakePOS' requis OrderPrinters=Commande imprimantes SearchProduct=Rechercher un produit +Receipt=Bon +Header=Entête +Footer=Bas de page +AmountAtEndOfPeriod=Montant en fin de période (jour, mois ou année) +TheoricalAmount=Montant théorique +RealAmount=Montant réel +CashFenceDone=Clôture de caisse faite pour la période diff --git a/htdocs/langs/nl_BE/categories.lang b/htdocs/langs/nl_BE/categories.lang index 02743f2348b..fbe021eae9e 100644 --- a/htdocs/langs/nl_BE/categories.lang +++ b/htdocs/langs/nl_BE/categories.lang @@ -62,7 +62,6 @@ CatSupLinks=Koppelingen tussen leveranciers en tags/categorieën CatCusLinks=Koppelingen tussen klanten/prospects en tags/categorieën CatProdLinks=Koppelingen tussen producten/diensten en tags/categorieën CatProJectLinks=Koppelingen tussen projecten en tags/categorieën -DeleteFromCat=Verwijderen uit tags/categorie CategoriesSetup=Tags/categorieën instellingen CategorieRecursiv=Automatische koppeling met bovenliggende tag/categorie CategorieRecursivHelp=Indien geactiveerd zal het product ook gekoppeld worden met de bovenliggende categorie wanneer een subcategorie toegevoegd wordt. diff --git a/htdocs/langs/nl_BE/stocks.lang b/htdocs/langs/nl_BE/stocks.lang index f61acb5d25d..4a966b06687 100644 --- a/htdocs/langs/nl_BE/stocks.lang +++ b/htdocs/langs/nl_BE/stocks.lang @@ -1,6 +1,4 @@ # Dolibarr language file - Source file is en_US - stocks -Movements=Mutaties -ListOfStockMovements=Voorraadmutatielijst SelectProductInAndOutWareHouse=Kies een product, een aantal, een van-magazijn, een naar-magazijn, en klik "%s". Als alle nodige bewegingen zijn aangeduid, klik op "%s". inventoryDraft=Actief inventoryConfirmCreate=Aanmaken diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 5dc6f379ef4..580099e2a95 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -700,7 +700,6 @@ PermanentLeftSearchForm=Formulário permanente de pesquisa no menu esquerdo DefaultLanguage=Idioma padrão a ser usado (código do idioma) EnableMultilangInterface=Habilitar interface multi-idioma EnableShowLogo=Exibir logo no menu esquerdo -CompanyName=Nome CompanyAddress=Endereço CompanyZip=CEP CompanyTown=Município @@ -992,7 +991,6 @@ BarcodeDescQRCODE=Código de barras do tipo QR code GenbarcodeLocation=Ferramenta em linha de comando para geração de código de barras (usado pelo mecanismo interno para alguns tipos de código de barras) BarcodeInternalEngine=Mecanismo interno BarCodeNumberManager=Gerente de auto definir números de código de barras -WithdrawalsSetup=Configuração do módulo de pedidos com pagamento por Débito direto ExternalRSSSetup=Configurações importantes de RSS externo NewRSS=Novo RSS Feed RSSUrl=URL de RSS @@ -1050,7 +1048,6 @@ SupposedToBeInvoiceDate=Data usada na fatura Buy=Compra Sell=Venda InvoiceDateUsed=Data usada na fatura -AccountancyCode=Código na Contabilidade AccountancyCodeSell=Código de contas de vendas AccountancyCodeBuy=Código de contas de compras AgendaSetup=Configurações do módulo de eventos e agenda diff --git a/htdocs/langs/pt_BR/agenda.lang b/htdocs/langs/pt_BR/agenda.lang index 48f1162bc98..52656c887d0 100644 --- a/htdocs/langs/pt_BR/agenda.lang +++ b/htdocs/langs/pt_BR/agenda.lang @@ -55,7 +55,6 @@ SupplierOrderSentByEMail=Pedido de fornecedor %s enviado por e-mail SupplierInvoiceSentByEMail=Fatura de fornecedor %s enviado por e-mail ShippingSentByEMail=Frete %s enviado por e-mail ShippingValidated=Envio %s validado -InterventionSentByEMail=Intervenção %s enviado por e-mail ProposalDeleted=Proposta excluída OrderDeleted=Pedido excluído InvoiceDeleted=Fatura excluída diff --git a/htdocs/langs/pt_BR/bills.lang b/htdocs/langs/pt_BR/bills.lang index a4e10bb560e..ca1d2ef00aa 100644 --- a/htdocs/langs/pt_BR/bills.lang +++ b/htdocs/langs/pt_BR/bills.lang @@ -218,8 +218,6 @@ EditGlobalDiscounts=Editar desconto fixo ShowDiscount=Mostrar desconto ShowReduc=Mostrar o desconto GlobalDiscount=Desconto global -CreditNote=Nota de crédito -CreditNotes=Notas de crédito Deposit=Depósito Deposits=Depósitos DiscountFromCreditNote=Desconto de nota de crédito %s @@ -234,7 +232,6 @@ IdSocialContribution=ID contribuição social PaymentId=ID pagamento PaymentRef=Ref. do pagamento InvoiceId=ID fatura -InvoiceRef=Ref. fatura InvoiceDateCreation=Data da criação da fatura InvoiceStatus=Status da fatura InvoiceNote=Nota de fatura diff --git a/htdocs/langs/pt_BR/categories.lang b/htdocs/langs/pt_BR/categories.lang index e622b9b09e2..d7b6b1d718d 100644 --- a/htdocs/langs/pt_BR/categories.lang +++ b/htdocs/langs/pt_BR/categories.lang @@ -71,7 +71,6 @@ CatSupLinks=Ligações entre fornecedores e tags / categorias CatCusLinks=Relação/links entre clientes / perspectivas e tags / categorias CatProdLinks=Relação/links entre produtos / serviços e tags / categorias CatProJectLinks=Links entre projetos e tags/categorias -DeleteFromCat=Remover de tags / categoria ExtraFieldsCategories=atributos complementares CategoriesSetup=Configuração Tags / categorias CategorieRecursiv=Fazer a ligação com os pais tag/categoria automaticamente diff --git a/htdocs/langs/pt_BR/companies.lang b/htdocs/langs/pt_BR/companies.lang index a0fb7ab48ed..7552724fd3c 100644 --- a/htdocs/langs/pt_BR/companies.lang +++ b/htdocs/langs/pt_BR/companies.lang @@ -101,7 +101,6 @@ ProfId3DZ=Numero de Contribuinte ProfId4DZ=Numero de Identificação Social VATIntraSyntaxIsValid=Sintaxe é válida ProspectCustomer=Possível cliente / Cliente -Prospect=Prospecto de cliente CustomerRelativeDiscount=Desconto relativo do cliente CustomerRelativeDiscountShort=Desconto relativo CompanyHasRelativeDiscount=Esse cliente tem um desconto padrão de %s%% diff --git a/htdocs/langs/pt_BR/exports.lang b/htdocs/langs/pt_BR/exports.lang index 7eed4f12f5d..1dd24b03c79 100644 --- a/htdocs/langs/pt_BR/exports.lang +++ b/htdocs/langs/pt_BR/exports.lang @@ -1,8 +1,6 @@ # Dolibarr language file - Source file is en_US - exports -ExportsArea=Área de exportações ImportArea=Área de importação NewImport=Nova importação -ExportableDatas=Conjunto de dados que podem ser exportados ImportableDatas=Conjunto de dados que podem ser importados SelectExportDataSet=Escolha um conjunto predefinido de dados que deseja exportar... SelectImportDataSet=Escolha um conjunto predefinido de dados que deseja importar... @@ -13,7 +11,6 @@ ImportModelName=Nome do perfil de importação ImportModelSaved=Perfil de importação guardado com o nome de %s. DatasetToImport=Conjunto de dados a importar NowClickToGenerateToBuildExportFile=Agora, faça click em "Gerar" para gerar o arquivo exportação... -AvailableFormats=Formatos disponíveis FormatedImport=Assistente de importação FormatedImportDesc2=O primeiro passo consiste em escolher o tipo de dado que deve importar, logo o arquivo e a continuação escolher os campos que deseja importar. FormatedExport=Assistente de exportação @@ -22,7 +19,6 @@ FormatedExportDesc3=Uma vez selecionados os dados, é possível escolher o forma NoImportableData=Não existe tipo de dados importavel (não existe nenhum módulo com definições de dados importavel ativado) FileSuccessfullyBuilt=Arquivo gerado SQLUsedForExport=Pedido de SQL usado para construir exportação de arquivo -LineId=Id da Linha LineLabel=Rótulo de linha LineDescription=Descrição da Linha LineUnitPrice=Preço Unitário da Linha diff --git a/htdocs/langs/pt_BR/orders.lang b/htdocs/langs/pt_BR/orders.lang index 178bb8c6cb5..67d45e2bdac 100644 --- a/htdocs/langs/pt_BR/orders.lang +++ b/htdocs/langs/pt_BR/orders.lang @@ -6,7 +6,6 @@ Order=Pedido PdfOrderTitle=Pedido Orders=Pedidos OrderLine=Linha de Comando -OrderDate=Data Pedido OrderDateShort=Data do pedido OrderToProcess=Pedido a processar NewOrder=Novo Pedido diff --git a/htdocs/langs/pt_BR/paybox.lang b/htdocs/langs/pt_BR/paybox.lang index 49ab60c63fd..fef05a17b9b 100644 --- a/htdocs/langs/pt_BR/paybox.lang +++ b/htdocs/langs/pt_BR/paybox.lang @@ -7,7 +7,6 @@ ThisScreenAllowsYouToPay=Esta página lhe permite fazer seu pagamento on-line de ThisIsInformationOnPayment=Aqui está a informação sobre o pagamento a realizar Creditor=Beneficiário PayBoxDoPayment=Pagar com Cartão de Débito ou Crédito (Paybox) -ToPay=Realizar pagamento YouWillBeRedirectedOnPayBox=Va a ser redirecionado a a página segura de Paybox para indicar seu cartão de crédito ToOfferALinkForOnlinePayment=URL para %s pagamento ToOfferALinkForOnlinePaymentOnOrder=URL que oferece uma interface de pagamento on-line %s baseada no valor de un pedido de cliente diff --git a/htdocs/langs/pt_BR/products.lang b/htdocs/langs/pt_BR/products.lang index f997ea2f9fb..227c9d52c11 100644 --- a/htdocs/langs/pt_BR/products.lang +++ b/htdocs/langs/pt_BR/products.lang @@ -35,7 +35,6 @@ SoldAmount=Total vendido PurchasedAmount=Total comprado MinPrice=Preço de venda min. CantBeLessThanMinPrice=O preço de venda não deve ser inferior ao mínimo para este produto (%s ICMS) -ContractStatusClosed=Encerrado ErrorProductBadRefOrLabel=O valor da referencia ou etiqueta é incorreto ErrorProductClone=Aconteceu um problema durante a clonação do produto ou serviço. SupplierCard=Ficha do fornecedor diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index 933376d889b..02d264d4c64 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -22,7 +22,6 @@ ConfirmDeleteATask=Você tem certeza que deseja excluir esta tarefa? OpenedProjects=Projetos em andamento OpenedTasks=Tarefas em andamento ShowProject=Mostrar projeto -ShowTask=Mostrar tarefa NoProject=Nenhum Projeto Definido TimeSpent=Dispêndio de tempo TimeSpentByUser=Tempo gasto por usuário diff --git a/htdocs/langs/pt_BR/stocks.lang b/htdocs/langs/pt_BR/stocks.lang index ca15a6fe7fe..2a5a83701c8 100644 --- a/htdocs/langs/pt_BR/stocks.lang +++ b/htdocs/langs/pt_BR/stocks.lang @@ -6,15 +6,11 @@ WarehouseTarget=Armazém de destino ValidateSending=Apagar envio CancelSending=Cancelar envio DeleteSending=Apagar envio -Stock=Estoque -Stocks=Estoques StocksByLotSerial=Estoques por lote/nº de série LotSerial=Lotes/Series LotSerialList=Listagem de lotes/series -Movements=Movimentações ErrorWarehouseRefRequired=A referência do armazém é necessária ListOfWarehouses=Lista de armazéns -ListOfStockMovements=Lista de movimentações de estoque StocksArea=Setor de armazenagem NumberOfProducts=Número total de produtos CorrectStock=Corrigir estoque diff --git a/htdocs/langs/pt_BR/users.lang b/htdocs/langs/pt_BR/users.lang index 36a506f9d86..02f5f3d46e1 100644 --- a/htdocs/langs/pt_BR/users.lang +++ b/htdocs/langs/pt_BR/users.lang @@ -24,7 +24,6 @@ ConfirmEnableUser=Tem certeza que deseja ativar o usuário %s? ConfirmReinitPassword=Tem certeza que deseja gerar uma nova senha para o usuário %s? ConfirmSendNewPassword=Tem certeza que deseja gerar e enviar uma nova senha para o usuário %s? NewUser=Novo usuário -CreateUser=Criar usuário LoginNotDefined=O usuário não está definido NameNotDefined=O nome não está definido ListOfUsers=Lista de usuário From 087a4400b0db5ccf4e3d9b293758fcfe957df186 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 Jan 2019 01:05:42 +0100 Subject: [PATCH 203/307] FIX Default value on sales representative on third party creation --- htdocs/societe/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index d90c8f2a1f0..7fd461000ef 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1382,7 +1382,8 @@ else print '
    '; print ''; // Incoterms From f85389ac296fc7e3fd28ae1c99b8ba20bf187946 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 Jan 2019 01:11:34 +0100 Subject: [PATCH 204/307] Fix missing td column --- htdocs/admin/defaultvalues.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/htdocs/admin/defaultvalues.php b/htdocs/admin/defaultvalues.php index 84271cff38f..6d56ba415c1 100644 --- a/htdocs/admin/defaultvalues.php +++ b/htdocs/admin/defaultvalues.php @@ -376,6 +376,11 @@ if ($result) print ''; } + if (! empty($conf->multicompany->enabled) && !$user->entity) + { + print ''; + } + // Actions print ''; // Payment type (VIR, LIQ, ...) $labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->type_libelle; -print ''; +print ''; + +// Amount +print ''; $disable_delete = 0; // Bank account @@ -302,9 +307,6 @@ print ''; -// Amount -print ''; - print '
    '.$langs->trans("InitialBankBalance").' - '.$langs->trans("Cash").''.price($cashcontrol->opening).'
    '; - print $objp->facnumber; + $invoicetmp->fetch($objp->facid); + print $invoicetmp->getNomUrl(1); print ''; print $bankaccount->getNomUrl(1); - if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->id) $cash+=$objp->amount; - if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->id) $bank+=$objp->amount; - if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE==$bankaccount->id) $cheque+=$objp->amount; + if ($conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->id) $cash+=$objp->amount; + elseif ($conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->id) $bank+=$objp->amount; + elseif ($conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE==$bankaccount->id) $cheque+=$objp->amount; + else $other+=$objp->amount; print "'.fieldLabel('AllocateCommercial','commercial_id').''; $userlist = $form->select_dolusers('', '', 0, null, 0, '', '', 0, 0, 0, '', 0, '', '', 0, 1); - print $form->multiselectarray('commercial', $userlist, (count(GETPOST('commercial', 'array')) > 0?GETPOST('commercial', 'array'):(empty($user->rights->societe->client->voir)?array($user->id):array())), null, null, null, null, "90%"); + $selected = (count(GETPOST('commercial', 'array')) > 0 ? GETPOST('commercial', 'array') : (GETPOST('commercial', 'int') > 0 ? array(GETPOST('commercial', 'int')) : (empty($user->rights->societe->client->voir)?array($user->id):array()))); + print $form->multiselectarray('commercial', $userlist, $selected, null, null, null, null, "90%"); print '
    '; if ($action != 'edit' || GETPOST('rowid') != $obj->rowid) From 68802c659e9307a61019e1e0f053b63dfe9e2735 Mon Sep 17 00:00:00 2001 From: Marc de Lima Lucio Date: Tue, 8 Jan 2019 11:41:58 +0100 Subject: [PATCH 205/307] FIX: action list: add printFieldListSelect and printFieldListWhere hooks --- htdocs/comm/action/list.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php index ed2ce1340c7..d20b3050a55 100644 --- a/htdocs/comm/action/list.php +++ b/htdocs/comm/action/list.php @@ -235,8 +235,15 @@ $sql.= " a.fk_contact, a.note, a.percent as percent,"; $sql.= " a.fk_element, a.elementtype,"; $sql.= " c.code as type_code, c.libelle as type_label,"; $sql.= " sp.lastname, sp.firstname, sp.email, sp.phone, sp.address, sp.phone as phone_pro, sp.phone_mobile, sp.phone_perso, sp.fk_pays as country_id"; + // Add fields from extrafields foreach ($extrafields->attribute_label as $key => $val) $sql.=($extrafields->attribute_type[$key] != 'separate' ? ",ef.".$key.' as options_'.$key : ''); + +// Add fields from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + $sql.= " FROM ".MAIN_DB_PREFIX."actioncomm as a"; $sql.=" LEFT JOIN ".MAIN_DB_PREFIX."actioncomm_extrafields as ef ON (a.id = ef.fk_object) "; if (! $user->rights->societe->client->voir && ! $socid) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc"; @@ -307,9 +314,15 @@ if ($filtert > 0 || $usergroup > 0) if ($dateselect > 0) $sql.= " AND ((a.datep2 >= '".$db->idate($dateselect)."' AND a.datep <= '".$db->idate($dateselect+3600*24-1)."') OR (a.datep2 IS NULL AND a.datep > '".$db->idate($dateselect-3600)."' AND a.datep <= '".$db->idate($dateselect+3600*24-1)."'))"; if ($datestart > 0) $sql.= " AND a.datep BETWEEN '".$db->idate($datestart)."' AND '".$db->idate($datestart+3600*24-1)."'"; if ($dateend > 0) $sql.= " AND a.datep2 BETWEEN '".$db->idate($dateend)."' AND '".$db->idate($dateend+3600*24-1)."'"; + // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + $sql.= $db->order($sortfield,$sortorder); $nbtotalofrecords = ''; From 9a6c3ac3dfa10e3b975b474f2762789cf195f507 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 Jan 2019 14:05:07 +0100 Subject: [PATCH 206/307] FIX Selection of email recipient with option MAIN_OPTIMIZEFORTEXTBROWSER --- htdocs/core/class/html.form.class.php | 34 +++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 1dc334560ec..9915f1b4e4c 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -5628,22 +5628,31 @@ class Form * @param int $width Force width of select box. May be used only when using jquery couch. Example: 250, 95% * @param string $moreattrib Add more options on select component. Example: 'disabled' * @param string $elemtype Type of element we show ('category', ...) + * @param string $placeholder String to use as placeholder + * @param int $addjscombo Add js combo * @return string HTML multiselect string * @see selectarray */ - static function multiselectarray($htmlname, $array, $selected=array(), $key_in_label=0, $value_as_key=0, $morecss='', $translate=0, $width=0, $moreattrib='',$elemtype='') + static function multiselectarray($htmlname, $array, $selected=array(), $key_in_label=0, $value_as_key=0, $morecss='', $translate=0, $width=0, $moreattrib='',$elemtype='', $placeholder='', $addjscombo=-1) { global $conf, $langs; $out = ''; + if ($addjscombo < 0) { + if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) $addjscombo = 1; + else $addjscombo = 0; + } + // Add code for jquery to use multiselect if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) { $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT; $out.="\n".' - '; + });'; + } + $out.=' '; } // Try also magic suggest @@ -6044,7 +6054,7 @@ class Form if (! empty($possiblelink['perms']) && (empty($restrictlinksto) || in_array($key, $restrictlinksto)) && (empty($excludelinksto) || ! in_array($key, $excludelinksto))) { - print '
    global->MAIN_OPTIMIZEFORTEXTBROWSER)?' style="display:none"':'').'>'; + print '
    use_javascript_ajax)?'':' style="display:none"').'>'; $sql = $possiblelink['sql']; $resqllist = $this->db->query($sql); @@ -6105,8 +6115,9 @@ class Form { $linktoelem='
    '.$langs->trans('PaymentMode').''.$labeltype.'
    '.$langs->trans('PaymentMode').''.$labeltype; +print $object->num_paiement?' - '.$object->num_paiement:''; +print '
    '.$langs->trans('Amount').''.price($object->amount,'',$langs,0,-1,-1,$conf->currency).'
    '.$form->editfieldkey("Comments",'note',$object->no print $form->editfieldval("Note",'note',$object->note,$object,$user->rights->facture->paiement,'textarea:'.ROWS_3.':90%'); print '
    '.$langs->trans('Amount').''.price($object->amount,'',$langs,0,-1,-1,$conf->currency).'
    '; print '
    '; diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index 5fa9f68c454..e17ae65750f 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -804,23 +804,55 @@ class Paiement extends CommonObject function update_date($date) { // phpcs:enable - if (!empty($date) && $this->statut!=1) + $error=0; + + if (!empty($date) && $this->statut != 1) { + $this->db->begin(); + + dol_syslog(get_class($this)."::update_date with date = ".$date, LOG_DEBUG); + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; $sql.= " SET datep = '".$this->db->idate($date)."'"; $sql.= " WHERE rowid = ".$this->id; - dol_syslog(get_class($this)."::update_date", LOG_DEBUG); $result = $this->db->query($sql); - if ($result) + if (! $result) { - $this->datepaye = $date; + $error++; + $this->error='Error -1 '.$this->db->error(); + } + + $type = $this->element; + + $sql = "UPDATE ".MAIN_DB_PREFIX.'bank'; + $sql.= " SET dateo = '".$this->db->idate($date)."', datev = '".$this->db->idate($date)."'"; + $sql.= " WHERE rowid IN (SELECT fk_bank FROM ".MAIN_DB_PREFIX."bank_url WHERE type = '".$type."' AND url_id = ".$this->id.")"; + $sql.= " AND rappro = 0"; + + $result = $this->db->query($sql); + if (! $result) + { + $error++; + $this->error='Error -1 '.$this->db->error(); + } + + if (! $error) + { + + } + + if (! $error) + { + $this->datepaye = $date; $this->date = $date; + + $this->db->commit(); return 0; } else { - $this->error='Error -1 '.$this->db->error(); + $this->db->rollback(); return -2; } } diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index e82c490c885..cac1e092eed 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -114,6 +114,7 @@ class PaiementFourn extends Paiement $this->date = $this->db->jdate($obj->dp); $this->datepaye = $this->db->jdate($obj->dp); $this->numero = $obj->num_paiement; + $this->num_paiement = $obj->num_paiement; $this->bank_account = $obj->fk_account; $this->bank_line = $obj->fk_bank; $this->montant = $obj->amount; diff --git a/htdocs/fourn/paiement/card.php b/htdocs/fourn/paiement/card.php index bd957503b94..56aa565ee4b 100644 --- a/htdocs/fourn/paiement/card.php +++ b/htdocs/fourn/paiement/card.php @@ -198,12 +198,16 @@ if ($result > 0) // Payment mode $labeltype=$langs->trans("PaymentType".$object->type_code)!=("PaymentType".$object->type_code)?$langs->trans("PaymentType".$object->type_code):$object->type_libelle; - print ''.$langs->trans('PaymentMode').''.$labeltype.''; + print ''.$langs->trans('PaymentMode').''.$labeltype; + print $object->num_paiement?' - '.$object->num_paiement:''; + print ''; // Payment numero - print ''.$form->editfieldkey("Numero",'num_paiement',$object->numero,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer).''; - print $form->editfieldval("Numero",'num_paiement',$object->numero,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer,'string','',null,$langs->trans('PaymentNumberUpdateSucceeded')); + /* TODO Add field num_payment into payment table and save it + print ''.$form->editfieldkey("Numero",'num_paiement',$object->num_paiement,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer).''; + print $form->editfieldval("Numero",'num_paiement',$object->num_paiement,$object,$object->statut == 0 && $user->rights->fournisseur->facture->creer,'string','',null,$langs->trans('PaymentNumberUpdateSucceeded')); print ''; + */ // Amount print ''.$langs->trans('Amount').''.price($object->montant,'',$langs,0,0,-1,$conf->currency).''; @@ -213,11 +217,6 @@ if ($result > 0) print ''.$langs->trans('Status').''.$object->getLibStatut(4).''; } - // Note - print ''.$form->editfieldkey("Note",'note',$object->note,$object,$user->rights->fournisseur->facture->creer).''; - print $form->editfieldval("Note",'note',$object->note,$object,$user->rights->fournisseur->facture->creer,'textarea'); - print ''; - $allow_delete = 1 ; // Bank account if (! empty($conf->banque->enabled)) @@ -232,13 +231,6 @@ if ($result > 0) $title_button = dol_escape_htmltag($langs->transnoentitiesnoconv("CantRemoveConciliatedPayment")); } - print ''; - print ''.$langs->trans('BankTransactionLine').''; - print ''; - print $bankline->getNomUrl(1,0,'showconciliated'); - print ''; - print ''; - print ''; print ''.$langs->trans('BankAccount').''; print ''; @@ -247,9 +239,21 @@ if ($result > 0) print $accountstatic->getNomUrl(1); print ''; print ''; + + print ''; + print ''.$langs->trans('BankTransactionLine').''; + print ''; + print $bankline->getNomUrl(1,0,'showconciliated'); + print ''; + print ''; } } + // Note + print ''.$form->editfieldkey("Note",'note',$object->note,$object,$user->rights->fournisseur->facture->creer).''; + print $form->editfieldval("Note",'note',$object->note,$object,$user->rights->fournisseur->facture->creer,'textarea'); + print ''; + print ''; print '
    '; @@ -276,9 +280,9 @@ if ($result > 0) print ''.$langs->trans('Ref').''; print ''.$langs->trans('RefSupplier').''; print ''.$langs->trans('Company').''; - print ''.$langs->trans('ExpectedToPay').''; - print ''.$langs->trans('Status').''; - print ''.$langs->trans('PayedByThisPayment').''; + print ''.$langs->trans('ExpectedToPay').''; + print ''.$langs->trans('PayedByThisPayment').''; + print ''.$langs->trans('Status').''; print "\n"; if ($num > 0) @@ -302,12 +306,13 @@ if ($result > 0) // Third party print ''.img_object($langs->trans('ShowCompany'),'company').' '.$objp->name.''; // Expected to pay - print ''.price($objp->total_ttc).''; - // Status - print ''.$facturestatic->LibStatut($objp->paye,$objp->fk_statut,2,1).''; + print ''.price($objp->total_ttc).''; // Payed - print ''.price($objp->amount).''; + print ''.price($objp->amount).''; + // Status + print ''.$facturestatic->LibStatut($objp->paye, $objp->fk_statut, 6, 1).''; print "\n"; + if ($objp->paye == 1) { $allow_delete = 0; From 057b606663a371775bcfab9b28b67c2666cfafd6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 9 Jan 2019 15:03:44 +0100 Subject: [PATCH 214/307] Fix tooltip --- htdocs/fourn/class/paiementfourn.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index cac1e092eed..ee92374149b 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -583,7 +583,7 @@ class PaiementFourn extends Paiement $label = ''.$langs->trans("ShowPayment").'
    '; $label.= ''.$langs->trans("Ref").': '.$text; - $label.= '
    '.$langs->trans("Date").': '.dol_print_date($this->date, 'dayhour'); + $label.= '
    '.$langs->trans("Date").': '.dol_print_date($this->datepaye ? $this->datepaye : $this->date, 'dayhour'); $linkstart = ''; $linkend = ''; From 7ea5407ac1f1f8f887b46cd0cc0120c98f731ec6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Jan 2019 01:57:47 +0100 Subject: [PATCH 215/307] Update doc --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 895b48e688d..39c4d5d6ca8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -79,6 +79,7 @@ NEW: The binding step in accountancy has a country filter with autocompletion NEW: Top menu is always on screen with MD theme. NEW: Withdraw request massaction can include already partially paid invoices NEW: Option "Simplify interface for blind persons" +NEW: Generic cash fence feature (compatible with several POS modules) For developers: NEW: Add lib for multiselect with checkboxes From 1aa2b7a164f88f59314d86cbc4f7beca7ec4070a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 10 Jan 2019 03:26:34 +0100 Subject: [PATCH 216/307] FIX SQL injection on rowid of dict.php --- htdocs/admin/dict.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index a60e0be68c8..e1e0c0d419e 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -794,7 +794,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) else $sql.="'".$db->escape($_POST[$listfieldvalue[$i]])."'"; $i++; } - $sql.= " WHERE ".$rowidcol." = '".$rowid."'"; + $sql.= " WHERE ".$rowidcol." = '".$db->escape($rowid)."'"; if (in_array('entity', $listfieldmodify)) $sql.= " AND entity = '".getEntity($tabname[$id])."'"; dol_syslog("actionmodify", LOG_DEBUG); @@ -818,7 +818,7 @@ if ($action == 'confirm_delete' && $confirm == 'yes') // delete if ($tabrowid[$id]) { $rowidcol=$tabrowid[$id]; } else { $rowidcol="rowid"; } - $sql = "DELETE FROM ".$tabname[$id]." WHERE ".$rowidcol."='".$rowid."'".($entity != '' ? " AND entity = " . (int) $entity : ''); + $sql = "DELETE FROM ".$tabname[$id]." WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); dol_syslog("delete", LOG_DEBUG); $result = $db->query($sql); @@ -842,7 +842,7 @@ if ($action == $acts[0]) else { $rowidcol="rowid"; } if ($rowid) { - $sql = "UPDATE ".$tabname[$id]." SET active = 1 WHERE ".$rowidcol."='".$rowid."'".($entity != '' ? " AND entity = " . (int) $entity : ''); + $sql = "UPDATE ".$tabname[$id]." SET active = 1 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); } elseif ($code) { $sql = "UPDATE ".$tabname[$id]." SET active = 1 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); @@ -862,7 +862,7 @@ if ($action == $acts[1]) else { $rowidcol="rowid"; } if ($rowid) { - $sql = "UPDATE ".$tabname[$id]." SET active = 0 WHERE ".$rowidcol."='".$rowid."'".($entity != '' ? " AND entity = " . (int) $entity : ''); + $sql = "UPDATE ".$tabname[$id]." SET active = 0 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); } elseif ($code) { $sql = "UPDATE ".$tabname[$id]." SET active = 0 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); @@ -882,7 +882,7 @@ if ($action == 'activate_favorite') else { $rowidcol="rowid"; } if ($rowid) { - $sql = "UPDATE ".$tabname[$id]." SET favorite = 1 WHERE ".$rowidcol."='".$rowid."'".($entity != '' ? " AND entity = " . (int) $entity : ''); + $sql = "UPDATE ".$tabname[$id]." SET favorite = 1 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); } elseif ($code) { $sql = "UPDATE ".$tabname[$id]." SET favorite = 1 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); @@ -902,7 +902,7 @@ if ($action == 'disable_favorite') else { $rowidcol="rowid"; } if ($rowid) { - $sql = "UPDATE ".$tabname[$id]." SET favorite = 0 WHERE ".$rowidcol."='".$rowid."'".($entity != '' ? " AND entity = " . (int) $entity : ''); + $sql = "UPDATE ".$tabname[$id]." SET favorite = 0 WHERE ".$rowidcol."='".$db->escape($rowid)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); } elseif ($code) { $sql = "UPDATE ".$tabname[$id]." SET favorite = 0 WHERE code='".dol_escape_htmltag($code)."'".($entity != '' ? " AND entity = " . (int) $entity : ''); @@ -967,7 +967,7 @@ if (GETPOST('from')) $paramwithsearch.= '&from='.urlencode(GETPOST('from','alpha // Confirmation de la suppression de la ligne if ($action == 'delete') { - print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'rowid='.$rowid.'&code='.urlencode($code).$paramwithsearch, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1); + print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page?'page='.$page.'&':'').'rowid='.urlencode($rowid).'&code='.urlencode($code).$paramwithsearch, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete','',0,1); } //var_dump($elementList); @@ -1367,8 +1367,8 @@ if ($id) print ''; print '
    '; - print ''; - print ''; + print ''; + print ''; if (! is_null($withentity)) print ''; print ''; @@ -1622,14 +1622,14 @@ if ($id) if ($id == 4) { print ''; - if ($iserasable) print ''.$actl[$obj->favorite].''; + if ($iserasable) print ''.$actl[$obj->favorite].''; else print $langs->trans("AlwaysActive"); print ''; } // Active print ''; - if ($canbedisabled) print ''.$actl[$obj->active].''; + if ($canbedisabled) print ''.$actl[$obj->active].''; else { if (in_array($obj->code, array('AC_OTH','AC_OTH_AUTO'))) print $langs->trans("AlwaysActive"); From e0d11edb6be9192e2e6ba6c0f2303d48a3572460 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Jan 2019 14:09:40 +0100 Subject: [PATCH 217/307] FIX Sql error on filter of project preview with date --- htdocs/projet/element.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 5494c893b2a..dccc3df312f 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -299,7 +299,7 @@ $listofreferent=array( 'title'=>"ListSupplierProposalsAssociatedProject", 'class'=>'SupplierProposal', 'table'=>'supplier_proposal', - 'datefieldname'=>'date', + 'datefieldname'=>'date_valid', 'urlnew'=>DOL_URL_ROOT.'/supplier_proposal/card.php?action=create&projectid='.$id, // No socid parameter here, the socid is often the customer and we create a supplier object 'lang'=>'supplier_proposal', 'buttonnew'=>'AddSupplierProposal', From 8c6fde72f867d72d967d516ebd1f195b7891b81f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 13 Jan 2019 19:36:00 +0100 Subject: [PATCH 218/307] Several fixes in look and feel of module survey --- .../modulebuilder/template/myobject_list.php | 6 + .../class/opensurveysondage.class.php | 12 +- htdocs/opensurvey/list.php | 312 ++++++++++++++---- htdocs/societe/admin/societe.php | 20 +- 4 files changed, 281 insertions(+), 69 deletions(-) diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index 23c2614eb0f..7c33b5ee8eb 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -352,6 +352,12 @@ $newcardbutton=''; $newcardbutton.= ''; $newcardbutton.= ''; //} +//else +//{ +// $newcardbutton=''.$langs->trans('New'); +// $newcardbutton.= ''; +// $newcardbutton.= ''; +//} print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_companies', 0, $newcardbutton, '', $limit); diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php index 2e6789b3f89..807d550e35c 100644 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ b/htdocs/opensurvey/class/opensurveysondage.class.php @@ -138,7 +138,6 @@ class Opensurveysondage extends CommonObject // Insert request $sql = "INSERT INTO ".MAIN_DB_PREFIX."opensurvey_sondage("; - $sql.= "id_sondage,"; $sql.= "commentaires,"; $sql.= "fk_user_creat,"; @@ -151,7 +150,6 @@ class Opensurveysondage extends CommonObject $sql.= "allow_spy,"; $sql.= "sujet"; $sql.= ") VALUES ("; - $sql.= "'".$this->db->escape($this->id_sondage)."',"; $sql.= " ".(empty($this->commentaires)?'NULL':"'".$this->db->escape($this->commentaires)."'").","; $sql.= " ".$user->id.","; @@ -163,7 +161,6 @@ class Opensurveysondage extends CommonObject $sql.= " ".$this->db->escape($this->allow_comments).","; $sql.= " ".$this->db->escape($this->allow_spy).","; $sql.= " '".$this->db->escape($this->sujet)."'"; - $sql.= ")"; $this->db->begin(); @@ -229,7 +226,7 @@ class Opensurveysondage extends CommonObject $sql.= " t.sujet,"; $sql.= " t.tms"; $sql.= " FROM ".MAIN_DB_PREFIX."opensurvey_sondage as t"; - $sql.= " WHERE t.id_sondage = '".$this->db->escape($numsurvey)."'"; + $sql.= " WHERE t.id_sondage = '".$this->db->escape($id ? $id : $numsurvey)."'"; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql=$this->db->query($sql); @@ -359,11 +356,16 @@ class Opensurveysondage extends CommonObject * @param string $numsondage Num sondage admin to delete * @return int <0 if KO, >0 if OK */ - function delete(User $user, $notrigger, $numsondage) + function delete(User $user, $notrigger=0, $numsondage='') { global $conf, $langs; $error=0; + if (empty($numsondage)) + { + $numsondage = $this->id_sondage; + } + $this->db->begin(); if (! $error) diff --git a/htdocs/opensurvey/list.php b/htdocs/opensurvey/list.php index ecb26047e52..cf52d83c680 100644 --- a/htdocs/opensurvey/list.php +++ b/htdocs/opensurvey/list.php @@ -27,8 +27,8 @@ require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php"; require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"; require_once DOL_DOCUMENT_ROOT."/opensurvey/class/opensurveysondage.class.php"; -// Security check -if (!$user->rights->opensurvey->read) accessforbidden(); +// Load translation files required by the page +$langs->load("opensurvey"); $action = GETPOST('action','aZ09')?GETPOST('action','aZ09'):'view'; // The action 'add', 'create', 'edit', 'update', 'view', ... $massaction = GETPOST('massaction','alpha'); // The bulk action (combo box choice into lists) @@ -41,7 +41,6 @@ $backtopage = GETPOST('backtopage','alpha'); // Go back to a dedicated $optioncss = GETPOST('optioncss','aZ'); // Option for the css output (always '' except when 'print') $id=GETPOST('id','alpha'); -$numsondage= $id; $search_ref = GETPOST('search_ref', 'alpha'); $search_title = GETPOST('search_title', 'alpha'); $search_status = GETPOST('search_status', 'alpha'); @@ -51,26 +50,87 @@ $limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit; $sortfield = GETPOST('sortfield','alpha'); $sortorder = GETPOST('sortorder','alpha'); $page = GETPOST('page','int'); -if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 +if (empty($page) || $page == -1 || GETPOST('button_search','alpha') || GETPOST('button_removefilter','alpha') || (empty($toselect) && $massaction === '0')) { $page = 0; } // If $page is not defined, or '' or -1 or if we click on clear filters or if we select empty mass action $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; + +// Initialize technical objects +$object = new Opensurveysondage($db); +$opensurvey_static = new Opensurveysondage($db); + +$extrafields = new ExtraFields($db); +$diroutputmassaction = $conf->opensurvey->dir_output . '/temp/massgeneration/'.$user->id; +$hookmanager->initHooks(array('surveylist')); // Note that conf->hooks_modules contains array +// Fetch optionals attributes and labels +$extralabels = $extrafields->fetch_name_optionals_label('survey'); // Load $extrafields->attributes['myobject'] +$search_array_options = $extrafields->getOptionalsFromPost($object->table_element,'','search_'); + +// Default sort order (if not yet defined by previous GETPOST) if (! $sortfield) $sortfield="p.date_fin"; if (! $sortorder) $sortorder="DESC"; -// Load translation files required by the page -$langs->load("opensurvey"); +// Security check +if (!$user->rights->opensurvey->read) accessforbidden(); + +// Definition of fields for list +$arrayfields=array(); +foreach($object->fields as $key => $val) +{ + // If $val['visible']==0, then we never show the field + if (! empty($val['visible'])) $arrayfields['t.'.$key]=array('label'=>$val['label'], 'checked'=>(($val['visible']<0)?0:1), 'enabled'=>$val['enabled'], 'position'=>$val['position']); +} +// Extra fields +if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) +{ + foreach($extrafields->attributes[$object->table_element]['label'] as $key => $val) + { + if (! empty($extrafields->attributes[$object->table_element]['list'][$key])) + $arrayfields["ef.".$key]=array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key]<0)?0:1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key])!=3 && $extrafields->attributes[$object->table_element]['perms'][$key])); + } +} +$object->fields = dol_sort_array($object->fields, 'position'); +$arrayfields = dol_sort_array($arrayfields, 'position'); /* * Actions */ -if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers +if (GETPOST('cancel','alpha')) { $action='list'; $massaction=''; } +if (! GETPOST('confirmmassaction','alpha') && $massaction != 'presend' && $massaction != 'confirm_presend') { $massaction=''; } + +$parameters=array(); +$reshook=$hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + +if (empty($reshook)) { - $search_status=''; - $search_title=''; - $search_ref=''; + // Selection of new fields + include DOL_DOCUMENT_ROOT.'/core/actions_changeselectedfields.inc.php'; + + // Purge search criteria + if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') ||GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers + { + $search_status=''; + $search_title=''; + $search_ref=''; + $toselect=''; + $search_array_options=array(); + } + if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x','alpha') || GETPOST('button_removefilter','alpha') + || GETPOST('button_search_x','alpha') || GETPOST('button_search.x','alpha') || GETPOST('button_search','alpha')) + { + $massaction=''; // Protection to avoid mass action if we force a new search during a mass action confirmation + } + + // Mass actions + $objectclass='Opensurveysondage'; + $objectlabel='Opensurveysondage'; + $permtoread = $user->rights->opensurvey->read; + $permtodelete = $user->rights->opensurvey->write; + $uploaddir = $conf->opensurvey->dir_output; + include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } @@ -79,40 +139,15 @@ if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter.x', */ $form=new Form($db); -$opensurvey_static = new Opensurveysondage($db); $now = dol_now(); -llxHeader('', $langs->trans("OpenSurveyArea")); - -$param=''; -$fieldtosortuser=empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?'firstname':'lastname'; +//$help_url="EN:Module_MyObject|FR:Module_MyObject_FR|ES:Módulo_MyObject"; +$help_url=''; +$title = $langs->trans('OpenSurveyArea'); - - - - - - - - -$newcardbutton=''; -if (!$user->rights->opensurvey->creer) -{ - $newcardbutton=''.$langs->trans('NewSurvey').''; - $newcardbutton.= ''; - $newcardbutton.= ''; -} -else -{ - $newcardbutton=''.$langs->trans('NewSurvey'); - $newcardbutton.= ''; - $newcardbutton.= ''; -} - - -$sql = "SELECT p.id_sondage, p.fk_user_creat, p.format, p.date_fin, p.status, p.titre, p.nom_admin,"; +$sql = "SELECT p.id_sondage as rowid, p.fk_user_creat, p.format, p.date_fin, p.status, p.titre, p.nom_admin,"; $sql.= " u.login, u.firstname, u.lastname"; $sql.= " FROM ".MAIN_DB_PREFIX."opensurvey_sondage as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."user u ON u.rowid = p.fk_user_creat"; @@ -122,44 +157,124 @@ if ($search_expired == 'expired') $sql.=" AND p.date_fin < '".$db->idate($now)." if ($search_expired == 'opened') $sql.=" AND p.date_fin >= '".$db->idate($now)."'"; if ($search_ref) $sql.=natural_search("p.id_sondage", $search_ref); if ($search_title) $sql.=natural_search("p.titre", $search_title); -$sql.= $db->order($sortfield,$sortorder); +// Add where from extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; +// Add where from hooks +$parameters=array(); +$reshook=$hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook +$sql.=$hookmanager->resPrint; + +$sql.=$db->order($sortfield,$sortorder); // Count total nb of records $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $result = $db->query($sql); - $nbtotalofrecords = $db->num_rows($result); - if (($page * $limit) > $nbtotalofrecords) // if total resultset is smaller then paging size (filtering), goto and load page 0 + $resql = $db->query($sql); + $nbtotalofrecords = $db->num_rows($resql); + if (($page * $limit) > $nbtotalofrecords) // if total of record found is smaller than page * limit, goto and load page 0 { $page = 0; $offset = 0; } } +// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set. +if (is_numeric($nbtotalofrecords) && $limit > $nbtotalofrecords) +{ + $num = $nbtotalofrecords; +} +else +{ + $sql.= $db->plimit($limit+1, $offset); -$sql.= $db->plimit($limit+1, $offset); + $resql=$db->query($sql); + if (! $resql) + { + dol_print_error($db); + exit; + } -$resql=$db->query($sql); -if (! $resql) dol_print_error($db); + $num = $db->num_rows($resql); +} -$num=$db->num_rows($resql); +// Direct jump if only one record found +if ($num == 1 && ! empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all) +{ + $obj = $db->fetch_object($resql); + $id = $obj->rowid; + header("Location: ".dol_buildpath('/opensurvey/card.php', 1).'?id='.$id); + exit; +} +llxHeader('', $title, $help_url); +$arrayofselected=is_array($toselect)?$toselect:array(); + +$param=''; +if (! empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) $param.='&contextpage='.urlencode($contextpage); +if ($limit > 0 && $limit != $conf->liste_limit) $param.='&limit='.urlencode($limit); +$fieldtosortuser=empty($conf->global->MAIN_FIRSTNAME_NAME_POSITION)?'firstname':'lastname'; + +if ($optioncss != '') $param.='&optioncss='.urlencode($optioncss); +// Add $param from extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php'; + +// List of mass actions available +$arrayofmassactions = array( + //'presend'=>$langs->trans("SendByMail"), + //'builddoc'=>$langs->trans("PDFMerge"), +); +if ($user->rights->opensurvey->write) $arrayofmassactions['predelete']=$langs->trans("Delete"); +if (GETPOST('nomassaction','int') || in_array($massaction, array('presend','predelete'))) $arrayofmassactions=array(); +$massactionbutton=$form->selectMassAction('', $arrayofmassactions); // List of surveys into database -print ''; +print ''; +if ($optioncss != '') print ''; print ''; +print ''; print ''; print ''; print ''; print ''; +print ''; -print_barre_liste($langs->trans("OpenSurveyArea"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionsbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, $newcardbutton, '', $limit); +$newcardbutton=''; +if (! empty($user->rights->opensurvey->write)) +{ + $newcardbutton=''.$langs->trans('NewSurvey').''; + $newcardbutton.= ''; + $newcardbutton.= ''; +} +else +{ + $newcardbutton=''.$langs->trans('NewSurvey'); + $newcardbutton.= ''; + $newcardbutton.= ''; +} + +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'title_generic.png', 0, $newcardbutton, '', $limit); + +// Add code for pre mass action (confirmation or email presend form) +$topicmail="SendOpenSurveyRef"; +$modelmail="opensurvey"; +$objecttmp=new Opensurveysondage($db); +$trackid='surv'.$object->id; +include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; + +if ($sall) +{ + foreach($fieldstosearchall as $key => $val) $fieldstosearchall[$key]=$langs->trans($val); + print '
    '.$langs->trans("FilterOnInto", $sall) . join(', ',$fieldstosearchall).'
    '; +} $moreforfilter = ''; +/*$moreforfilter.='
    '; +$moreforfilter.= $langs->trans('MyFilter') . ': '; +$moreforfilter.= '
    ';*/ $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook @@ -174,7 +289,8 @@ if (! empty($moreforfilter)) } $varpage=empty($contextpage)?$_SERVER["PHP_SELF"]:$contextpage; -$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +//$selectedfields=$form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields=''; $selectedfields.=(count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); print '
    '; @@ -191,12 +307,21 @@ print ''; print ''; $arraystatus=array('-1'=>' ','0'=>$langs->trans("Draft"),'1'=>$langs->trans("Opened"),'2'=>$langs->trans("Closed")); print ''. $form->selectarray('search_status', $arraystatus, $search_status).''; +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; + +// Fields from hook +$parameters=array('arrayfields'=>$arrayfields); +$reshook=$hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; +// Action column print ''; $searchpicto=$form->showFilterButtons(); print $searchpicto; print ''; print ''."\n"; + // Fields title label // -------------------------------------------------------------------- print ''; @@ -207,7 +332,13 @@ print_liste_field_titre("Author", $_SERVER["PHP_SELF"], "u.".$fieldtosortuser, $ print_liste_field_titre("NbOfVoters", $_SERVER["PHP_SELF"], "", $param,"",'align="right"',$sortfield,$sortorder); print_liste_field_titre("ExpireDate", $_SERVER["PHP_SELF"], "p.date_fin", $param,"",'align="center"',$sortfield,$sortorder); print_liste_field_titre("Status", $_SERVER["PHP_SELF"], "p.status", $param,"",'align="center"',$sortfield,$sortorder); -print_liste_field_titre(''); +// Extra fields +include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; +// Hook fields +$parameters=array('arrayfields'=>$arrayfields,'param'=>$param,'sortfield'=>$sortfield,'sortorder'=>$sortorder); +$reshook=$hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; +print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"],'','','','align="center"',$sortfield,$sortorder,'maxwidthsearch ')."\n"; print ''."\n"; @@ -230,8 +361,8 @@ while ($i < min($num, $limit)) } else dol_print_error($db); - $opensurvey_static->id=$obj->id_sondage; - $opensurvey_static->ref=$obj->id_sondage; + $opensurvey_static->id=$obj->rowid; + $opensurvey_static->ref=$obj->rowid; $opensurvey_static->title=$obj->titre; $opensurvey_static->status=$obj->status; $opensurvey_static->date_fin=$db->jdate($obj->date_fin); @@ -278,23 +409,86 @@ while ($i < min($num, $limit)) print''.$opensurvey_static->getLibStatut(5).''."\n"; - print''."\n"; + // Extra fields + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; + // Fields from hook + $parameters=array('arrayfields'=>$arrayfields, 'obj'=>$obj); + $reshook=$hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Action column + print ''; + if ($massactionbutton || $massaction) // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + { + $selected=0; + if (in_array($obj->rowid, $arrayofselected)) $selected=1; + print ''; + } + print ''; print ''."\n"; $i++; } +// Show total line +if (isset($totalarray['pos'])) +{ + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if (! empty($totalarray['pos'][$i])) print ''.price($totalarray['val'][$totalarray['pos'][$i]]).''; + else + { + if ($i == 1) + { + if ($num < $limit) print ''.$langs->trans("Total").''; + else print ''.$langs->trans("Totalforthispage").''; + } + else print ''; + } + } + print ''; +} + // If no record found if ($num == 0) { - $colspan=8; - //foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; } - print ''.$langs->trans("NoRecordFound").''; + $colspan=1; + foreach($arrayfields as $key => $val) { if (! empty($val['checked'])) $colspan++; } + print ''.$langs->trans("NoRecordFound").''; } + +$db->free($resql); + +$parameters=array('arrayfields'=>$arrayfields, 'sql'=>$sql); +$reshook=$hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook +print $hookmanager->resPrint; + print ''."\n"; -print '
    '; -print ''; +print '
    '."\n"; + +print ''."\n"; + +if (in_array('builddoc',$arrayofmassactions) && ($nbtotalofrecords === '' || $nbtotalofrecords)) +{ + $hidegeneratedfilelistifempty=1; + if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) $hidegeneratedfilelistifempty=0; + + require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; + $formfile = new FormFile($db); + + // Show list of available documents + $urlsource=$_SERVER['PHP_SELF'].'?sortfield='.$sortfield.'&sortorder='.$sortorder; + $urlsource.=str_replace('&','&',$param); + + $filedir=$diroutputmassaction; + $genallowed=$user->rights->mymodule->read; + $delallowed=$user->rights->mymodule->create; + + print $formfile->showdocuments('massfilesarea_mymodule','',$filedir,$urlsource,0,$delallowed,'',1,1,0,48,1,$param,$title,'','','',null,$hidegeneratedfilelistifempty); +} // End of page llxFooter(); diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index dac7f9ea126..c5e4c8648d7 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -29,7 +29,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; -$langs->loadLangs(array("admin", "other")); +$langs->loadLangs(array("admin", "companies", "other")); $action=GETPOST('action','alpha'); $value=GETPOST('value','alpha'); @@ -332,6 +332,7 @@ $dirsociete=array_merge(array('/core/modules/societe/'),$conf->modules_parts['so print load_fiche_titre($langs->trans("CompanyCodeChecker"),'',''); +print '
    '; print ''."\n"; print ''."\n"; print ' '; @@ -403,7 +404,7 @@ foreach ($dirsociete as $dirroot) } } print '
    '.$langs->trans("Name").'
    '; - +print '
    '; print "
    "; @@ -412,6 +413,7 @@ print "
    "; print load_fiche_titre($langs->trans("AccountCodeManager"),'',''); +print '
    '; print ''; print ''; print ''; @@ -473,6 +475,7 @@ foreach ($dirsociete as $dirroot) } } print "
    '.$langs->trans("Name").'
    \n"; +print '
    '; /* @@ -504,6 +507,7 @@ else dol_print_error($db); } +print '
    '; print ''; print ''; print ''; @@ -619,12 +623,14 @@ foreach ($dirsociete as $dirroot) } } print '
    '.$langs->trans("Name").'
    '; +print '
    '; print '
    '; //IDProf print load_fiche_titre($langs->trans("CompanyIdProfChecker"),'',''); +print '
    '; print ''; print ''; print ''; @@ -711,8 +717,10 @@ foreach($profid as $key => $val) $i++; } -print "
    '.$langs->trans("Name").'

    \n"; +print "\n"; +print '
    '; +print "
    \n"; print load_fiche_titre($langs->trans("Other"),'',''); @@ -723,6 +731,7 @@ print '
    '; print ''; print ''; +print '
    '; print ''; print ''; print "\n"; @@ -747,7 +756,7 @@ else '2'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch",2).')', '3'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch",3).')', ); - print $form->selectarray("activate_COMPANY_USE_SEARCH_TO_SELECT", $arrval, $conf->global->COMPANY_USE_SEARCH_TO_SELECT); + print $form->selectarray("activate_COMPANY_USE_SEARCH_TO_SELECT", $arrval, $conf->global->COMPANY_USE_SEARCH_TO_SELECT, 0, 0, 0, '', 0, 0, 0, '', 'minwidth75imp'); print '"; @@ -771,7 +780,7 @@ else '2'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch",2).')', '3'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch",3).')', ); - print $form->selectarray("activate_CONTACT_USE_SEARCH_TO_SELECT", $arrval, $conf->global->CONTACT_USE_SEARCH_TO_SELECT); + print $form->selectarray("activate_CONTACT_USE_SEARCH_TO_SELECT", $arrval, $conf->global->CONTACT_USE_SEARCH_TO_SELECT, 0, 0, 0, '', 0, 0, 0, '', 'minwidth75imp'); print '"; @@ -891,6 +900,7 @@ print ''; */ print '
    ".$langs->trans("Parameters")."'; print ''; print "'; print ''; print "
    '; +print '
    '; print '
    '; From cf55b54cf561aadc3b2422b5dce9fb83f76a4fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Mon, 14 Jan 2019 10:02:48 +0100 Subject: [PATCH 219/307] correct list of links --- htdocs/core/class/html.formfile.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.formfile.class.php b/htdocs/core/class/html.formfile.class.php index a1e1049b045..acaf6c2e61e 100644 --- a/htdocs/core/class/html.formfile.class.php +++ b/htdocs/core/class/html.formfile.class.php @@ -776,16 +776,16 @@ class FormFile { $colspan=2; - foreach($link_list as $file) + foreach($link_list as $link) { $out.=''; $out.=''; $out.=''; - $out.=$file->label; + $out.=$link->label; $out.=''; $out.=''; $out.=''; - $out.=dol_print_date($file->datea,'dayhour'); + $out.=dol_print_date($link->datea,'dayhour'); $out.=''; if ($delallowed || $printer || $morepicto) $out.=''; $out.=''."\n"; From 2ec2daa18d116acf4937e58b71c59d74ae1eec66 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 15 Jan 2019 10:53:28 +0100 Subject: [PATCH 220/307] FIX Edit blog meta post --- htdocs/website/class/website.class.php | 12 +++++----- htdocs/website/class/websitepage.class.php | 3 +++ htdocs/website/index.php | 27 ++++++++++++++++++---- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 26231534f67..7fd906044f6 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -79,16 +79,13 @@ class Website extends CommonObject * @var mixed */ public $date_creation; - - /** - * @var mixed - */ - public $tms = ''; + public $date_modification; /** * @var integer */ public $fk_default_home; + public $fk_user_creat; /** * @var string @@ -169,7 +166,7 @@ class Website extends CommonObject $sql .= ' '.(! isset($this->virtualhost)?'NULL':"'".$this->db->escape($this->virtualhost)."'").","; $sql .= ' '.(! isset($this->fk_user_creat)?$user->id:$this->fk_user_creat).','; $sql .= ' '.(! isset($this->date_creation) || dol_strlen($this->date_creation)==0?'NULL':"'".$this->db->idate($this->date_creation)."'").","; - $sql .= ' '.(! isset($this->date_modification) || dol_strlen($this->date_modification)==0?'NULL':"'".$this->db->idate($this->date_creation)."'"); + $sql .= ' '.(! isset($this->date_modification) || dol_strlen($this->date_modification)==0?'NULL':"'".$this->db->idate($this->date_modification)."'"); $sql .= ')'; $this->db->begin(); @@ -525,6 +522,7 @@ class Website extends CommonObject global $hookmanager, $langs; global $dolibarr_main_data_root; + $now = dol_now(); $error=0; dol_syslog(__METHOD__, LOG_DEBUG); @@ -560,6 +558,8 @@ class Website extends CommonObject $object->ref=$newref; $object->fk_default_home=0; $object->virtualhost=''; + $object->date_creation = $now; + $object->fk_user_creat = $user->id; // Create clone $object->context['createfromclone'] = 'createfromclone'; diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index e84acc03527..3c166c1d1f8 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -410,6 +410,8 @@ class WebsitePage extends CommonObject public function createFromClone(User $user, $fromid, $newref, $newlang='', $istranslation=0, $newwebsite=0, $keeptitleunchanged=0) { global $hookmanager, $langs; + + $now = dol_now(); $error = 0; dol_syslog(__METHOD__, LOG_DEBUG); @@ -428,6 +430,7 @@ class WebsitePage extends CommonObject $object->pageurl = $newref; $object->aliasalt = ''; $object->fk_user_creat = $user->id; + $object->date_creation = $now; $object->title = ($keeptitleunchanged ? '' : $langs->trans("CopyOf").' ').$object->title; if (! empty($newlang)) $object->lang=$newlang; if ($istranslation) $object->fk_page = $fromid; diff --git a/htdocs/website/index.php b/htdocs/website/index.php index 0c7ae842c9b..f0e97b22a13 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -1163,6 +1163,8 @@ if ($action == 'updatemeta') $objectpage->keywords = GETPOST('WEBSITE_KEYWORDS', 'alpha'); $objectpage->lang = GETPOST('WEBSITE_LANG', 'aZ09'); $objectpage->htmlheader = trim(GETPOST('htmlheader', 'none')); + $newdatecreation=dol_mktime(GETPOST('datecreationhour','int'), GETPOST('datecreationmin','int'), GETPOST('datecreationsec','int'), GETPOST('datecreationmonth','int'), GETPOST('datecreationday','int'), GETPOST('datecreationyear','int')); + if ($newdatecreation) $objectpage->date_creation = $newdatecreation; $res = $objectpage->update($user); if (! ($res > 0)) @@ -2506,7 +2508,8 @@ if ($action == 'editmeta' || $action == 'createcontainer') $pagehtmlheader=$objectpage->htmlheader; $pagedatecreation=$objectpage->date_creation; $pagedatemodification=$objectpage->date_modification; - $pageauthorid=$objectpage->fk_user_create; + $pageauthorid=$objectpage->fk_user_creat; + $pageusermodifid=$objectpage->fk_user_modif; } else { @@ -2633,23 +2636,37 @@ if ($action == 'editmeta' || $action == 'createcontainer') print ''; $fuser=new User($db); - $fuser->fetch($pageauthorid); print ''; print $langs->trans('Author'); print ''; - if ($pageauthorid > 0) print $fuser->getNomUrl(1); + if ($pageauthorid > 0) + { + $fuser->fetch($pageauthorid); + print $fuser->getNomUrl(1); + } print ''; print ''; print $langs->trans('DateCreation'); print ''; - print dol_print_date($pagedatecreation, 'dayhour'); + print $form->select_date($pagedatecreation, 'datecreation', 1, 1, 0, '', 1, 1); + //print dol_print_date($pagedatecreation, 'dayhour'); print ''; if ($action != 'createcontainer') { - print ''; + print ''; + print $langs->trans('LastModificationAuthor'); + print ''; + if ($pageusermodifid > 0) + { + $fuser->fetch($pageusermodifid); + print $fuser->getNomUrl(1); + } + print ''; + + print ''; print $langs->trans('DateModification'); print ''; print dol_print_date($pagedatemodification, 'dayhour'); From 6159703116612a73dfdd0c65e7551aacf7872bbe Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 15 Jan 2019 11:14:01 +0100 Subject: [PATCH 221/307] Fix warning and date --- htdocs/website/index.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/website/index.php b/htdocs/website/index.php index f0e97b22a13..6824ae80360 100644 --- a/htdocs/website/index.php +++ b/htdocs/website/index.php @@ -2516,6 +2516,7 @@ if ($action == 'editmeta' || $action == 'createcontainer') $type_container = 'page'; $pagedatecreation=dol_now(); $pageauthorid=$user->id; + $pageusermodifid=0; } if (GETPOST('WEBSITE_TITLE','alpha')) $pagetitle=GETPOST('WEBSITE_TITLE','alpha'); if (GETPOST('WEBSITE_PAGENAME','alpha')) $pageurl=GETPOST('WEBSITE_PAGENAME','alpha'); @@ -2669,7 +2670,7 @@ if ($action == 'editmeta' || $action == 'createcontainer') print ''; print $langs->trans('DateModification'); print ''; - print dol_print_date($pagedatemodification, 'dayhour'); + print dol_print_date($pagedatemodification, 'dayhour', 'tzuser'); print ''; } From 7c9d85d091ba0d3754bc474e5e9cf47af07e3420 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 15 Jan 2019 12:18:04 +0100 Subject: [PATCH 222/307] FIX problem with multicompany transverse mode Signed-off-by: Regis Houssin --- htdocs/core/lib/security.lib.php | 6 +++--- htdocs/user/card.php | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/security.lib.php b/htdocs/core/lib/security.lib.php index d2b768d75d5..d12ee339909 100644 --- a/htdocs/core/lib/security.lib.php +++ b/htdocs/core/lib/security.lib.php @@ -484,9 +484,9 @@ function checkUserAccessToObject($user, $featuresarray, $objectid=0, $tableandsh { $sql.= ",".MAIN_DB_PREFIX."usergroup_user as ug"; $sql.= " WHERE dbt.".$dbt_select." IN (".$objectid.")"; - $sql.= " AND (ug.fk_user = dbt.rowid"; - $sql.= " AND ug.entity IN (".getEntity('user')."))"; - $sql.= " OR dbt.entity = 0"; // Show always superadmin + $sql.= " AND ((ug.fk_user = dbt.rowid"; + $sql.= " AND ug.entity IN (".getEntity('usergroup')."))"; + $sql.= " OR dbt.entity = 0)"; // Show always superadmin } } else { diff --git a/htdocs/user/card.php b/htdocs/user/card.php index f0b3fb819f2..bb3d7e7d8f6 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -84,9 +84,9 @@ $socid=0; if ($user->societe_id > 0) $socid = $user->societe_id; $feature2='user'; if ($user->id == $id) { $feature2=''; $canreaduser=1; } // A user can always read its own card -if (!$canreaduser) { - $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); -} + +$result = restrictedArea($user, 'user', $id, 'user&user', $feature2); + if ($user->id <> $id && ! $canreaduser) accessforbidden(); // Load translation files required by page From 41a38b3a0aa3308bbc73765ba8b816f1b161bd15 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Tue, 15 Jan 2019 15:44:45 +0100 Subject: [PATCH 223/307] FIX avoid php warning Signed-off-by: Regis Houssin --- htdocs/install/inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 0a2a6866f26..0b924122ebb 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -196,7 +196,7 @@ if (constant('DOL_DATA_ROOT') === null) { } if (@file_exists($lockfile)) { - if (! is_object($langs)) + if (! isset($langs) || ! is_object($langs)) { $langs = new Translate('..', $conf); $langs->setDefaultLang('auto'); From adc442232398b95825e0559c894b2b0925514aba Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 15 Jan 2019 17:57:30 +0100 Subject: [PATCH 224/307] Update card.php --- htdocs/user/card.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index bb3d7e7d8f6..6db383ed515 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -85,7 +85,9 @@ if ($user->societe_id > 0) $socid = $user->societe_id; $feature2='user'; if ($user->id == $id) { $feature2=''; $canreaduser=1; } // A user can always read its own card -$result = restrictedArea($user, 'user', $id, 'user&user', $feature2); +if (! $canreaduser) { + $result = restrictedArea($user, 'user', $id, 'user&user', $feature2); +} if ($user->id <> $id && ! $canreaduser) accessforbidden(); From 1f87b8bb188bfb90faf8c8ead0fb8545bf4fef8e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Jan 2019 01:54:08 +0100 Subject: [PATCH 225/307] FIX Position of price symbol (before) for nl_NL --- htdocs/admin/company.php | 3 ++- htdocs/core/lib/functions.lib.php | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index 96a7b533095..bfbeb5cbb6a 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -773,10 +773,11 @@ else print ''.$langs->trans("CompanyCurrency").''; - print currency_name($conf->currency,1); + print currency_name($conf->currency,0); print ' ('.$conf->currency; print ($conf->currency != $langs->getCurrencySymbol($conf->currency) ? ' - '.$langs->getCurrencySymbol($conf->currency) : ''); print ')'; + print ' - '.$langs->trans("PriceFormatInCurrentLanguage", $langs->defaultlang).' : '.price(price2num('99.333333333','MT'), 1, $langs, 1, -1, -1, $conf->currency); print ''; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5ce4f370976..984279dd6a0 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -4350,7 +4350,7 @@ function vatrate($rate, $addpercent=false, $info_bits=0, $usestarfornpr=0) * @param string $currency_code To add currency symbol (''=add nothing, 'auto'=Use default currency, 'XXX'=add currency symbols for XXX currency) * @return string Chaine avec montant formate * - * @see price2num Revert function of price + * @see price2num() Revert function of price */ function price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code='') { @@ -4413,7 +4413,11 @@ function price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerou if ($currency_code == 'auto') $currency_code=$conf->currency; $listofcurrenciesbefore=array('USD','GBP','AUD','MXN','PEN','CNY'); - if (in_array($currency_code,$listofcurrenciesbefore)) $cursymbolbefore.=$outlangs->getCurrencySymbol($currency_code); + $listoflanguagesbefore=array('nl_NL'); + if (in_array($currency_code, $listofcurrenciesbefore) || in_array($outlangs->defaultlang, $listoflanguagesbefore)) + { + $cursymbolbefore.=$outlangs->getCurrencySymbol($currency_code); + } else { $tmpcur=$outlangs->getCurrencySymbol($currency_code); From 0d384eea008994aea4b7def68ad5f9493fa2a63d Mon Sep 17 00:00:00 2001 From: atm-quentin Date: Wed, 16 Jan 2019 09:30:48 +0100 Subject: [PATCH 226/307] FIX credit note can have negative value --- htdocs/compta/facture/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index 9ad79393499..8541581fb49 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -1695,7 +1695,7 @@ if (empty($reshook)) setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Type')), null, 'errors'); $error++; } - if ($prod_entry_mode == 'free' && empty($idprod) && (($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $price_ht == '') && $price_ht_devise == '') // Unit price can be 0 but not '' + if (($prod_entry_mode == 'free' && empty($idprod) && (($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $price_ht == '') && $price_ht_devise == '') && $object->type != Facture::TYPE_CREDIT_NOTE) // Unit price can be 0 but not '' { if ($price_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) { @@ -2155,7 +2155,7 @@ if (empty($reshook)) setEventMessages($langs->trans('ErrorQtyForCustomerInvoiceCantBeNegative'), null, 'errors'); $error++; } - if (empty($productid) && (($pu_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $pu_ht == '') && $pu_ht_devise == '') // Unit price can be 0 but not '' + if ((empty($productid) && (($pu_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) || $pu_ht == '') && $pu_ht_devise == '') && $object->type != Facture::TYPE_CREDIT_NOTE) // Unit price can be 0 but not '' { if ($pu_ht < 0 && empty($conf->global->FACTURE_ENABLE_NEGATIVE_LINES)) { From 6b808acfbb803b219523a057b74c49763df3d64c Mon Sep 17 00:00:00 2001 From: Abbes Bahfir Date: Wed, 9 Jan 2019 18:12:06 +0100 Subject: [PATCH 227/307] linl back to list if cancelled on create --- htdocs/modulebuilder/template/myobject_card.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 84a23ab979d..bd47da705ce 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -118,8 +118,11 @@ if (empty($reshook)) $error=0; $permissiontoadd = $user->rights->mymodule->write; - $permissiontodelete = $user->rights->mymodule->delete || ($permissiontoadd && $object->status == 0); - if (empty($backtopage)) $backtopage = dol_buildpath('/mymodule/myobject_card.php',1).'?id='.($id > 0 ? $id : '__ID__'); + $permissiontodelete = $user->rights->mymodule->delete; + if (empty($backtopage)) { + if (empty($id)) $backtopage = dol_buildpath('/mymodule/myobject_list.php',1); + else $backtopage = dol_buildpath('/mymodule/myobject_card.php',1).($id > 0 ? $id : '__ID__'); + } $backurlforlist = dol_buildpath('/mymodule/myobject_list.php',1); $triggermodname = 'MYMODULE_MYOBJECT_MODIFY'; // Name of trigger action code to execute when we modify record From 66f17ac4224277025b626b2696165f838ef7c75b Mon Sep 17 00:00:00 2001 From: Bahfir Abbes Date: Wed, 9 Jan 2019 18:47:43 +0100 Subject: [PATCH 228/307] simplification --- htdocs/modulebuilder/template/myobject_card.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index bd47da705ce..60c03ee2326 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -119,11 +119,11 @@ if (empty($reshook)) $permissiontoadd = $user->rights->mymodule->write; $permissiontodelete = $user->rights->mymodule->delete; + $backurlforlist = dol_buildpath('/mymodule/myobject_list.php',1); if (empty($backtopage)) { - if (empty($id)) $backtopage = dol_buildpath('/mymodule/myobject_list.php',1); + if (empty($id)) $backtopage = $backurlforlist; else $backtopage = dol_buildpath('/mymodule/myobject_card.php',1).($id > 0 ? $id : '__ID__'); - } - $backurlforlist = dol_buildpath('/mymodule/myobject_list.php',1); + } $triggermodname = 'MYMODULE_MYOBJECT_MODIFY'; // Name of trigger action code to execute when we modify record // Actions cancel, add, update, delete or clone From f4dd8a4e506f1188c14dd15180cf6eddda2443e2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Jan 2019 12:46:14 +0100 Subject: [PATCH 229/307] Update myobject_card.php --- htdocs/modulebuilder/template/myobject_card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 60c03ee2326..dc9ac647fe8 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -118,7 +118,7 @@ if (empty($reshook)) $error=0; $permissiontoadd = $user->rights->mymodule->write; - $permissiontodelete = $user->rights->mymodule->delete; + $permissiontodelete = $user->rights->mymodule->delete || ($permissiontoadd && $object->status == 0); $backurlforlist = dol_buildpath('/mymodule/myobject_list.php',1); if (empty($backtopage)) { if (empty($id)) $backtopage = $backurlforlist; From 2f5db98a5cfa0fc42fe0ad2cf0e7d38dc5acc56c Mon Sep 17 00:00:00 2001 From: a-schild Date: Wed, 16 Jan 2019 13:05:22 +0100 Subject: [PATCH 230/307] Fix for issue #10333 paymentterm.class.php invalid SQL in fetch --- htdocs/compta/facture/class/paymentterm.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index a3168db40d2..e7ea4779d10 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -178,7 +178,7 @@ class PaymentTerm // extends CommonObject global $langs; $sql = "SELECT"; $sql.= " t.rowid,"; - $sql.= " t.entity"; + $sql.= " t.entity,"; $sql.= " t.code,"; $sql.= " t.sortorder,"; From 7df86cb630d19a2ae3bda96f2792958bf77fe26b Mon Sep 17 00:00:00 2001 From: a-schild Date: Wed, 16 Jan 2019 13:06:12 +0100 Subject: [PATCH 231/307] Fix for issue #10333 paymentterm.class.php invalid SQL in fetch --- htdocs/compta/facture/class/paymentterm.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index 3697a61672b..90a564fa006 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -164,7 +164,7 @@ class PaymentTerm // extends CommonObject global $langs; $sql = "SELECT"; $sql.= " t.rowid,"; - $sql.= " t.entity"; + $sql.= " t.entity,"; $sql.= " t.code,"; $sql.= " t.sortorder,"; From 7e3bfd332e42e521dc8e708611a817802a260868 Mon Sep 17 00:00:00 2001 From: a-schild Date: Wed, 16 Jan 2019 13:07:00 +0100 Subject: [PATCH 232/307] Fix for issue #10333 paymentterm.class.php invalid SQL in fetch --- htdocs/compta/facture/class/paymentterm.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index bc13b0d5876..06a76d6559e 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -167,7 +167,7 @@ class PaymentTerm // extends CommonObject global $langs; $sql = "SELECT"; $sql.= " t.rowid,"; - $sql.= " t.entity"; + $sql.= " t.entity,"; $sql.= " t.code,"; $sql.= " t.sortorder,"; From 638be67f96dd004b8edf02200b8c9a520d3ed842 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Jan 2019 13:56:13 +0100 Subject: [PATCH 233/307] Fix tooltip --- htdocs/core/lib/functions.lib.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 984279dd6a0..5d1a977d049 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5867,7 +5867,7 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob $substitutionarray['__THIRDPARTY_NAME_ALIAS__'] = '__THIRDPARTY_NAME_ALIAS__'; $substitutionarray['__THIRDPARTY_EMAIL__'] = '__THIRDPARTY_EMAIL__'; - if (is_object($object) && $object->element == 'member') + if (! empty($conf->adherent->enabled)) { $substitutionarray['__MEMBER_ID__'] = '__MEMBER_ID__'; $substitutionarray['__MEMBER_CIVILITY__'] = '__MEMBER_CIVILITY__'; @@ -5895,9 +5895,9 @@ function getCommonSubstitutionArray($outputlangs, $onlykey=0, $exclude=null, $ob $substitutionarray['__DIRECTDOWNLOAD_URL_ORDER__'] = 'Direct download url of an order'; $substitutionarray['__DIRECTDOWNLOAD_URL_INVOICE__'] = 'Direct download url of an invoice'; - if (is_object($object) && $object->element == 'shipping') + if (! empty($conf->expedition->enabled)) { - $substitutionarray['__SHIPPINGTRACKNUM__']='Shipping tacking number'; + $substitutionarray['__SHIPPINGTRACKNUM__']='Shipping tacking number'; $substitutionarray['__SHIPPINGTRACKNUMURL__']='Shipping tracking url'; } } From 6becdc8af4684dfb2c1400afe19e7a4e254cdda3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Jan 2019 16:34:36 +0100 Subject: [PATCH 234/307] Fix missing substitution of ID --- htdocs/adherents/class/adherent.class.php | 4 +++- htdocs/adherents/subscription.php | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 11fb1a1a111..b4cedc98118 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -213,7 +213,9 @@ class Adherent extends CommonObject // Substitutions $substitutionarray=array( - '__CIVILITY__'=>$this->getCivilityLabel(), + '__ID__'=>$this->id, + '__MEMBER_ID__'=>$this->id, + '__CIVILITY__'=>$this->getCivilityLabel(), '__FIRSTNAME__'=>$msgishtml?dol_htmlentitiesbr($this->firstname):$this->firstname, '__LASTNAME__'=>$msgishtml?dol_htmlentitiesbr($this->lastname):$this->lastname, '__FULLNAME__'=>$msgishtml?dol_htmlentitiesbr($this->getFullName($langs)):$this->getFullName($langs), diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php index 60969908a44..69e22adf882 100644 --- a/htdocs/adherents/subscription.php +++ b/htdocs/adherents/subscription.php @@ -558,7 +558,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && ! if (! $error) { // Send confirmation Email - if ($object->email && $_POST["sendmail"]) + if ($object->email && $_POST["sendmail"]) // $object is 'Adherent' { $subjecttosend=$object->makeSubstitution($conf->global->ADHERENT_MAIL_COTIS_SUBJECT); $texttosend=$object->makeSubstitution($adht->getMailOnSubscription()); From f8973c9a228525eff2ed60ee7ec0d7db82cc81b3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Jan 2019 17:44:39 +0100 Subject: [PATCH 235/307] Fix translation Late <> Alert --- htdocs/compta/facture/list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 2ea640915c2..f83b024e6ed 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -753,7 +753,7 @@ if ($resql) if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; print ''; $formother->select_year($search_year_lim?$search_year_lim:-1,'search_year_lim',1, 20, 5, 0, 0, '', 'widthauto valignmiddle'); - print '
    '.$langs->trans("Late"); + print '
    '.$langs->trans("Alert"); print ''; } // Project @@ -1015,7 +1015,7 @@ if ($resql) print ''.dol_print_date($datelimit,'day'); if ($facturestatic->hasDelay()) { - print img_warning($langs->trans('Late')); + print img_warning($langs->trans('Alert').' - '.$langs->trans('Late')); } print ''; if (! $i) $totalarray['nbfield']++; From 5223b1ee1a1c69053f0a8726b86aa44c321af555 Mon Sep 17 00:00:00 2001 From: JC Prieto Date: Wed, 16 Jan 2019 20:23:16 +0100 Subject: [PATCH 236/307] FIX: To add more pdf models in thirdparties --- htdocs/societe/admin/societe.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index c5e4c8648d7..4628f241728 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -327,6 +327,7 @@ $head = societe_admin_prepare_head(); dol_fiche_head($head, 'general', $langs->trans("ThirdParties"), -1, 'company'); $dirsociete=array_merge(array('/core/modules/societe/'),$conf->modules_parts['societe']); +foreach ($conf->modules_parts['models'] as $mo) $dirsociete[]=$mo.'core/modules/societe/'; //Add more models // Module to manage customer/supplier code From 1345a63c8cd26615c65daa1dcfd57666ced07c50 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Jan 2019 20:56:11 +0100 Subject: [PATCH 237/307] Update doc --- build/makepack-howto.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index f1770a692c0..477d129d459 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -43,9 +43,9 @@ To generate a changelog of a maintenance version x.y.z, you can do "cd ~/git/dol - Run makepack-dolibarr.pl to generate all packages. - Check content of built packages. -- Move build files into www.dolibarr.org web site - (/home/dolibarr/wwwroot/files/stable). +- Run makepack-dolibarr.pl again with option to publish files on + dolibarr foundation server (Dir /home/dolibarr/wwwroot/files/stable on www.dolibarr.org). - Run makepack-dolibarr.pl again with option to publish files on sourceforge. This will also add official tag. - Edit symbolic links in directory "/home/dolibarr/wwwroot/files/stable/xxx" From b79aafc6e07c290a614ea670f3e241573bf8135f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 16 Jan 2019 20:57:41 +0100 Subject: [PATCH 238/307] Add missing command --- build/makepack-dolibarr.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index d78ba1e717d..349caaa784c 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -36,7 +36,7 @@ $PUBLISHBETARC="dolibarr\@vmprod1.dolibarr.org:/home/dolibarr/dolibarr.org/httpd "RPM_FEDORA"=>"rpmbuild", "RPM_MANDRIVA"=>"rpmbuild", "RPM_OPENSUSE"=>"rpmbuild", -"DEB"=>"dpkg", +"DEB"=>"dpkg dpatch", "FLATPACK"=>"flatpack", "EXEDOLIWAMP"=>"ISCC.exe", "SNAPSHOT"=>"tar" From 16220891f238e76b09b082fc02bd0228416d99a4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Jan 2019 01:16:03 +0100 Subject: [PATCH 239/307] Clean package --- build/makepack-dolibarr.pl | 1 + 1 file changed, 1 insertion(+) diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 349caaa784c..eca19e576fd 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -589,6 +589,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/Examples`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/unitTests`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpoffice/phpexcel/license.md`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/dav/tests`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/dejavu-fonts-ttf-*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tcpdf/fonts/freefont-*`; From d997309bcb278f2aeebdfacaf6fffb00ae7154bb Mon Sep 17 00:00:00 2001 From: gauthier Date: Thu, 17 Jan 2019 14:49:04 +0100 Subject: [PATCH 240/307] FIX : if(!method_exists(dol_loginfunction)) --- htdocs/core/lib/security2.lib.php | 324 +++++++++++++++--------------- 1 file changed, 163 insertions(+), 161 deletions(-) diff --git a/htdocs/core/lib/security2.lib.php b/htdocs/core/lib/security2.lib.php index d0def9d5627..ea05adf79f7 100644 --- a/htdocs/core/lib/security2.lib.php +++ b/htdocs/core/lib/security2.lib.php @@ -126,179 +126,181 @@ function checkLoginPassEntity($usertotest,$passwordtotest,$entitytotest,$authmod * @param Societe $mysoc Company object * @return void */ -function dol_loginfunction($langs,$conf,$mysoc) -{ - global $dolibarr_main_demo,$db; - global $smartphone,$hookmanager; - - // Instantiate hooks of thirdparty module only if not already define - $hookmanager->initHooks(array('mainloginpage')); - - $langs->load("main"); - $langs->load("other"); - $langs->load("help"); - $langs->load("admin"); - - $main_authentication=$conf->file->main_authentication; - $session_name=session_name(); - - $dol_url_root = DOL_URL_ROOT; - - // Title - $appli=constant('DOL_APPLICATION_TITLE'); - $title=$appli.' '.constant('DOL_VERSION'); - if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $title=$conf->global->MAIN_APPLICATION_TITLE; - $titletruedolibarrversion=constant('DOL_VERSION'); // $title used by login template after the @ to inform of true Dolibarr version - - // Note: $conf->css looks like '/theme/eldy/style.css.php' - $conf->css = "/theme/".(GETPOST('theme','alpha')?GETPOST('theme','alpha'):$conf->theme)."/style.css.php"; - $themepath=dol_buildpath($conf->css,1); - if (! empty($conf->modules_parts['theme'])) // Using this feature slow down application +if (! function_exists('dol_loginfunction')) { + function dol_loginfunction($langs,$conf,$mysoc) { - foreach($conf->modules_parts['theme'] as $reldir) + global $dolibarr_main_demo,$db; + global $smartphone,$hookmanager; + + // Instantiate hooks of thirdparty module only if not already define + $hookmanager->initHooks(array('mainloginpage')); + + $langs->load("main"); + $langs->load("other"); + $langs->load("help"); + $langs->load("admin"); + + $main_authentication=$conf->file->main_authentication; + $session_name=session_name(); + + $dol_url_root = DOL_URL_ROOT; + + // Title + $appli=constant('DOL_APPLICATION_TITLE'); + $title=$appli.' '.constant('DOL_VERSION'); + if (! empty($conf->global->MAIN_APPLICATION_TITLE)) $title=$conf->global->MAIN_APPLICATION_TITLE; + $titletruedolibarrversion=constant('DOL_VERSION'); // $title used by login template after the @ to inform of true Dolibarr version + + // Note: $conf->css looks like '/theme/eldy/style.css.php' + $conf->css = "/theme/".(GETPOST('theme','alpha')?GETPOST('theme','alpha'):$conf->theme)."/style.css.php"; + $themepath=dol_buildpath($conf->css,1); + if (! empty($conf->modules_parts['theme'])) // Using this feature slow down application { - if (file_exists(dol_buildpath($reldir.$conf->css, 0))) + foreach($conf->modules_parts['theme'] as $reldir) { - $themepath=dol_buildpath($reldir.$conf->css, 1); - break; + if (file_exists(dol_buildpath($reldir.$conf->css, 0))) + { + $themepath=dol_buildpath($reldir.$conf->css, 1); + break; + } } } - } - $conf_css = $themepath."?lang=".$langs->defaultlang; - - // Select templates dir - if (! empty($conf->modules_parts['tpl'])) // Using this feature slow down application - { - $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl/')); - foreach($dirtpls as $reldir) + $conf_css = $themepath."?lang=".$langs->defaultlang; + + // Select templates dir + if (! empty($conf->modules_parts['tpl'])) // Using this feature slow down application { - $tmp=dol_buildpath($reldir.'login.tpl.php'); - if (file_exists($tmp)) { $template_dir=preg_replace('/login\.tpl\.php$/','',$tmp); break; } + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl/')); + foreach($dirtpls as $reldir) + { + $tmp=dol_buildpath($reldir.'login.tpl.php'); + if (file_exists($tmp)) { $template_dir=preg_replace('/login\.tpl\.php$/','',$tmp); break; } + } } - } - else - { - $template_dir = DOL_DOCUMENT_ROOT."/core/tpl/"; - } - - // Set cookie for timeout management - $prefix=dol_getprefix(); - $sessiontimeout='DOLSESSTIMEOUT_'.$prefix; - if (! empty($conf->global->MAIN_SESSION_TIMEOUT)) setcookie($sessiontimeout, $conf->global->MAIN_SESSION_TIMEOUT, 0, "/", '', 0); - - if (GETPOST('urlfrom','alpha')) $_SESSION["urlfrom"]=GETPOST('urlfrom','alpha'); - else unset($_SESSION["urlfrom"]); - - if (! GETPOST("username")) $focus_element='username'; - else $focus_element='password'; - - $demologin=''; - $demopassword=''; - if (! empty($dolibarr_main_demo)) - { - $tab=explode(',',$dolibarr_main_demo); - $demologin=$tab[0]; - $demopassword=$tab[1]; - } - - // Execute hook getLoginPageOptions (for table) - $parameters=array('entity' => GETPOST('entity','int')); - $reshook = $hookmanager->executeHooks('getLoginPageOptions',$parameters); // Note that $action and $object may have been modified by some hooks. - if (is_array($hookmanager->resArray) && ! empty($hookmanager->resArray)) { - $morelogincontent = $hookmanager->resArray; // (deprecated) For compatibility - } else { - $morelogincontent = $hookmanager->resPrint; - } - - // Execute hook getLoginPageExtraOptions (eg for js) - $parameters=array('entity' => GETPOST('entity','int')); - $reshook = $hookmanager->executeHooks('getLoginPageExtraOptions',$parameters); // Note that $action and $object may have been modified by some hooks. - $moreloginextracontent = $hookmanager->resPrint; - - // Login - $login = (! empty($hookmanager->resArray['username']) ? $hookmanager->resArray['username'] : (GETPOST("username","alpha") ? GETPOST("username","alpha") : $demologin)); - $password = $demopassword; - - // Show logo (search in order: small company logo, large company logo, theme logo, common logo) - $width=0; - $urllogo=DOL_URL_ROOT.'/theme/login_logo.png'; - - if (! empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) - { - $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('thumbs/'.$mysoc->logo_small); - } - elseif (! empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) - { - $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode($mysoc->logo); - $width=128; - } - elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.png')) - { - $urllogo=DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.png'; - } - elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.png')) - { - $urllogo=DOL_URL_ROOT.'/theme/dolibarr_logo.png'; - } - - // Security graphical code - $captcha=0; - $captcha_refresh=''; - if (function_exists("imagecreatefrompng") && ! empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA)) - { - $captcha=1; - $captcha_refresh=img_picto($langs->trans("Refresh"),'refresh','id="captcha_refresh_img"'); - } - - // Extra link - $forgetpasslink=0; - $helpcenterlink=0; - if (empty($conf->global->MAIN_SECURITY_DISABLEFORGETPASSLINK) || empty($conf->global->MAIN_HELPCENTER_DISABLELINK)) - { - if (empty($conf->global->MAIN_SECURITY_DISABLEFORGETPASSLINK)) + else { - $forgetpasslink=1; + $template_dir = DOL_DOCUMENT_ROOT."/core/tpl/"; } - - if (empty($conf->global->MAIN_HELPCENTER_DISABLELINK)) + + // Set cookie for timeout management + $prefix=dol_getprefix(); + $sessiontimeout='DOLSESSTIMEOUT_'.$prefix; + if (! empty($conf->global->MAIN_SESSION_TIMEOUT)) setcookie($sessiontimeout, $conf->global->MAIN_SESSION_TIMEOUT, 0, "/", '', 0); + + if (GETPOST('urlfrom','alpha')) $_SESSION["urlfrom"]=GETPOST('urlfrom','alpha'); + else unset($_SESSION["urlfrom"]); + + if (! GETPOST("username")) $focus_element='username'; + else $focus_element='password'; + + $demologin=''; + $demopassword=''; + if (! empty($dolibarr_main_demo)) { - $helpcenterlink=1; + $tab=explode(',',$dolibarr_main_demo); + $demologin=$tab[0]; + $demopassword=$tab[1]; } + + // Execute hook getLoginPageOptions (for table) + $parameters=array('entity' => GETPOST('entity','int')); + $reshook = $hookmanager->executeHooks('getLoginPageOptions',$parameters); // Note that $action and $object may have been modified by some hooks. + if (is_array($hookmanager->resArray) && ! empty($hookmanager->resArray)) { + $morelogincontent = $hookmanager->resArray; // (deprecated) For compatibility + } else { + $morelogincontent = $hookmanager->resPrint; + } + + // Execute hook getLoginPageExtraOptions (eg for js) + $parameters=array('entity' => GETPOST('entity','int')); + $reshook = $hookmanager->executeHooks('getLoginPageExtraOptions',$parameters); // Note that $action and $object may have been modified by some hooks. + $moreloginextracontent = $hookmanager->resPrint; + + // Login + $login = (! empty($hookmanager->resArray['username']) ? $hookmanager->resArray['username'] : (GETPOST("username","alpha") ? GETPOST("username","alpha") : $demologin)); + $password = $demopassword; + + // Show logo (search in order: small company logo, large company logo, theme logo, common logo) + $width=0; + $urllogo=DOL_URL_ROOT.'/theme/login_logo.png'; + + if (! empty($mysoc->logo_small) && is_readable($conf->mycompany->dir_output.'/logos/thumbs/'.$mysoc->logo_small)) + { + $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode('thumbs/'.$mysoc->logo_small); + } + elseif (! empty($mysoc->logo) && is_readable($conf->mycompany->dir_output.'/logos/'.$mysoc->logo)) + { + $urllogo=DOL_URL_ROOT.'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode($mysoc->logo); + $width=128; + } + elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.png')) + { + $urllogo=DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/dolibarr_logo.png'; + } + elseif (is_readable(DOL_DOCUMENT_ROOT.'/theme/dolibarr_logo.png')) + { + $urllogo=DOL_URL_ROOT.'/theme/dolibarr_logo.png'; + } + + // Security graphical code + $captcha=0; + $captcha_refresh=''; + if (function_exists("imagecreatefrompng") && ! empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA)) + { + $captcha=1; + $captcha_refresh=img_picto($langs->trans("Refresh"),'refresh','id="captcha_refresh_img"'); + } + + // Extra link + $forgetpasslink=0; + $helpcenterlink=0; + if (empty($conf->global->MAIN_SECURITY_DISABLEFORGETPASSLINK) || empty($conf->global->MAIN_HELPCENTER_DISABLELINK)) + { + if (empty($conf->global->MAIN_SECURITY_DISABLEFORGETPASSLINK)) + { + $forgetpasslink=1; + } + + if (empty($conf->global->MAIN_HELPCENTER_DISABLELINK)) + { + $helpcenterlink=1; + } + } + + // Home message + $main_home=''; + if (! empty($conf->global->MAIN_HOME)) + { + $substitutionarray=getCommonSubstitutionArray($langs); + complete_substitutions_array($substitutionarray, $langs); + $texttoshow = make_substitutions($conf->global->MAIN_HOME, $substitutionarray, $langs); + + $main_home=dol_htmlcleanlastbr($texttoshow); + } + + // Google AD + $main_google_ad_client = ((! empty($conf->global->MAIN_GOOGLE_AD_CLIENT) && ! empty($conf->global->MAIN_GOOGLE_AD_SLOT))?1:0); + + // Set jquery theme + $dol_loginmesg = (! empty($_SESSION["dol_loginmesg"])?$_SESSION["dol_loginmesg"]:''); + $favicon=dol_buildpath('/theme/'.$conf->theme.'/img/favicon.ico',1); + if (! empty($conf->global->MAIN_FAVICON_URL)) $favicon=$conf->global->MAIN_FAVICON_URL; + $jquerytheme = 'smoothness'; + if (! empty($conf->global->MAIN_USE_JQUERY_THEME)) $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME; + + // Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_no_mouse_hover + $dol_hide_topmenu=GETPOST('dol_hide_topmenu','int'); + $dol_hide_leftmenu=GETPOST('dol_hide_leftmenu','int'); + $dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen','int'); + $dol_no_mouse_hover=GETPOST('dol_no_mouse_hover','int'); + $dol_use_jmobile=GETPOST('dol_use_jmobile','int'); + + // Include login page template + include $template_dir.'login.tpl.php'; + + + $_SESSION["dol_loginmesg"] = ''; } - - // Home message - $main_home=''; - if (! empty($conf->global->MAIN_HOME)) - { - $substitutionarray=getCommonSubstitutionArray($langs); - complete_substitutions_array($substitutionarray, $langs); - $texttoshow = make_substitutions($conf->global->MAIN_HOME, $substitutionarray, $langs); - - $main_home=dol_htmlcleanlastbr($texttoshow); - } - - // Google AD - $main_google_ad_client = ((! empty($conf->global->MAIN_GOOGLE_AD_CLIENT) && ! empty($conf->global->MAIN_GOOGLE_AD_SLOT))?1:0); - - // Set jquery theme - $dol_loginmesg = (! empty($_SESSION["dol_loginmesg"])?$_SESSION["dol_loginmesg"]:''); - $favicon=dol_buildpath('/theme/'.$conf->theme.'/img/favicon.ico',1); - if (! empty($conf->global->MAIN_FAVICON_URL)) $favicon=$conf->global->MAIN_FAVICON_URL; - $jquerytheme = 'smoothness'; - if (! empty($conf->global->MAIN_USE_JQUERY_THEME)) $jquerytheme = $conf->global->MAIN_USE_JQUERY_THEME; - - // Set dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen, dol_no_mouse_hover - $dol_hide_topmenu=GETPOST('dol_hide_topmenu','int'); - $dol_hide_leftmenu=GETPOST('dol_hide_leftmenu','int'); - $dol_optimize_smallscreen=GETPOST('dol_optimize_smallscreen','int'); - $dol_no_mouse_hover=GETPOST('dol_no_mouse_hover','int'); - $dol_use_jmobile=GETPOST('dol_use_jmobile','int'); - - // Include login page template - include $template_dir.'login.tpl.php'; - - - $_SESSION["dol_loginmesg"] = ''; } /** From 1d33b6ccbb64f3fbeb3ef1270b1ceeb6e239b915 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Thu, 17 Jan 2019 16:01:32 +0100 Subject: [PATCH 241/307] FIX broken external authentication module feature and avoid warning --- htdocs/cashdesk/class/Facturation.class.php | 3 +-- htdocs/cashdesk/index.php | 29 +++++++++++++++++++++ htdocs/cashdesk/tpl/liste_articles.tpl.php | 3 +-- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/htdocs/cashdesk/class/Facturation.class.php b/htdocs/cashdesk/class/Facturation.class.php index a0e992e9da9..e76f6c3a142 100644 --- a/htdocs/cashdesk/class/Facturation.class.php +++ b/htdocs/cashdesk/class/Facturation.class.php @@ -211,8 +211,7 @@ class Facturation $total_localtax1 = 0; $total_localtax2 = 0; - $tab=array(); - $tab = $_SESSION['poscart']; + $tab = (! empty($_SESSION['poscart'])?$_SESSION['poscart']:array()); $tab_size=count($tab); for($i=0;$i < $tab_size;$i++) diff --git a/htdocs/cashdesk/index.php b/htdocs/cashdesk/index.php index 24b94562915..c09521585e6 100644 --- a/htdocs/cashdesk/index.php +++ b/htdocs/cashdesk/index.php @@ -41,6 +41,8 @@ if ( $_SESSION['uid'] > 0 ) $usertxt=GETPOST('user','',1); $err=GETPOST("err"); +// Instantiate hooks of thirdparty module only if not already define +$hookmanager->initHooks(array('cashdeskloginpage')); /* * View @@ -51,6 +53,15 @@ $formproduct=new FormProduct($db); $arrayofcss=array('/cashdesk/css/style.css'); top_htmlhead('','',0,0,'',$arrayofcss); + +// Execute hook getLoginPageOptions (for table) +$parameters=array('entity' => GETPOST('entity','int')); +$reshook = $hookmanager->executeHooks('getLoginPageOptions',$parameters); // Note that $action and $object may have been modified by some hooks. +if (is_array($hookmanager->resArray) && ! empty($hookmanager->resArray)) { + $morelogincontent = $hookmanager->resArray; // (deprecated) For compatibility +} else { + $morelogincontent = $hookmanager->resPrint; +} ?> @@ -92,6 +103,24 @@ else + $option) + { + if ($format == 'table') { + echo ''; + echo $option; + } + } + } + else { + echo ''; + echo $morelogincontent; + } +} +?> +   diff --git a/htdocs/cashdesk/tpl/liste_articles.tpl.php b/htdocs/cashdesk/tpl/liste_articles.tpl.php index 65f48b0603c..082a1f901cd 100644 --- a/htdocs/cashdesk/tpl/liste_articles.tpl.php +++ b/htdocs/cashdesk/tpl/liste_articles.tpl.php @@ -46,8 +46,7 @@ $societe = new Societe($db); $societe->fetch($thirdpartyid); /** end add Ditto */ -$tab=array(); -$tab = $_SESSION['poscart']; +$tab = (! empty($_SESSION['poscart'])?$_SESSION['poscart']:array()); $tab_size=count($tab); if ($tab_size <= 0) print '
    '.$langs->trans("NoArticle").'

    '; From 1a10d8f702152a8d6c878e830d09b87aa663027b Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Thu, 17 Jan 2019 16:25:35 +0100 Subject: [PATCH 242/307] FIX loadLangs in subscription list.php for v9 et develop --- htdocs/adherents/subscription/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index 9eed2238f80..fabc188cfb5 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -28,7 +28,7 @@ require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; -$langs->load(array("members","companies")); +$langs->loadLangs(array("members","companies")); $action=GETPOST('action','aZ09'); $massaction=GETPOST('massaction','alpha'); From 5b037d87cb96b26f80aae62764de1378be1bfdea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 17 Jan 2019 20:04:44 +0100 Subject: [PATCH 243/307] Update doc --- build/README | 6 ++---- build/exe/doliwamp/doliwamp.iss | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/build/README b/build/README index 4816be8bc3a..f8c774a711c 100644 --- a/build/README +++ b/build/README @@ -19,11 +19,9 @@ Note: Prerequisites to build autoexe DoliWamp package: > Install InnoSetup For example by running isetup-5.3.9.exe (http://www.jrsoftware.org) > Install WampServer into "C:\Program Files\Wamp" - For example by running wampserver2.2e-php5.4.3-httpd-2.4.2-mysql5.5.24-x64.exe (http://www.wampserver.com) -> Install WampServer addon to have versions: Apache2.2.11, Mysql5.0.45, Php5.3.0 - For example by running WampServer2-APACHE2211.exe (http://www.wampserver.com) + For example by running wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b.exe (http://www.wampserver.com) +> Install WampServer addon to have versions: Mysql5.0.45 For example by running WampServer2-MYSQL5045.exe (http://www.wampserver.com) - For example by running WampServer2-PHP530.exe (http://www.wampserver.com) > To build from Windows (running from makepack-dolibarr.pl script is however recommanded), open file build/exe/doliwamp.iss and click on button "Compile". The .exe file will be build into directory build. diff --git a/build/exe/doliwamp/doliwamp.iss b/build/exe/doliwamp/doliwamp.iss index cc6a39a62a4..587f2584dbe 100644 --- a/build/exe/doliwamp/doliwamp.iss +++ b/build/exe/doliwamp/doliwamp.iss @@ -32,7 +32,7 @@ AppPublisherURL=https://www.nltechno.com AppSupportURL=https://www.dolibarr.org AppUpdatesURL=https://www.dolibarr.org AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql softwares. -AppCopyright=Copyright (C) 2008-2018 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre) +AppCopyright=Copyright (C) 2008-2019 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre) DefaultDirName=c:\dolibarr DefaultGroupName=Dolibarr ;LicenseFile=COPYING From 92eeff7a26a3a54b646ad75a436a1491dbc3f674 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Jan 2019 13:12:09 +0100 Subject: [PATCH 244/307] Fix packager and doc --- build/README | 9 +++++---- build/exe/doliwamp/README | 2 +- build/makepack-dolibarr.pl | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/build/README b/build/README index f8c774a711c..27ddf4178fd 100644 --- a/build/README +++ b/build/README @@ -16,6 +16,8 @@ Note: Prerequisites to build tgz, debian, rpm package > apt-get install tar dpkg dpatch p7zip-full rpm zip Note: Prerequisites to build autoexe DoliWamp package: +> apt-get install wine q4wine +> Launch "wine cmd" to check a drive Z: pointing to / exists. > Install InnoSetup For example by running isetup-5.3.9.exe (http://www.jrsoftware.org) > Install WampServer into "C:\Program Files\Wamp" @@ -25,7 +27,9 @@ Note: Prerequisites to build autoexe DoliWamp package: > To build from Windows (running from makepack-dolibarr.pl script is however recommanded), open file build/exe/doliwamp.iss and click on button "Compile". The .exe file will be build into directory build. - +> Add path to ISCC into PATH windows var: + Launch wine cmd, then regedit and add entry int HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH + - To build a theme package, launch the script > perl makepack-dolibarrtheme.pl @@ -44,9 +48,6 @@ generated packages will not contains this "build" directory. We can find in "build", following sub-directories: -* aps: -To build APS package. - * debian: To build Debian package. diff --git a/build/exe/doliwamp/README b/build/exe/doliwamp/README index 3cbd8986700..9d4c68daf3d 100644 --- a/build/exe/doliwamp/README +++ b/build/exe/doliwamp/README @@ -5,4 +5,4 @@ DOLIWAMP Package tools This directory contains files used by makepack-dolibarr.pl script to build the all-in-on .EXE package DoliWamp, ready -to be distributedt (for Windows). \ No newline at end of file +to be distributed (for Windows). \ No newline at end of file diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index eca19e576fd..14f28a71edc 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -1058,7 +1058,7 @@ if ($nboftargetok) { $ret=`cat "$SOURCE/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`; print "Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"\n"; - $cmd= "ISCC.exe \"Z:$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; + $cmd= "wine ISCC.exe \"Z:$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; print "$cmd\n"; $ret= `$cmd`; #print "$ret\n"; From 971670da8ddc92647622763dfd3d893e788c9063 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Jan 2019 14:24:49 +0100 Subject: [PATCH 245/307] Clean language file --- htdocs/langs/en_US/admin.lang | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index ebc0d89468b..ce912b72266 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -602,8 +602,6 @@ Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of u Module2800Desc=FTP Client Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind conversions capabilities -Module3100Name=Skype -Module3100Desc=Add a Skype button into users / third parties / contacts / members cards Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module4000Name=HRM From f82c917f13d7da36b0361359c4c651a59ce104d0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 18 Jan 2019 19:39:51 +0100 Subject: [PATCH 246/307] Better use of email content to init project --- .../class/emailcollector.class.php | 2794 ++++++++--------- 1 file changed, 1397 insertions(+), 1397 deletions(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index fc0b8673332..c86b575855a 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -34,304 +34,304 @@ require_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php'; */ class EmailCollector extends CommonObject { - /** - * @var string ID to identify managed object - */ - public $element = 'emailcollector'; - /** - * @var string Name of table without prefix where object is stored - */ - public $table_element = 'emailcollector_emailcollector'; - /** - * @var int Does emailcollector support multicompany module ? 0=No test on entity, 1=Test with field entity, 2=Test with link by societe - */ - public $ismultientitymanaged = 1; - /** - * @var int Does emailcollector support extrafields ? 0=No, 1=Yes - */ - public $isextrafieldmanaged = 0; - /** - * @var string String with name of icon for emailcollector. Must be the part after the 'object_' into object_emailcollector.png - */ - public $picto = 'generic'; + /** + * @var string ID to identify managed object + */ + public $element = 'emailcollector'; + /** + * @var string Name of table without prefix where object is stored + */ + public $table_element = 'emailcollector_emailcollector'; + /** + * @var int Does emailcollector support multicompany module ? 0=No test on entity, 1=Test with field entity, 2=Test with link by societe + */ + public $ismultientitymanaged = 1; + /** + * @var int Does emailcollector support extrafields ? 0=No, 1=Yes + */ + public $isextrafieldmanaged = 0; + /** + * @var string String with name of icon for emailcollector. Must be the part after the 'object_' into object_emailcollector.png + */ + public $picto = 'generic'; - /** - * @var int Field with ID of parent key if this field has a parent - */ - public $fk_element = 'fk_emailcollector'; + /** + * @var int Field with ID of parent key if this field has a parent + */ + public $fk_element = 'fk_emailcollector'; - /** - * @var array Array of child tables (child tables to delete before deleting a record) - */ - protected $childtables=array('emailcollector_emailcollectorfilter', 'emailcollector_emailcollectoraction'); + /** + * @var array Array of child tables (child tables to delete before deleting a record) + */ + protected $childtables=array('emailcollector_emailcollectorfilter', 'emailcollector_emailcollectoraction'); - /** - * 'type' if the field format. - * 'label' the translation key. - * 'enabled' is a condition when the field must be managed. - * 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only. Using a negative value means field is not shown by default on list but can be selected for viewing) - * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). - * 'default' is a default value for creation (can still be replaced by the global setup of default values) - * 'index' if we want an index in database. - * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). - * 'position' is the sort order of field. - * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. - * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). - * 'css' is the CSS style to use on field. For example: 'maxwidth200' - * 'help' is a string visible as a tooltip on field - * 'comment' is not used. You can store here any text of your choice. It is not used by application. - * 'showoncombobox' if value of the field must be visible into the label of the combobox that list record - * 'arraykeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel") - */ + /** + * 'type' if the field format. + * 'label' the translation key. + * 'enabled' is a condition when the field must be managed. + * 'visible' says if field is visible in list (Examples: 0=Not visible, 1=Visible on list and create/update/view forms, 2=Visible on list only. Using a negative value means field is not shown by default on list but can be selected for viewing) + * 'notnull' is set to 1 if not null in database. Set to -1 if we must set data to null if empty ('' or 0). + * 'default' is a default value for creation (can still be replaced by the global setup of default values) + * 'index' if we want an index in database. + * 'foreignkey'=>'tablename.field' if the field is a foreign key (it is recommanded to name the field fk_...). + * 'position' is the sort order of field. + * 'searchall' is 1 if we want to search in this field when making a search from the quick search button. + * 'isameasure' must be set to 1 if you want to have a total on list for this field. Field type must be summable like integer or double(24,8). + * 'css' is the CSS style to use on field. For example: 'maxwidth200' + * 'help' is a string visible as a tooltip on field + * 'comment' is not used. You can store here any text of your choice. It is not used by application. + * 'showoncombobox' if value of the field must be visible into the label of the combobox that list record + * 'arraykeyval' to set list of value if type is a list of predefined values. For example: array("0"=>"Draft","1"=>"Active","-1"=>"Cancel") + */ - // BEGIN MODULEBUILDER PROPERTIES - /** - * @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor. - */ - public $fields=array( - 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID','visible'=>2, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1), - 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'notnull'=>1, 'index'=>1, 'position'=>20), - 'ref' =>array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'help'=>'Example: MyCollector1'), - 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1, 'help'=>'Example: My Email collector'), - 'description' => array('type'=>'text', 'label'=>'Description', 'visible'=>-1, 'enabled'=>1, 'position'=>60, 'notnull'=>-1), - 'host' => array('type'=>'varchar(255)', 'label'=>'EMailHost', 'visible'=>1, 'enabled'=>1, 'position'=>100, 'notnull'=>1, 'searchall'=>1, 'comment'=>"IMAP server", 'help'=>'Example: imap.gmail.com'), - 'login' => array('type'=>'varchar(128)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'position'=>101, 'notnull'=>-1, 'index'=>1, 'comment'=>"IMAP login", 'help'=>'Example: myaccount@gmail.com'), - 'password' => array('type'=>'password', 'label'=>'Password', 'visible'=>-1, 'enabled'=>1, 'position'=>102, 'notnull'=>-1, 'comment'=>"IMAP password"), - 'source_directory' => array('type'=>'varchar(255)', 'label'=>'MailboxSourceDirectory', 'visible'=>-1, 'enabled'=>1, 'position'=>103, 'notnull'=>1, 'default' => 'Inbox', 'help'=>'Example: INBOX'), - //'filter' => array('type'=>'text', 'label'=>'Filter', 'visible'=>1, 'enabled'=>1, 'position'=>105), - //'actiontodo' => array('type'=>'varchar(255)', 'label'=>'ActionToDo', 'visible'=>1, 'enabled'=>1, 'position'=>106), - 'target_directory' => array('type'=>'varchar(255)', 'label'=>'MailboxTargetDirectory', 'visible'=>1, 'enabled'=>1, 'position'=>110, 'notnull'=>0, 'comment'=>"Where to store messages once processed"), - 'datelastresult' => array('type'=>'datetime', 'label'=>'DateLastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>121, 'notnull'=>-1,), - 'codelastresult' => array('type'=>'varchar(16)', 'label'=>'CodeLastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>122, 'notnull'=>-1,), - 'lastresult' => array('type'=>'varchar(255)', 'label'=>'LastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>123, 'notnull'=>-1,), - 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'visible'=>0, 'enabled'=>1, 'position'=>61, 'notnull'=>-1,), - 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'visible'=>0, 'enabled'=>1, 'position'=>62, 'notnull'=>-1,), - 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'visible'=>-2, 'enabled'=>1, 'position'=>500, 'notnull'=>1,), - 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'visible'=>-2, 'enabled'=>1, 'position'=>501, 'notnull'=>1,), - //'date_validation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>502), - 'fk_user_creat' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'visible'=>-2, 'enabled'=>1, 'position'=>510, 'notnull'=>1,), - 'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'visible'=>-2, 'enabled'=>1, 'position'=>511, 'notnull'=>-1,), - //'fk_user_valid' =>array('type'=>'integer', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>512), - 'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'visible'=>-2, 'enabled'=>1, 'position'=>1000, 'notnull'=>-1,), - 'status' => array('type'=>'integer', 'label'=>'Status', 'visible'=>1, 'enabled'=>1, 'position'=>1000, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Inactive', '1'=>'Active')) - ); + // BEGIN MODULEBUILDER PROPERTIES + /** + * @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor. + */ + public $fields=array( + 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID','visible'=>2, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1), + 'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'notnull'=>1, 'index'=>1, 'position'=>20), + 'ref' =>array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'help'=>'Example: MyCollector1'), + 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1, 'help'=>'Example: My Email collector'), + 'description' => array('type'=>'text', 'label'=>'Description', 'visible'=>-1, 'enabled'=>1, 'position'=>60, 'notnull'=>-1), + 'host' => array('type'=>'varchar(255)', 'label'=>'EMailHost', 'visible'=>1, 'enabled'=>1, 'position'=>100, 'notnull'=>1, 'searchall'=>1, 'comment'=>"IMAP server", 'help'=>'Example: imap.gmail.com'), + 'login' => array('type'=>'varchar(128)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'position'=>101, 'notnull'=>-1, 'index'=>1, 'comment'=>"IMAP login", 'help'=>'Example: myaccount@gmail.com'), + 'password' => array('type'=>'password', 'label'=>'Password', 'visible'=>-1, 'enabled'=>1, 'position'=>102, 'notnull'=>-1, 'comment'=>"IMAP password"), + 'source_directory' => array('type'=>'varchar(255)', 'label'=>'MailboxSourceDirectory', 'visible'=>-1, 'enabled'=>1, 'position'=>103, 'notnull'=>1, 'default' => 'Inbox', 'help'=>'Example: INBOX'), + //'filter' => array('type'=>'text', 'label'=>'Filter', 'visible'=>1, 'enabled'=>1, 'position'=>105), + //'actiontodo' => array('type'=>'varchar(255)', 'label'=>'ActionToDo', 'visible'=>1, 'enabled'=>1, 'position'=>106), + 'target_directory' => array('type'=>'varchar(255)', 'label'=>'MailboxTargetDirectory', 'visible'=>1, 'enabled'=>1, 'position'=>110, 'notnull'=>0, 'comment'=>"Where to store messages once processed"), + 'datelastresult' => array('type'=>'datetime', 'label'=>'DateLastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>121, 'notnull'=>-1,), + 'codelastresult' => array('type'=>'varchar(16)', 'label'=>'CodeLastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>122, 'notnull'=>-1,), + 'lastresult' => array('type'=>'varchar(255)', 'label'=>'LastResult', 'visible'=>1, 'enabled'=>'$action != "create" && $action != "edit"', 'position'=>123, 'notnull'=>-1,), + 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'visible'=>0, 'enabled'=>1, 'position'=>61, 'notnull'=>-1,), + 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'visible'=>0, 'enabled'=>1, 'position'=>62, 'notnull'=>-1,), + 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'visible'=>-2, 'enabled'=>1, 'position'=>500, 'notnull'=>1,), + 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'visible'=>-2, 'enabled'=>1, 'position'=>501, 'notnull'=>1,), + //'date_validation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'position'=>502), + 'fk_user_creat' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'visible'=>-2, 'enabled'=>1, 'position'=>510, 'notnull'=>1,), + 'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'visible'=>-2, 'enabled'=>1, 'position'=>511, 'notnull'=>-1,), + //'fk_user_valid' =>array('type'=>'integer', 'label'=>'UserValidation', 'enabled'=>1, 'visible'=>-1, 'position'=>512), + 'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'visible'=>-2, 'enabled'=>1, 'position'=>1000, 'notnull'=>-1,), + 'status' => array('type'=>'integer', 'label'=>'Status', 'visible'=>1, 'enabled'=>1, 'position'=>1000, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Inactive', '1'=>'Active')) + ); - /** - * @var int ID - */ - public $rowid; + /** + * @var int ID + */ + public $rowid; - /** - * @var string Ref - */ - public $ref; + /** + * @var string Ref + */ + public $ref; - /** - * @var int Entity - */ - public $entity; + /** + * @var int Entity + */ + public $entity; - /** - * @var string label - */ - public $label; + /** + * @var string label + */ + public $label; - /** - * @var int Status - */ - public $status; + /** + * @var int Status + */ + public $status; - public $date_creation; - public $tms; + public $date_creation; + public $tms; - /** - * @var int ID - */ - public $fk_user_creat; + /** + * @var int ID + */ + public $fk_user_creat; - /** - * @var int ID - */ - public $fk_user_modif; + /** + * @var int ID + */ + public $fk_user_modif; - public $import_key; + public $import_key; - public $host; - public $login; - public $password; - public $source_directory; + public $host; + public $login; + public $password; + public $source_directory; public $target_directory; public $datelastresult; - public $lastresult; - // END MODULEBUILDER PROPERTIES + public $lastresult; + // END MODULEBUILDER PROPERTIES - public $filters; - public $actions; + public $filters; + public $actions; - /** - * Constructor - * - * @param DoliDb $db Database handler - */ - public function __construct(DoliDB $db) - { - global $conf, $langs, $user; - - $this->db = $db; - - if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) $this->fields['rowid']['visible']=0; - if (empty($conf->multicompany->enabled) && isset($this->fields['entity'])) $this->fields['entity']['enabled']=0; - - // Unset fields that are disabled - foreach($this->fields as $key => $val) - { - if (isset($val['enabled']) && empty($val['enabled'])) - { - unset($this->fields[$key]); - } - } - - // Translate some data of arrayofkeyval - foreach($this->fields as $key => $val) - { - if (is_array($this->fields['status']['arrayofkeyval'])) - { - foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) - { - $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); - } - } - } - } - - /** - * Create object into database - * - * @param User $user User that creates - * @param bool $notrigger false=launch triggers after, true=disable triggers - * @return int <0 if KO, Id of created object if OK - */ - public function create(User $user, $notrigger = false) - { - return $this->createCommon($user, $notrigger); - } - - /** - * Clone and object into another one - * - * @param User $user User that creates - * @param int $fromid Id of object to clone - * @return mixed New object created, <0 if KO - */ - public function createFromClone(User $user, $fromid) - { - global $langs, $hookmanager, $extrafields; - $error = 0; - - dol_syslog(__METHOD__, LOG_DEBUG); - - $object = new self($this->db); - - $this->db->begin(); - - // Load source object - $object->fetchCommon($fromid); - // Reset some properties - unset($object->id); - unset($object->fk_user_creat); - unset($object->import_key); - - // Clear fields - $object->ref = "copy_of_".$object->ref; - $object->title = $langs->trans("CopyOf")." ".$object->title; - // ... - // Clear extrafields that are unique - if (is_array($object->array_options) && count($object->array_options) > 0) - { - $extrafields->fetch_name_optionals_label($this->element); - foreach($object->array_options as $key => $option) - { - $shortkey = preg_replace('/options_/', '', $key); - if (! empty($extrafields->attributes[$this->element]['unique'][$shortkey])) - { - //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; - unset($object->array_options[$key]); - } - } - } - - // Create clone - $object->context['createfromclone'] = 'createfromclone'; - $result = $object->createCommon($user); - if ($result < 0) { - $error++; - $this->error = $object->error; - $this->errors = $object->errors; - } - - // End - if (!$error) { - $this->db->commit(); - return $object; - } else { - $this->db->rollback(); - return -1; - } - } - - /** - * Load object in memory from the database - * - * @param int $id Id object - * @param string $ref Ref - * @return int <0 if KO, 0 if not found, >0 if OK - */ - public function fetch($id, $ref = null) - { - $result = $this->fetchCommon($id, $ref); - //if ($result > 0 && ! empty($this->table_element_line)) $this->fetchLines(); - return $result; - } - - /** - * Load object lines in memory from the database - * - * @return int <0 if KO, 0 if not found, >0 if OK - */ - /*public function fetchLines() - { - $this->lines=array(); - - // Load lines with object EmailCollectorLine - - return count($this->lines)?1:0; - }*/ - - /** - * Fetch all account and load objects into an array - * - * @param User $user User - * @param int $activeOnly filter if active - * @param string $sortfield field for sorting - * @param string $sortorder sorting order - * @param int $limit sort limit - * @param int $page page to start on - * @return array Array with key => EmailCollector object - */ - public function fetchAll(User $user, $activeOnly = 0, $sortfield = 's.rowid', $sortorder = 'ASC', $limit = 100, $page = 0) + /** + * Constructor + * + * @param DoliDb $db Database handler + */ + public function __construct(DoliDB $db) { - global $langs; + global $conf, $langs, $user; - $obj_ret = array(); + $this->db = $db; + + if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) $this->fields['rowid']['visible']=0; + if (empty($conf->multicompany->enabled) && isset($this->fields['entity'])) $this->fields['entity']['enabled']=0; + + // Unset fields that are disabled + foreach($this->fields as $key => $val) + { + if (isset($val['enabled']) && empty($val['enabled'])) + { + unset($this->fields[$key]); + } + } + + // Translate some data of arrayofkeyval + foreach($this->fields as $key => $val) + { + if (is_array($this->fields['status']['arrayofkeyval'])) + { + foreach($this->fields['status']['arrayofkeyval'] as $key2 => $val2) + { + $this->fields['status']['arrayofkeyval'][$key2]=$langs->trans($val2); + } + } + } + } + + /** + * Create object into database + * + * @param User $user User that creates + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, Id of created object if OK + */ + public function create(User $user, $notrigger = false) + { + return $this->createCommon($user, $notrigger); + } + + /** + * Clone and object into another one + * + * @param User $user User that creates + * @param int $fromid Id of object to clone + * @return mixed New object created, <0 if KO + */ + public function createFromClone(User $user, $fromid) + { + global $langs, $hookmanager, $extrafields; + $error = 0; + + dol_syslog(__METHOD__, LOG_DEBUG); + + $object = new self($this->db); + + $this->db->begin(); + + // Load source object + $object->fetchCommon($fromid); + // Reset some properties + unset($object->id); + unset($object->fk_user_creat); + unset($object->import_key); + + // Clear fields + $object->ref = "copy_of_".$object->ref; + $object->title = $langs->trans("CopyOf")." ".$object->title; + // ... + // Clear extrafields that are unique + if (is_array($object->array_options) && count($object->array_options) > 0) + { + $extrafields->fetch_name_optionals_label($this->element); + foreach($object->array_options as $key => $option) + { + $shortkey = preg_replace('/options_/', '', $key); + if (! empty($extrafields->attributes[$this->element]['unique'][$shortkey])) + { + //var_dump($key); var_dump($clonedObj->array_options[$key]); exit; + unset($object->array_options[$key]); + } + } + } + + // Create clone + $object->context['createfromclone'] = 'createfromclone'; + $result = $object->createCommon($user); + if ($result < 0) { + $error++; + $this->error = $object->error; + $this->errors = $object->errors; + } + + // End + if (!$error) { + $this->db->commit(); + return $object; + } else { + $this->db->rollback(); + return -1; + } + } + + /** + * Load object in memory from the database + * + * @param int $id Id object + * @param string $ref Ref + * @return int <0 if KO, 0 if not found, >0 if OK + */ + public function fetch($id, $ref = null) + { + $result = $this->fetchCommon($id, $ref); + //if ($result > 0 && ! empty($this->table_element_line)) $this->fetchLines(); + return $result; + } + + /** + * Load object lines in memory from the database + * + * @return int <0 if KO, 0 if not found, >0 if OK + */ + /*public function fetchLines() + { + $this->lines=array(); + + // Load lines with object EmailCollectorLine + + return count($this->lines)?1:0; + }*/ + + /** + * Fetch all account and load objects into an array + * + * @param User $user User + * @param int $activeOnly filter if active + * @param string $sortfield field for sorting + * @param string $sortorder sorting order + * @param int $limit sort limit + * @param int $page page to start on + * @return array Array with key => EmailCollector object + */ + public function fetchAll(User $user, $activeOnly = 0, $sortfield = 's.rowid', $sortorder = 'ASC', $limit = 100, $page = 0) + { + global $langs; + + $obj_ret = array(); $socid = $user->societe_id ? $user->societe_id : ''; - $sql = "SELECT s.rowid"; + $sql = "SELECT s.rowid"; $sql.= " FROM ".MAIN_DB_PREFIX."emailcollector_emailcollector as s"; $sql.= ' WHERE s.entity IN ('.getEntity('emailcollector').')'; if ($activeOnly) { @@ -360,54 +360,54 @@ class EmailCollector extends CommonObject $i++; } } else { - $this->errors[] = 'EmailCollector::fetchAll Error when retrieve emailcollector list'; + $this->errors[] = 'EmailCollector::fetchAll Error when retrieve emailcollector list'; dol_syslog('EmailCollector::fetchAll Error when retrieve emailcollector list', LOG_ERR); $ret = -1; } if (! count($obj_ret)) { - dol_syslog('EmailCollector::fetchAll No emailcollector found', LOG_DEBUG); + dol_syslog('EmailCollector::fetchAll No emailcollector found', LOG_DEBUG); } return $obj_ret; - } + } - /** - * Update object into database - * - * @param User $user User that modifies - * @param bool $notrigger false=launch triggers after, true=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function update(User $user, $notrigger = false) - { - return $this->updateCommon($user, $notrigger); - } + /** + * Update object into database + * + * @param User $user User that modifies + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, >0 if OK + */ + public function update(User $user, $notrigger = false) + { + return $this->updateCommon($user, $notrigger); + } - /** - * Delete object in database - * - * @param User $user User that deletes - * @param bool $notrigger false=launch triggers after, true=disable triggers - * @return int <0 if KO, >0 if OK - */ - public function delete(User $user, $notrigger = false) - { - return $this->deleteCommon($user, $notrigger, 1); - } + /** + * Delete object in database + * + * @param User $user User that deletes + * @param bool $notrigger false=launch triggers after, true=disable triggers + * @return int <0 if KO, >0 if OK + */ + public function delete(User $user, $notrigger = false) + { + return $this->deleteCommon($user, $notrigger, 1); + } - /** - * Return a link to the object card (with optionaly the picto) - * - * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) - * @param string $option On what the link point to ('nolink', ...) + /** + * Return a link to the object card (with optionaly the picto) + * + * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) + * @param string $option On what the link point to ('nolink', ...) * @param int $notooltip 1=Disable tooltip * @param string $morecss Add more css on link * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking - * @return string String with URL - */ - function getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1) - { - global $db, $conf, $langs, $hookmanager; + * @return string String with URL + */ + function getNomUrl($withpicto=0, $option='', $notooltip=0, $morecss='', $save_lastsearch_value=-1) + { + global $db, $conf, $langs, $hookmanager; global $dolibarr_main_authentication, $dolibarr_main_demo; global $menumanager; @@ -424,12 +424,12 @@ class EmailCollector extends CommonObject if ($option != 'nolink') { - // Add param to save lastsearch_values or not - $add_save_lastsearch_values=($save_lastsearch_value == 1 ? 1 : 0); - if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) { + // Add param to save lastsearch_values or not + $add_save_lastsearch_values=($save_lastsearch_value == 1 ? 1 : 0); + if ($save_lastsearch_value == -1 && preg_match('/list\.php/', $_SERVER["PHP_SELF"])) { $add_save_lastsearch_values=1; } - if ($add_save_lastsearch_values) { + if ($add_save_lastsearch_values) { $url.='&save_lastsearch_values=1'; } } @@ -454,1092 +454,1092 @@ class EmailCollector extends CommonObject } else $linkclose = ($morecss?' class="'.$morecss.'"':''); - $linkstart = ''; - $linkend=''; - - $result .= $linkstart; - if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1); - if ($withpicto != 2) $result.= $this->ref; - $result .= $linkend; - //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); - - global $action,$hookmanager; - $hookmanager->initHooks(array('emailcollectordao')); - $parameters=array('id'=>$this->id, 'getnomurl'=>$result); - $reshook=$hookmanager->executeHooks('getNomUrl',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks - if ($reshook > 0) $result = $hookmanager->resPrint; - else $result .= $hookmanager->resPrint; - - return $result; - } - - /** - * Return label of the status - * - * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto - * @return string Label of status - */ - public function getLibStatut($mode=0) - { - return $this->LibStatut($this->status, $mode); - } - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps - /** - * Return the status - * - * @param int $status Id status - * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto - * @return string Label of status - */ - public function LibStatut($status, $mode=0) - { - // phpcs:enable - if (empty($this->labelstatus)) - { - global $langs; - //$langs->load("mymodule"); - $this->labelstatus[1] = $langs->trans('Enabled'); - $this->labelstatus[0] = $langs->trans('Disabled'); - } - - if ($mode == 0) - { - return $this->labelstatus[$status]; - } - elseif ($mode == 1) - { - return $this->labelstatus[$status]; - } - elseif ($mode == 2) - { - if ($status == 1) return img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; - elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; - } - elseif ($mode == 3) - { - if ($status == 1) return img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle'); - elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle'); - } - elseif ($mode == 4) - { - if ($status == 1) return img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; - elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; - } - elseif ($mode == 5) - { - if ($status == 1) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle'); - elseif ($status == 0) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle'); - } - elseif ($mode == 6) - { - if ($status == 1) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle'); - elseif ($status == 0) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle'); - } - } - - /** - * Charge les informations d'ordre info dans l'objet commande - * - * @param int $id Id of order - * @return void - */ - public function info($id) - { - $sql = 'SELECT rowid, date_creation as datec, tms as datem,'; - $sql.= ' fk_user_creat, fk_user_modif'; - $sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; - $sql.= ' WHERE t.rowid = '.$id; - $result=$this->db->query($sql); - if ($result) - { - if ($this->db->num_rows($result)) - { - $obj = $this->db->fetch_object($result); - $this->id = $obj->rowid; - if ($obj->fk_user_author) - { - $cuser = new User($this->db); - $cuser->fetch($obj->fk_user_author); - $this->user_creation = $cuser; - } - - if ($obj->fk_user_valid) - { - $vuser = new User($this->db); - $vuser->fetch($obj->fk_user_valid); - $this->user_validation = $vuser; - } - - if ($obj->fk_user_cloture) - { - $cluser = new User($this->db); - $cluser->fetch($obj->fk_user_cloture); - $this->user_cloture = $cluser; - } - - $this->date_creation = $this->db->jdate($obj->datec); - $this->date_modification = $this->db->jdate($obj->datem); - $this->date_validation = $this->db->jdate($obj->datev); - } - - $this->db->free($result); - } - else - { - dol_print_error($this->db); - } - } - - /** - * Initialise object with example values - * Id must be 0 if object instance is a specimen - * - * @return void - */ - public function initAsSpecimen() - { - $this->initAsSpecimenCommon(); - } - - /** - * Fetch filters - * - * @return int <0 if KO, >0 if OK - */ - public function fetchFilters() - { - $this->filters = array(); - - $sql = 'SELECT rowid, type, rulevalue, status'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'emailcollector_emailcollectorfilter'; - $sql.= ' WHERE fk_emailcollector = '.$this->id; - //$sql.= ' ORDER BY position'; - - $resql = $this->db->query($sql); - if ($resql) - { - $num=$this->db->num_rows($resql); - $i = 0; - while($i < $num) - { - $obj=$this->db->fetch_object($resql); - $this->filters[$obj->rowid]=array('id'=>$obj->rowid, 'type'=>$obj->type, 'rulevalue'=>$obj->rulevalue, 'status'=>$obj->status); - $i++; - } - $this->db->free($resql); - } - else dol_print_error($this->db); - - return 1; - } - - /** - * Fetch actions - * - * @return int <0 if KO, >0 if OK - */ - public function fetchActions() - { - $this->actions = array(); - - $sql = 'SELECT rowid, type, actionparam, status'; - $sql.= ' FROM '.MAIN_DB_PREFIX.'emailcollector_emailcollectoraction'; - $sql.= ' WHERE fk_emailcollector = '.$this->id; - $sql.= ' ORDER BY position'; - - $resql = $this->db->query($sql); - if ($resql) - { - $num=$this->db->num_rows($resql); - $i = 0; - while($i < $num) - { - $obj=$this->db->fetch_object($resql); - $this->actions[$obj->rowid]=array('id'=>$obj->rowid, 'type'=>$obj->type, 'actionparam'=>$obj->actionparam, 'status'=>$obj->status); - $i++; - } - $this->db->free($resql); - } - else dol_print_error($this->db); - } - - - /** - * Return the connectstring to use with IMAP connection function - * - * @return string - */ - function getConnectStringIMAP() - { - // Connect to IMAP - $flags ='/service=imap'; // IMAP - $flags.='/ssl'; // '/tls' - $flags.='/novalidate-cert'; - //$flags.='/readonly'; - //$flags.='/debug'; - - $connectstringserver = '{'.$this->host.':993'.$flags.'}'; - - return $connectstringserver; - } - - /** - * Action executed by scheduler - * CAN BE A CRON TASK. In such a case, paramerts come from the schedule job setup field 'Parameters' - * - * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) - */ - public function doCollect() - { - global $user; - - $nberror = 0; - - $arrayofcollectors = $this->fetchAll($user, 1); - - // Loop on each collector - foreach($arrayofcollectors as $emailcollector) - { - $result = $emailcollector->doCollectOneCollector(); - dol_syslog("doCollect result = ".$result." for emailcollector->id = ".$emailcollector->id); - - $this->error.='EmailCollector ID '.$emailcollector->id.':'.$emailcollector->error.'
    '; - if (! empty($emailcollector->errors)) $this->error.=join('
    ', $emailcollector->errors); - $this->output.='EmailCollector ID '.$emailcollector->id.': '.$emailcollector->lastresult.'
    '; - } - - return $nberror; - } - - /** - * overwitePropertiesOfObject - * - * @return int 0=OK, Nb of error if error - */ - - /** - * overwitePropertiesOfObject - * - * @param object $object Current object - * @param string $actionparam Action parameters - * @param string $messagetext Body - * @param string $subject Subject - * @return int 0=OK, Nb of error if error - */ - private function overwritePropertiesOfObject(&$object, $actionparam, $messagetext, $subject) - { - $errorforthisaction = 0; - - // Overwrite values with values extracted from source email - // $this->actionparam = 'opportunity_status=123;abc=REGEX:BODY:....' - $arrayvaluetouse = dolExplodeIntoArray($actionparam, ';', '='); - foreach($arrayvaluetouse as $propertytooverwrite => $valueforproperty) - { - $tmpclass=''; $tmpproperty=''; - $tmparray=explode('.', $propertytooverwrite); - if (count($tmparray) == 2) - { - $tmpclass=$tmparray[0]; - $tmpproperty=$tmparray[1]; - } - else - { - $tmpproperty=$tmparray[0]; - } - if ($tmpclass && ($tmpclass != $object->element)) continue; // Property is for another type of object - - if (property_exists($object, $tmpproperty)) - { - $sourcestring=''; - $sourcefield=''; - $regexstring=''; - //$transformationstring=''; - $regforregex=array(); - if (preg_match('/^REGEX:([a-zA-Z0-9]+):(.*):([^:])$/', $valueforproperty, $regforregex)) - { - $sourcefield=$regforregex[1]; - $regexstring=$regforregex[2]; - //$transofrmationstring=$regforregex[3]; - } - elseif (preg_match('/^REGEX:([a-zA-Z0-9]+):(.*)$/', $valueforproperty, $regforregex)) - { - $sourcefield=$regforregex[1]; - $regexstring=$regforregex[2]; - } - - if (! empty($sourcefield) && ! empty($regexstring)) - { - if (strtolower($sourcefield) == 'body') $sourcestring=$messagetext; - elseif (strtolower($sourcefield) == 'subject') $sourcestring=$subject; - - $regforval=array(); - if (preg_match('/'.preg_quote($regexstring, '/').'/', $sourcestring, $regforval)) - { - // Overwrite param $tmpproperty - $object->$tmpproperty = $regforval[1]; - } - else - { - // Nothing can be done for this param - } - } - elseif (preg_match('/^VALUE:(.*)$/', $valueforproperty, $reg)) - { - $object->$tmpproperty = $reg[1]; - } - else - { - $errorforthisaction++; - $this->error = 'Bad syntax for description of action parameters: '.$actionparam; - $this->errors[] = $this->error; - } - } - } - - return $errorforthisaction; - } - - /** - * Execute collect for current collector loaded previously with fetch. - * - * @return int <0 if KO, >0 if OK - */ - public function doCollectOneCollector() - { - global $conf, $langs, $user; - - //$conf->global->SYSLOG_FILE = 'DOL_DATA_ROOT/dolibarr_mydedicatedlofile.log'; - - require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; - - dol_syslog("EmailCollector::doCollectOneCollector start", LOG_DEBUG); - - $langs->loadLangs(array("project", "companies", "mails", "errors")); - - $error = 0; - $this->output = ''; - $this->error=''; - - $now = dol_now(); - - if (empty($this->host)) - { - $this->error=$langs->trans('ErrorFieldRequired', 'EMailHost'); - return -1; - } - if (empty($this->login)) - { - $this->error=$langs->trans('ErrorFieldRequired', 'Login'); - return -1; - } - if (empty($this->source_directory)) - { - $this->error=$langs->trans('ErrorFieldRequired', 'MailboxSourceDirectory'); - return -1; - } - if (! function_exists('imap_open')) - { - $this->error='IMAP function not enabled on your PHP'; - return -2; - } - - $this->fetchFilters(); - $this->fetchActions(); - - $sourcedir = $this->source_directory; - $targetdir = ($this->target_directory ? $this->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag' - - $connectstringserver = $this->getConnectStringIMAP(); - $connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); - $connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); - - $connection = imap_open($connectstringsource, $this->login, $this->password); - if (! $connection) - { - $this->error = 'Failed to open IMAP connection '.$connectstringsource; - return -3; - } - - //$search='ALL'; - $search='UNDELETED'; - $searchfilterdoltrackid=0; - $searchfilternodoltrackid=0; - foreach($this->filters as $rule) - { - if (empty($rule['status'])) continue; - - if ($rule['type'] == 'to') $search.=($search?' ':'').'TO "'.str_replace('"', '', $rule['rulevalue']).'"'; - if ($rule['type'] == 'bcc') $search.=($search?' ':'').'BCC'; - if ($rule['type'] == 'cc') $search.=($search?' ':'').'CC'; - if ($rule['type'] == 'from') $search.=($search?' ':'').'FROM "'.str_replace('"', '', $rule['rulevalue']).'"'; - if ($rule['type'] == 'subject') $search.=($search?' ':'').'SUBJECT "'.str_replace('"', '', $rule['rulevalue']).'"'; - if ($rule['type'] == 'body') $search.=($search?' ':'').'BODY "'.str_replace('"', '', $rule['rulevalue']).'"'; - if ($rule['type'] == 'seen') $search.=($search?' ':'').'SEEN'; - if ($rule['type'] == 'unseen') $search.=($search?' ':'').'UNSEEN'; - if ($rule['type'] == 'withtrackingid') $searchfilterdoltrackid++; - if ($rule['type'] == 'withouttrackingid') $searchfilternodoltrackid++; - } - - if (empty($targetdir)) // Use last date as filter if there is no targetdir defined. - { - $fromdate=0; - if ($this->datelastresult && $this->codelastresult == 'OK') $fromdate = $this->datelastresult; - if ($fromdate > 0) $search.=($search?' ':'').'SINCE '.dol_print_date($fromdate - 1,'dayhourrfc'); - } - dol_syslog("IMAP search string = ".$search); - //var_dump($search); - - $nbemailprocessed=0; - $nbemailok=0; - $nbactiondone=0; - - // Scan IMAP inbox - $arrayofemail= imap_search($connection, $search); - //var_dump($arrayofemail);exit; - - // Loop on each email found - if (! empty($arrayofemail) && count($arrayofemail) > 0) - { - foreach($arrayofemail as $imapemail) - { - if ($nbemailprocessed > 100) break; // Do not process more than 100 email per launch - - $header = imap_fetchheader($connection, $imapemail, 0); - $matches=array(); - preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $header, $matches); - $headers = array_combine($matches[1], $matches[2]); - //var_dump($headers); - - // $conf->global->MAIL_PREFIX_FOR_EMAIL_ID must be defined - $host=dol_getprefix('email'); - - // If there is a filter on trackid - //var_dump($host);exit; - if ($searchfilterdoltrackid > 0) - { - //if (empty($headers['X-Dolibarr-TRACKID'])) continue; - if (empty($headers['References']) || ! preg_match('/@'.preg_quote($host,'/').'/', $headers['References'])) - { - $nbemailprocessed++; - continue; - } - } - if ($searchfilternodoltrackid > 0) - { - if (! empty($headers['References']) && preg_match('/@'.preg_quote($host,'/').'/', $headers['References'])) - { - $nbemailprocessed++; - continue; - } - //if (! empty($headers['X-Dolibarr-TRACKID']) continue; - } - - $thirdpartystatic=new Societe($this->db); - $contactstatic=new Contact($this->db); - $projectstatic=new Project($this->db); - - $nbactiondoneforemail = 0; - $errorforemail = 0; - $errorforactions = 0; - $thirdpartyfoundby = ''; - $contactfoundby = ''; - $projectfoundby = ''; - - $this->db->begin(); - - //$message = imap_body($connection, $imapemail, 0); - $overview = imap_fetch_overview($connection, $imapemail, 0); - $structure = imap_fetchstructure($connection, $imapemail, 0); - - $partplain = $parthtml = -1; - // Loop to get part html and plain - /* - 0 multipart/mixed - 1 multipart/alternative - 1.1 text/plain - 1.2 text/html - 2 message/rfc822 - 2 multipart/mixed - 2.1 multipart/alternative - 2.1.1 text/plain - 2.1.2 text/html - 2.2 message/rfc822 - 2.2 multipart/alternative - 2.2.1 text/plain - 2.2.2 text/html - */ - /** - * create_part_array - * - * @param Object $structure Structure - * @param string $prefix prefix - * @return array Array with number and object - */ - function createPartArray($structure, $prefix="") - { - //print_r($structure); - if (count($structure->parts) > 0) { // There some sub parts - foreach ($structure->parts as $count => $part) { - add_part_to_array($part, $prefix.($count+1), $part_array); - } - }else{ // Email does not have a seperate mime attachment for text - $part_array[] = array('part_number' => $prefix.'1', 'part_object' => $obj); - } - return $part_array; - } - - /** - * Sub function for createPartArray(). Only called by createPartArray() and itself. - * - * @param Object $obj Structure - * @param string $partno Part no - * @param array $part_array array - * @return void - */ - function addPartToArray($obj, $partno, &$part_array) - { - $part_array[] = array('part_number' => $partno, 'part_object' => $obj); - if ($obj->type == 2) { // Check to see if the part is an attached email message, as in the RFC-822 type - //print_r($obj); - if (array_key_exists('parts',$obj)) { // Check to see if the email has parts - foreach ($obj->parts as $count => $part) { - // Iterate here again to compensate for the broken way that imap_fetchbody() handles attachments - if (count($part->parts) > 0) { - foreach ($part->parts as $count2 => $part2) { - addPartToArray($part2, $partno.".".($count2+1), $part_array); - } - }else{ // Attached email does not have a seperate mime attachment for text - $part_array[] = array('part_number' => $partno.'.'.($count+1), 'part_object' => $obj); - } - } - }else{ // Not sure if this is possible - $part_array[] = array('part_number' => $partno.'.1', 'part_object' => $obj); - } - }else{ // If there are more sub-parts, expand them out. - if (array_key_exists('parts',$obj)) { - foreach ($obj->parts as $count => $p) { - addPartToArray($p, $partno.".".($count+1), $part_array); - } - } - } - } - - $result = createPartArray($structure, ''); - //var_dump($result);exit; - foreach($result as $part) - { - if ($part['part_object']->subtype == 'HTML') $parthtml=$part['part_number']; - if ($part['part_object']->subtype == 'PLAIN') $partplain=$part['part_number']; - } - - /* OLD CODE to get parthtml and partplain - if (count($structure->parts) > 0) { // There some sub parts - foreach($structure->parts as $key => $part) - { - if ($part->subtype == 'HTML') $parthtml=($key+1); // For example: $parthtml = 1 or 2 - if ($part->subtype == 'PLAIN') $partplain=($key+1); - if ($part->subtype == 'ALTERNATIVE') - { - if (count($part->parts) > 0) - { - foreach($part->parts as $key2 => $part2) - { - if ($part2->subtype == 'HTML') $parthtml=($key+1).'.'.($key2+1); // For example: $parthtml = 1.1 or 1.2 - if ($part2->subtype == 'PLAIN') $partplain=($key+1).'.'.($key2+1); - } - } - else - { - $partplain=($key+1).'.1'; - } - } - } - } - else - { - $partplain=1; - }*/ - - //var_dump($structure); - //var_dump($parthtml);var_dump($partplain); - - $messagetext = imap_fetchbody($connection, $imapemail, ($parthtml != '-1' ? $parthtml : ($partplain != '-1' ? $partplain : 0)), FT_PEEK); - - //var_dump($overview); - //var_dump($header); - //var_dump($message); - //var_dump($structure->parts[0]->parts); - //var_dump($messagetext);exit; - $fromstring=$overview[0]->from; - $sender=$overview[0]->sender; - $to=$overview[0]->to; - $sendtocc=$overview[0]->cc; - $sendtobcc=$overview[0]->bcc; - $date=$overview[0]->udate; - $msgid=str_replace(array('<','>'), '', $overview[0]->message_id); - $subject=$overview[0]->subject; - //var_dump($msgid);exit; - - $reg=array(); - if (preg_match('/^(.*)<(.*)>$/', $fromstring, $reg)) - { - $from=$reg[2]; - $fromtext=$reg[1]; - } - else - { - $from = $fromstring; - $fromtext=''; - } - $fk_element_id = 0; $fk_element_type = ''; - - $contactid = 0; $thirdpartyid = 0; $projectid = 0; - - // Analyze TrackId in field References - // For example: References: <1542377954.SMTPs-dolibarr-thi649@8f6014fde11ec6cdec9a822234fc557e> - $trackid = ''; - $reg=array(); - if (! empty($headers['References']) && preg_match('/dolibarr-([a-z]+)([0-9]+)@'.preg_quote($host,'/').'/', $headers['References'], $reg)) - { - $trackid = $reg[1].$reg[2]; - - $objectid = 0; - $objectemail = null; - if ($reg[0] == 'inv') - { - $objectid = $reg[1]; - $objectemail = new Facture($this->db); - } - if ($reg[0] == 'proj') - { - $objectid = $reg[1]; - $objectemail = new Project($this->db); - } - if ($reg[0] == 'con') - { - $objectid = $reg[1]; - $objectemail = new Contact($this->db); - } - if ($reg[0] == 'thi') - { - $objectid = $reg[1]; - $objectemail = new Societe($this->db); - } - if ($reg[0] == 'use') - { - $objectid = $reg[1]; - $objectemail = new User($this->db); - } - - if (is_object($objectemail)) - { - $result = $objectemail->fetch($objectid); - if ($result > 0) - { - $fk_element_id = $objectemail->id; - $fk_element_type = $objectemail->element; - // Fix fk_element_type - if ($fk_element_type == 'facture') $fk_element_type = 'invoice'; - - $thirdpartyid = $objectemail->fk_soc; - $contactid = $objectemail->fk_socpeople; - $projectid = isset($objectemail->fk_project)?$objectemail->fk_project:$objectemail->fk_projet; - } - } - - // Project - if ($projectid > 0) - { - $result = $projectstatic->fetch($projectid); - if ($result <= 0) $projectstatic->id = 0; - else - { - $projectid = $projectstatic->id; - $projectfoundby = 'trackid ('.$trackid.')'; - if (empty($contactid)) $contactid = $projectstatic->fk_contact; - if (empty($thirdpartyid)) $thirdpartyid = $projectstatic->fk_soc; - } - } - // Contact - if ($contactid > 0) - { - $result = $contactstatic->fetch($contactid); - if ($result <= 0) $contactstatic->id = 0; - else - { - $contactid = $contactstatic->id; - $contactfoundby = 'trackid ('.$trackid.')'; - if (empty($thirdpartyid)) $thirdpartyid = $contactstatic->fk_soc; - } - } - // Thirdparty - if ($thirdpartyid > 0) - { - $result = $thirdpartystatic->fetch($thirdpartyid); - if ($result <= 0) $thirdpartystatic->id = 0; - else - { - $thirdpartyid = $thirdpartystatic->id; - $thirdpartyfoundby = 'trackid ('.$trackid.')'; - } - } - } - - if (empty($contactid)) // Try to find contact using email - { - $result = $contactstatic->fetch(0, null, '', $from); - if ($result > 0) - { - $contactid = $contactstatic->id; - $contactfoundby = 'email of contact ('.$from.')'; - if ($contactstatic->fk_soc > 0) - { - $result = $thirdpartystatic->fetch($contactstatic->fk_soc); - if ($result > 0) - { - $thirdpartyid = $thirdpartystatic->id; - $thirdpartyfoundby = 'email of contact ('.$from.')'; - } - } - } - } - - if (empty($thirdpartyid)) // Try to find thirdparty using email - { - $result = $thirdpartystatic->fetch(0, '', '', '', '', '', '', '', '', '', $from); - if ($result > 0) $thirdpartyfoundby = 'email ('.$from.')'; - } - - - - // Do operations - foreach($this->actions as $operation) - { - if ($errorforactions) break; - if (empty($operation['status'])) continue; - - // Make Operation - dol_syslog("Execute action ".$operation['type']." actionparam=".$operation['actionparam'].' thirdpartystatic->id='.$thirdpartystatic->id.' contactstatic->id='.$contactstatic->id.' projectstatic->id='.$projectstatic->id); - - // Search and create thirdparty - if ($operation['type'] == 'loadthirdparty' || $operation['type'] == 'loadandcreatethirdparty') - { - if (empty($operation['actionparam'])) - { - $errorforactions++; - $this->error = "Action loadthirdparty or loadandcreatethirdparty has empty parameter. Must be 'VALUE:xxx' or 'REGEX:(body|subject):regex' to define how to extract data"; - $this->errors[] = $this->error; - } - else - { - $actionparam = $operation['actionparam']; - $nametouseforthirdparty=''; - - // $this->actionparam = 'VALUE:aaa' or 'REGEX:BODY:....' - $arrayvaluetouse = dolExplodeIntoArray($actionparam, ';', '='); - foreach($arrayvaluetouse as $propertytooverwrite => $valueforproperty) - { - $sourcestring=''; - $sourcefield=''; - $regexstring=''; - $regforregex=array(); - - if (preg_match('/^REGEX:([a-zA-Z0-9]+):(.*)$/', $valueforproperty, $regforregex)) - { - $sourcefield=$regforregex[1]; - $regexstring=$regforregex[2]; - } - - if (! empty($sourcefield) && ! empty($regexstring)) - { - if (strtolower($sourcefield) == 'body') $sourcestring=$messagetext; - elseif (strtolower($sourcefield) == 'subject') $sourcestring=$subject; - - $regforval=array(); - if (preg_match('/'.$regexstring.'/', $sourcestring, $regforval)) // Do not use preg_quote here, string is already a regex syntax, for example string is 'Name:\s([^\s]*)' - { - // Overwrite param $tmpproperty - $nametouseforthirdparty = $regforval[1]; - } - else - { - // Nothing can be done for this param - } - //var_dump($sourcestring); var_dump($regexstring);var_dump($nametouseforthirdparty);exit; - } - elseif (preg_match('/^VALUE:(.*)$/', $valueforproperty, $reg)) - { - $nametouseforthirdparty = $reg[1]; - } - else - { - $errorforactions++; - $this->error = 'Bad syntax for description of action parameters: '.$actionparam; - $this->errors[] = $this->error; - break; - } - } - - if (! $errorforactions && $nametouseforthirdparty) - { - $result = $thirdpartystatic->fetch(0, $nametouseforthirdparty); - if ($result < 0) - { - $errorforactions++; - $this->error = 'Error when getting thirdparty with name '.$nametouseforthirdparty.' (may be 2 record exists with same name ?)'; - $this->errors[] = $this->error; - break; - } - elseif ($result == 0) - { - if ($operation['type'] == 'loadandcreatethirdparty') - { - dol_syslog("Third party with name ".$nametouseforthirdparty." was not found. We try to create it."); - - // Create thirdparty - $thirdpartystatic->name = $nametouseforthirdparty; - if ($fromtext != $nametouseforthirdparty) $thirdpartystatic->name_alias = $fromtext; - $thirdpartystatic->email = $from; - - // Overwrite values with values extracted from source email - $errorforthisaction = $this->overwritePropertiesOfObject($thirdpartystatic, $operation['actionparam'], $messagetext, $subject); - - if ($errorforthisaction) - { - $errorforactions++; - } - else - { - $result = $thirdpartystatic->create($user); - if ($result <= 0) - { - $errorforactions++; - $this->error = $thirdpartystatic->error; - $this->errors = $thirdpartystatic->errors; - } - } - } - else - { - dol_syslog("Third party with name ".$nametouseforthirdparty." was not found"); - } - } - } - } - } - // Create event - elseif ($operation['type'] == 'recordevent') - { - $actioncode = 'EMAIL_IN'; - - // Insert record of emails sent - $actioncomm = new ActionComm($this->db); - - $actioncomm->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...) - $actioncomm->code = 'AC_'.$actioncode; - $actioncomm->label = $langs->trans("ActionAC_EMAIL_IN").' - '.$langs->trans("MailFrom").' '.$from; - $actioncomm->note = $messagetext; - $actioncomm->fk_project = $projectstatic->id; - $actioncomm->datep = $date; - $actioncomm->datef = $date; - $actioncomm->percentage = -1; // Not applicable - $actioncomm->socid = $thirdpartystatic->id; - $actioncomm->contactid = $contactstatic->id; - $actioncomm->authorid = $user->id; // User saving action - $actioncomm->userownerid = $user->id; // Owner of action - // Fields when action is an email (content should be added into note) - $actioncomm->email_msgid = $msgid; - $actioncomm->email_from = $fromstring; - $actioncomm->email_sender= $sender; - $actioncomm->email_to = $to; - $actioncomm->email_tocc = $sendtocc; - $actioncomm->email_tobcc = $sendtobcc; - $actioncomm->email_subject = $subject; - $actioncomm->errors_to = ''; - - if (! in_array($fk_element_type, array('societe','contact','project','user'))) - { - $actioncomm->fk_element = $fk_element_id; - $actioncomm->elementtype = $fk_element_type; - } - - //$actioncomm->extraparams = $extraparams; - - // Overwrite values with values extracted from source email - $errorforthisaction = $this->overwritePropertiesOfObject($actioncommn, $operation['actionparam'], $messagetext, $subject); - - if ($errorforthisaction) - { - $errorforactions++; - } - else - { - $result = $actioncomm->create($user); - if ($result <= 0) - { - $errorforactions++; - $this->errors = $actioncomm->errors; - } - } - } - // Create event - elseif ($operation['type'] == 'project') - { - $note_private = $langs->trans("ProjectCreatedByEmailCollector", $msgid); - $projecttocreate = new Project($this->db); - if ($thirdpartystatic->id > 0) - { - $projecttocreate->socid = $thirdpartystatic->id; - if ($thirdpartyfoundby) $note_private .= ' - Third party found from '.$thirdpartyfoundby; - } - if ($contactstatic->id > 0) - { - $projecttocreate->contact_id = $contactstatic->id; - if ($contactfoundby) $note_private .= ' - Contact/address found from '.$contactfoundby; - } - - $id_opp_status = dol_getIdFromCode($this->db, 'PROSP', 'c_lead_status', 'code', 'rowid'); - $percent_opp_status = dol_getIdFromCode($this->db, 'PROSP', 'c_lead_status', 'code', 'percent'); - - $projecttocreate->title = $subject; - $projecttocreate->date_start = $now; - $projecttocreate->date_end = ''; - $projecttocreate->opp_status = $id_opp_status; - $projecttocreate->opp_percent = $percent_opp_status; - $projecttocreate->description = ($note_private?$note_private."\n":'').dol_string_nohtmltag($messagetext, 2); - $projecttocreate->note_private = $note_private; - $projecttocreate->entity = $conf->entity; - - // Get next project Ref - $defaultref=''; - $modele = empty($conf->global->PROJECT_ADDON)?'mod_project_simple':$conf->global->PROJECT_ADDON; - - // Search template files - $file=''; $classname=''; $filefound=0; $reldir=''; - $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); - foreach($dirmodels as $reldir) - { - $file=dol_buildpath($reldir."core/modules/project/".$modele.'.php',0); - if (file_exists($file)) - { - $filefound=1; - $classname = $modele; - break; - } - } - - if ($filefound) - { - $result=dol_include_once($reldir."core/modules/project/".$modele.'.php'); - $modProject = new $classname; - - $defaultref = $modProject->getNextValue(($thirdpartystatic->id > 0 ? $thirdpartystatic : null), $projecttocreate); - } - - $projecttocreate->ref = $defaultref; - - // Overwrite values with values extracted from source email - $errorforthisaction = $this->overwritePropertiesOfObject($projecttocreate, $operation['actionparam'], $messagetext, $subject); - - if ($errorforthisaction) - { - $errorforactions++; - } - else - { - if (is_numeric($projecttocreate->ref) && $projecttocreate->ref <= 0) - { - $errorforactions++; - $this->error = 'Failed to create project: Can\'t get a valid value for project Ref'; - } - else - { - // Create project - $result = $projecttocreate->create($user); - if ($result <= 0) - { - $errorforactions++; - $this->error = 'Failed to create project: '.$langs->trans($projecttocreate->error); - $this->errors = $projecttocreate->errors; - } - } - } - } - - if (! $errorforactions) - { - $nbactiondoneforemail++; - } - } - - // Error for email or not ? - if (! $errorforactions) - { - if ($targetdir) - { - dol_syslog("EmailCollector::doCollectOneCollector move message ".$imapemail." to ".$connectstringtarget, LOG_DEBUG); - $res = imap_mail_move($connection, $imapemail, $targetdir, 0); - if ($res == false) { - $errorforemail++; - $this->error = imap_last_error(); - $this->errors[] = $this->error; - dol_syslog(imap_last_error()); - } - } - else - { - dol_syslog("EmailCollector::doCollectOneCollector message ".$imapemail." to ".$connectstringtarget." was set to read", LOG_DEBUG); - } - } - else - { - $errorforemail++; - } - - if (! $errorforemail) - { - $nbactiondone += $nbactiondoneforemail; - $nbemailok++; - - $this->db->commit(); - } - else - { - $error++; - - $this->db->rollback(); - } - - $nbemailprocessed++; - - unset($objectemail); - unset($projectstatic); - unset($thirdpartystatic); - unset($contactstatic); - } - - $output=$langs->trans('XEmailsDoneYActionsDone', $nbemailprocessed, $nbemailok, $nbactiondone); - } - else - { - $output=$langs->trans('NoNewEmailToProcess'); - } - - imap_expunge($connection); // To validate any move - - imap_close($connection); - - $this->datelastresult = $now; - $this->lastresult = $output; - - if (! empty($this->errors)) $this->lastresult.= " - ".join(" - ", $this->errors); - $this->codelastresult = ($error ? 'KO' : 'OK'); - $this->update($user); - - dol_syslog("EmailCollector::doCollectOneCollector end", LOG_DEBUG); - - return $error?-1:1; - } + $linkstart = ''; + $linkend=''; + + $result .= $linkstart; + if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1); + if ($withpicto != 2) $result.= $this->ref; + $result .= $linkend; + //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); + + global $action,$hookmanager; + $hookmanager->initHooks(array('emailcollectordao')); + $parameters=array('id'=>$this->id, 'getnomurl'=>$result); + $reshook=$hookmanager->executeHooks('getNomUrl',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if ($reshook > 0) $result = $hookmanager->resPrint; + else $result .= $hookmanager->resPrint; + + return $result; + } + + /** + * Return label of the status + * + * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto + * @return string Label of status + */ + public function getLibStatut($mode=0) + { + return $this->LibStatut($this->status, $mode); + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return the status + * + * @param int $status Id status + * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto + * @return string Label of status + */ + public function LibStatut($status, $mode=0) + { + // phpcs:enable + if (empty($this->labelstatus)) + { + global $langs; + //$langs->load("mymodule"); + $this->labelstatus[1] = $langs->trans('Enabled'); + $this->labelstatus[0] = $langs->trans('Disabled'); + } + + if ($mode == 0) + { + return $this->labelstatus[$status]; + } + elseif ($mode == 1) + { + return $this->labelstatus[$status]; + } + elseif ($mode == 2) + { + if ($status == 1) return img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + } + elseif ($mode == 3) + { + if ($status == 1) return img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle'); + elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle'); + } + elseif ($mode == 4) + { + if ($status == 1) return img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + elseif ($status == 0) return img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle').' '.$this->labelstatus[$status]; + } + elseif ($mode == 5) + { + if ($status == 1) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle'); + elseif ($status == 0) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle'); + } + elseif ($mode == 6) + { + if ($status == 1) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut4', '', false, 0, 0, '', 'valignmiddle'); + elseif ($status == 0) return $this->labelstatus[$status].' '.img_picto($this->labelstatus[$status],'statut5', '', false, 0, 0, '', 'valignmiddle'); + } + } + + /** + * Charge les informations d'ordre info dans l'objet commande + * + * @param int $id Id of order + * @return void + */ + public function info($id) + { + $sql = 'SELECT rowid, date_creation as datec, tms as datem,'; + $sql.= ' fk_user_creat, fk_user_modif'; + $sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t'; + $sql.= ' WHERE t.rowid = '.$id; + $result=$this->db->query($sql); + if ($result) + { + if ($this->db->num_rows($result)) + { + $obj = $this->db->fetch_object($result); + $this->id = $obj->rowid; + if ($obj->fk_user_author) + { + $cuser = new User($this->db); + $cuser->fetch($obj->fk_user_author); + $this->user_creation = $cuser; + } + + if ($obj->fk_user_valid) + { + $vuser = new User($this->db); + $vuser->fetch($obj->fk_user_valid); + $this->user_validation = $vuser; + } + + if ($obj->fk_user_cloture) + { + $cluser = new User($this->db); + $cluser->fetch($obj->fk_user_cloture); + $this->user_cloture = $cluser; + } + + $this->date_creation = $this->db->jdate($obj->datec); + $this->date_modification = $this->db->jdate($obj->datem); + $this->date_validation = $this->db->jdate($obj->datev); + } + + $this->db->free($result); + } + else + { + dol_print_error($this->db); + } + } + + /** + * Initialise object with example values + * Id must be 0 if object instance is a specimen + * + * @return void + */ + public function initAsSpecimen() + { + $this->initAsSpecimenCommon(); + } + + /** + * Fetch filters + * + * @return int <0 if KO, >0 if OK + */ + public function fetchFilters() + { + $this->filters = array(); + + $sql = 'SELECT rowid, type, rulevalue, status'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'emailcollector_emailcollectorfilter'; + $sql.= ' WHERE fk_emailcollector = '.$this->id; + //$sql.= ' ORDER BY position'; + + $resql = $this->db->query($sql); + if ($resql) + { + $num=$this->db->num_rows($resql); + $i = 0; + while($i < $num) + { + $obj=$this->db->fetch_object($resql); + $this->filters[$obj->rowid]=array('id'=>$obj->rowid, 'type'=>$obj->type, 'rulevalue'=>$obj->rulevalue, 'status'=>$obj->status); + $i++; + } + $this->db->free($resql); + } + else dol_print_error($this->db); + + return 1; + } + + /** + * Fetch actions + * + * @return int <0 if KO, >0 if OK + */ + public function fetchActions() + { + $this->actions = array(); + + $sql = 'SELECT rowid, type, actionparam, status'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'emailcollector_emailcollectoraction'; + $sql.= ' WHERE fk_emailcollector = '.$this->id; + $sql.= ' ORDER BY position'; + + $resql = $this->db->query($sql); + if ($resql) + { + $num=$this->db->num_rows($resql); + $i = 0; + while($i < $num) + { + $obj=$this->db->fetch_object($resql); + $this->actions[$obj->rowid]=array('id'=>$obj->rowid, 'type'=>$obj->type, 'actionparam'=>$obj->actionparam, 'status'=>$obj->status); + $i++; + } + $this->db->free($resql); + } + else dol_print_error($this->db); + } + + + /** + * Return the connectstring to use with IMAP connection function + * + * @return string + */ + function getConnectStringIMAP() + { + // Connect to IMAP + $flags ='/service=imap'; // IMAP + $flags.='/ssl'; // '/tls' + $flags.='/novalidate-cert'; + //$flags.='/readonly'; + //$flags.='/debug'; + + $connectstringserver = '{'.$this->host.':993'.$flags.'}'; + + return $connectstringserver; + } + + /** + * Action executed by scheduler + * CAN BE A CRON TASK. In such a case, paramerts come from the schedule job setup field 'Parameters' + * + * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) + */ + public function doCollect() + { + global $user; + + $nberror = 0; + + $arrayofcollectors = $this->fetchAll($user, 1); + + // Loop on each collector + foreach($arrayofcollectors as $emailcollector) + { + $result = $emailcollector->doCollectOneCollector(); + dol_syslog("doCollect result = ".$result." for emailcollector->id = ".$emailcollector->id); + + $this->error.='EmailCollector ID '.$emailcollector->id.':'.$emailcollector->error.'
    '; + if (! empty($emailcollector->errors)) $this->error.=join('
    ', $emailcollector->errors); + $this->output.='EmailCollector ID '.$emailcollector->id.': '.$emailcollector->lastresult.'
    '; + } + + return $nberror; + } + + /** + * overwitePropertiesOfObject + * + * @return int 0=OK, Nb of error if error + */ + + /** + * overwitePropertiesOfObject + * + * @param object $object Current object + * @param string $actionparam Action parameters + * @param string $messagetext Body + * @param string $subject Subject + * @return int 0=OK, Nb of error if error + */ + private function overwritePropertiesOfObject(&$object, $actionparam, $messagetext, $subject) + { + $errorforthisaction = 0; + + // Overwrite values with values extracted from source email + // $this->actionparam = 'opportunity_status=123;abc=REGEX:BODY:....' + $arrayvaluetouse = dolExplodeIntoArray($actionparam, ';', '='); + foreach($arrayvaluetouse as $propertytooverwrite => $valueforproperty) + { + $tmpclass=''; $tmpproperty=''; + $tmparray=explode('.', $propertytooverwrite); + if (count($tmparray) == 2) + { + $tmpclass=$tmparray[0]; + $tmpproperty=$tmparray[1]; + } + else + { + $tmpproperty=$tmparray[0]; + } + if ($tmpclass && ($tmpclass != $object->element)) continue; // Property is for another type of object + + if (property_exists($object, $tmpproperty)) + { + $sourcestring=''; + $sourcefield=''; + $regexstring=''; + //$transformationstring=''; + $regforregex=array(); + if (preg_match('/^REGEX:([a-zA-Z0-9]+):(.*):([^:])$/', $valueforproperty, $regforregex)) + { + $sourcefield=$regforregex[1]; + $regexstring=$regforregex[2]; + //$transofrmationstring=$regforregex[3]; + } + elseif (preg_match('/^REGEX:([a-zA-Z0-9]+):(.*)$/', $valueforproperty, $regforregex)) + { + $sourcefield=$regforregex[1]; + $regexstring=$regforregex[2]; + } + + if (! empty($sourcefield) && ! empty($regexstring)) + { + if (strtolower($sourcefield) == 'body') $sourcestring=$messagetext; + elseif (strtolower($sourcefield) == 'subject') $sourcestring=$subject; + + $regforval=array(); + if (preg_match('/'.preg_quote($regexstring, '/').'/', $sourcestring, $regforval)) + { + // Overwrite param $tmpproperty + $object->$tmpproperty = $regforval[1]; + } + else + { + // Nothing can be done for this param + } + } + elseif (preg_match('/^VALUE:(.*)$/', $valueforproperty, $reg)) + { + $object->$tmpproperty = $reg[1]; + } + else + { + $errorforthisaction++; + $this->error = 'Bad syntax for description of action parameters: '.$actionparam; + $this->errors[] = $this->error; + } + } + } + + return $errorforthisaction; + } + + /** + * Execute collect for current collector loaded previously with fetch. + * + * @return int <0 if KO, >0 if OK + */ + public function doCollectOneCollector() + { + global $conf, $langs, $user; + + //$conf->global->SYSLOG_FILE = 'DOL_DATA_ROOT/dolibarr_mydedicatedlofile.log'; + + require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; + + dol_syslog("EmailCollector::doCollectOneCollector start", LOG_DEBUG); + + $langs->loadLangs(array("project", "companies", "mails", "errors")); + + $error = 0; + $this->output = ''; + $this->error=''; + + $now = dol_now(); + + if (empty($this->host)) + { + $this->error=$langs->trans('ErrorFieldRequired', 'EMailHost'); + return -1; + } + if (empty($this->login)) + { + $this->error=$langs->trans('ErrorFieldRequired', 'Login'); + return -1; + } + if (empty($this->source_directory)) + { + $this->error=$langs->trans('ErrorFieldRequired', 'MailboxSourceDirectory'); + return -1; + } + if (! function_exists('imap_open')) + { + $this->error='IMAP function not enabled on your PHP'; + return -2; + } + + $this->fetchFilters(); + $this->fetchActions(); + + $sourcedir = $this->source_directory; + $targetdir = ($this->target_directory ? $this->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag' + + $connectstringserver = $this->getConnectStringIMAP(); + $connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); + $connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); + + $connection = imap_open($connectstringsource, $this->login, $this->password); + if (! $connection) + { + $this->error = 'Failed to open IMAP connection '.$connectstringsource; + return -3; + } + + //$search='ALL'; + $search='UNDELETED'; + $searchfilterdoltrackid=0; + $searchfilternodoltrackid=0; + foreach($this->filters as $rule) + { + if (empty($rule['status'])) continue; + + if ($rule['type'] == 'to') $search.=($search?' ':'').'TO "'.str_replace('"', '', $rule['rulevalue']).'"'; + if ($rule['type'] == 'bcc') $search.=($search?' ':'').'BCC'; + if ($rule['type'] == 'cc') $search.=($search?' ':'').'CC'; + if ($rule['type'] == 'from') $search.=($search?' ':'').'FROM "'.str_replace('"', '', $rule['rulevalue']).'"'; + if ($rule['type'] == 'subject') $search.=($search?' ':'').'SUBJECT "'.str_replace('"', '', $rule['rulevalue']).'"'; + if ($rule['type'] == 'body') $search.=($search?' ':'').'BODY "'.str_replace('"', '', $rule['rulevalue']).'"'; + if ($rule['type'] == 'seen') $search.=($search?' ':'').'SEEN'; + if ($rule['type'] == 'unseen') $search.=($search?' ':'').'UNSEEN'; + if ($rule['type'] == 'withtrackingid') $searchfilterdoltrackid++; + if ($rule['type'] == 'withouttrackingid') $searchfilternodoltrackid++; + } + + if (empty($targetdir)) // Use last date as filter if there is no targetdir defined. + { + $fromdate=0; + if ($this->datelastresult && $this->codelastresult == 'OK') $fromdate = $this->datelastresult; + if ($fromdate > 0) $search.=($search?' ':'').'SINCE '.dol_print_date($fromdate - 1,'dayhourrfc'); + } + dol_syslog("IMAP search string = ".$search); + //var_dump($search); + + $nbemailprocessed=0; + $nbemailok=0; + $nbactiondone=0; + + // Scan IMAP inbox + $arrayofemail= imap_search($connection, $search); + //var_dump($arrayofemail);exit; + + // Loop on each email found + if (! empty($arrayofemail) && count($arrayofemail) > 0) + { + foreach($arrayofemail as $imapemail) + { + if ($nbemailprocessed > 100) break; // Do not process more than 100 email per launch + + $header = imap_fetchheader($connection, $imapemail, 0); + $matches=array(); + preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $header, $matches); + $headers = array_combine($matches[1], $matches[2]); + //var_dump($headers); + + // $conf->global->MAIL_PREFIX_FOR_EMAIL_ID must be defined + $host=dol_getprefix('email'); + + // If there is a filter on trackid + //var_dump($host);exit; + if ($searchfilterdoltrackid > 0) + { + //if (empty($headers['X-Dolibarr-TRACKID'])) continue; + if (empty($headers['References']) || ! preg_match('/@'.preg_quote($host,'/').'/', $headers['References'])) + { + $nbemailprocessed++; + continue; + } + } + if ($searchfilternodoltrackid > 0) + { + if (! empty($headers['References']) && preg_match('/@'.preg_quote($host,'/').'/', $headers['References'])) + { + $nbemailprocessed++; + continue; + } + //if (! empty($headers['X-Dolibarr-TRACKID']) continue; + } + + $thirdpartystatic=new Societe($this->db); + $contactstatic=new Contact($this->db); + $projectstatic=new Project($this->db); + + $nbactiondoneforemail = 0; + $errorforemail = 0; + $errorforactions = 0; + $thirdpartyfoundby = ''; + $contactfoundby = ''; + $projectfoundby = ''; + + $this->db->begin(); + + //$message = imap_body($connection, $imapemail, 0); + $overview = imap_fetch_overview($connection, $imapemail, 0); + $structure = imap_fetchstructure($connection, $imapemail, 0); + + $partplain = $parthtml = -1; + // Loop to get part html and plain + /* + 0 multipart/mixed + 1 multipart/alternative + 1.1 text/plain + 1.2 text/html + 2 message/rfc822 + 2 multipart/mixed + 2.1 multipart/alternative + 2.1.1 text/plain + 2.1.2 text/html + 2.2 message/rfc822 + 2.2 multipart/alternative + 2.2.1 text/plain + 2.2.2 text/html + */ + /** + * create_part_array + * + * @param Object $structure Structure + * @param string $prefix prefix + * @return array Array with number and object + */ + function createPartArray($structure, $prefix="") + { + //print_r($structure); + if (count($structure->parts) > 0) { // There some sub parts + foreach ($structure->parts as $count => $part) { + add_part_to_array($part, $prefix.($count+1), $part_array); + } + }else{ // Email does not have a seperate mime attachment for text + $part_array[] = array('part_number' => $prefix.'1', 'part_object' => $obj); + } + return $part_array; + } + + /** + * Sub function for createPartArray(). Only called by createPartArray() and itself. + * + * @param Object $obj Structure + * @param string $partno Part no + * @param array $part_array array + * @return void + */ + function addPartToArray($obj, $partno, &$part_array) + { + $part_array[] = array('part_number' => $partno, 'part_object' => $obj); + if ($obj->type == 2) { // Check to see if the part is an attached email message, as in the RFC-822 type + //print_r($obj); + if (array_key_exists('parts',$obj)) { // Check to see if the email has parts + foreach ($obj->parts as $count => $part) { + // Iterate here again to compensate for the broken way that imap_fetchbody() handles attachments + if (count($part->parts) > 0) { + foreach ($part->parts as $count2 => $part2) { + addPartToArray($part2, $partno.".".($count2+1), $part_array); + } + }else{ // Attached email does not have a seperate mime attachment for text + $part_array[] = array('part_number' => $partno.'.'.($count+1), 'part_object' => $obj); + } + } + }else{ // Not sure if this is possible + $part_array[] = array('part_number' => $partno.'.1', 'part_object' => $obj); + } + }else{ // If there are more sub-parts, expand them out. + if (array_key_exists('parts',$obj)) { + foreach ($obj->parts as $count => $p) { + addPartToArray($p, $partno.".".($count+1), $part_array); + } + } + } + } + + $result = createPartArray($structure, ''); + //var_dump($result);exit; + foreach($result as $part) + { + if ($part['part_object']->subtype == 'HTML') $parthtml=$part['part_number']; + if ($part['part_object']->subtype == 'PLAIN') $partplain=$part['part_number']; + } + + /* OLD CODE to get parthtml and partplain + if (count($structure->parts) > 0) { // There some sub parts + foreach($structure->parts as $key => $part) + { + if ($part->subtype == 'HTML') $parthtml=($key+1); // For example: $parthtml = 1 or 2 + if ($part->subtype == 'PLAIN') $partplain=($key+1); + if ($part->subtype == 'ALTERNATIVE') + { + if (count($part->parts) > 0) + { + foreach($part->parts as $key2 => $part2) + { + if ($part2->subtype == 'HTML') $parthtml=($key+1).'.'.($key2+1); // For example: $parthtml = 1.1 or 1.2 + if ($part2->subtype == 'PLAIN') $partplain=($key+1).'.'.($key2+1); + } + } + else + { + $partplain=($key+1).'.1'; + } + } + } + } + else + { + $partplain=1; + }*/ + + //var_dump($structure); + //var_dump($parthtml);var_dump($partplain); + + $messagetext = imap_fetchbody($connection, $imapemail, ($parthtml != '-1' ? $parthtml : ($partplain != '-1' ? $partplain : 0)), FT_PEEK); + + //var_dump($overview); + //var_dump($header); + //var_dump($message); + //var_dump($structure->parts[0]->parts); + //var_dump($messagetext);exit; + $fromstring=$overview[0]->from; + $sender=$overview[0]->sender; + $to=$overview[0]->to; + $sendtocc=$overview[0]->cc; + $sendtobcc=$overview[0]->bcc; + $date=$overview[0]->udate; + $msgid=str_replace(array('<','>'), '', $overview[0]->message_id); + $subject=$overview[0]->subject; + //var_dump($msgid);exit; + + $reg=array(); + if (preg_match('/^(.*)<(.*)>$/', $fromstring, $reg)) + { + $from=$reg[2]; + $fromtext=$reg[1]; + } + else + { + $from = $fromstring; + $fromtext=''; + } + $fk_element_id = 0; $fk_element_type = ''; + + $contactid = 0; $thirdpartyid = 0; $projectid = 0; + + // Analyze TrackId in field References + // For example: References: <1542377954.SMTPs-dolibarr-thi649@8f6014fde11ec6cdec9a822234fc557e> + $trackid = ''; + $reg=array(); + if (! empty($headers['References']) && preg_match('/dolibarr-([a-z]+)([0-9]+)@'.preg_quote($host,'/').'/', $headers['References'], $reg)) + { + $trackid = $reg[1].$reg[2]; + + $objectid = 0; + $objectemail = null; + if ($reg[0] == 'inv') + { + $objectid = $reg[1]; + $objectemail = new Facture($this->db); + } + if ($reg[0] == 'proj') + { + $objectid = $reg[1]; + $objectemail = new Project($this->db); + } + if ($reg[0] == 'con') + { + $objectid = $reg[1]; + $objectemail = new Contact($this->db); + } + if ($reg[0] == 'thi') + { + $objectid = $reg[1]; + $objectemail = new Societe($this->db); + } + if ($reg[0] == 'use') + { + $objectid = $reg[1]; + $objectemail = new User($this->db); + } + + if (is_object($objectemail)) + { + $result = $objectemail->fetch($objectid); + if ($result > 0) + { + $fk_element_id = $objectemail->id; + $fk_element_type = $objectemail->element; + // Fix fk_element_type + if ($fk_element_type == 'facture') $fk_element_type = 'invoice'; + + $thirdpartyid = $objectemail->fk_soc; + $contactid = $objectemail->fk_socpeople; + $projectid = isset($objectemail->fk_project)?$objectemail->fk_project:$objectemail->fk_projet; + } + } + + // Project + if ($projectid > 0) + { + $result = $projectstatic->fetch($projectid); + if ($result <= 0) $projectstatic->id = 0; + else + { + $projectid = $projectstatic->id; + $projectfoundby = 'trackid ('.$trackid.')'; + if (empty($contactid)) $contactid = $projectstatic->fk_contact; + if (empty($thirdpartyid)) $thirdpartyid = $projectstatic->fk_soc; + } + } + // Contact + if ($contactid > 0) + { + $result = $contactstatic->fetch($contactid); + if ($result <= 0) $contactstatic->id = 0; + else + { + $contactid = $contactstatic->id; + $contactfoundby = 'trackid ('.$trackid.')'; + if (empty($thirdpartyid)) $thirdpartyid = $contactstatic->fk_soc; + } + } + // Thirdparty + if ($thirdpartyid > 0) + { + $result = $thirdpartystatic->fetch($thirdpartyid); + if ($result <= 0) $thirdpartystatic->id = 0; + else + { + $thirdpartyid = $thirdpartystatic->id; + $thirdpartyfoundby = 'trackid ('.$trackid.')'; + } + } + } + + if (empty($contactid)) // Try to find contact using email + { + $result = $contactstatic->fetch(0, null, '', $from); + if ($result > 0) + { + $contactid = $contactstatic->id; + $contactfoundby = 'email of contact ('.$from.')'; + if ($contactstatic->fk_soc > 0) + { + $result = $thirdpartystatic->fetch($contactstatic->fk_soc); + if ($result > 0) + { + $thirdpartyid = $thirdpartystatic->id; + $thirdpartyfoundby = 'email of contact ('.$from.')'; + } + } + } + } + + if (empty($thirdpartyid)) // Try to find thirdparty using email + { + $result = $thirdpartystatic->fetch(0, '', '', '', '', '', '', '', '', '', $from); + if ($result > 0) $thirdpartyfoundby = 'email ('.$from.')'; + } + + + + // Do operations + foreach($this->actions as $operation) + { + if ($errorforactions) break; + if (empty($operation['status'])) continue; + + // Make Operation + dol_syslog("Execute action ".$operation['type']." actionparam=".$operation['actionparam'].' thirdpartystatic->id='.$thirdpartystatic->id.' contactstatic->id='.$contactstatic->id.' projectstatic->id='.$projectstatic->id); + + // Search and create thirdparty + if ($operation['type'] == 'loadthirdparty' || $operation['type'] == 'loadandcreatethirdparty') + { + if (empty($operation['actionparam'])) + { + $errorforactions++; + $this->error = "Action loadthirdparty or loadandcreatethirdparty has empty parameter. Must be 'VALUE:xxx' or 'REGEX:(body|subject):regex' to define how to extract data"; + $this->errors[] = $this->error; + } + else + { + $actionparam = $operation['actionparam']; + $nametouseforthirdparty=''; + + // $this->actionparam = 'VALUE:aaa' or 'REGEX:BODY:....' + $arrayvaluetouse = dolExplodeIntoArray($actionparam, ';', '='); + foreach($arrayvaluetouse as $propertytooverwrite => $valueforproperty) + { + $sourcestring=''; + $sourcefield=''; + $regexstring=''; + $regforregex=array(); + + if (preg_match('/^REGEX:([a-zA-Z0-9]+):(.*)$/', $valueforproperty, $regforregex)) + { + $sourcefield=$regforregex[1]; + $regexstring=$regforregex[2]; + } + + if (! empty($sourcefield) && ! empty($regexstring)) + { + if (strtolower($sourcefield) == 'body') $sourcestring=$messagetext; + elseif (strtolower($sourcefield) == 'subject') $sourcestring=$subject; + + $regforval=array(); + if (preg_match('/'.$regexstring.'/', $sourcestring, $regforval)) // Do not use preg_quote here, string is already a regex syntax, for example string is 'Name:\s([^\s]*)' + { + // Overwrite param $tmpproperty + $nametouseforthirdparty = $regforval[1]; + } + else + { + // Nothing can be done for this param + } + //var_dump($sourcestring); var_dump($regexstring);var_dump($nametouseforthirdparty);exit; + } + elseif (preg_match('/^VALUE:(.*)$/', $valueforproperty, $reg)) + { + $nametouseforthirdparty = $reg[1]; + } + else + { + $errorforactions++; + $this->error = 'Bad syntax for description of action parameters: '.$actionparam; + $this->errors[] = $this->error; + break; + } + } + + if (! $errorforactions && $nametouseforthirdparty) + { + $result = $thirdpartystatic->fetch(0, $nametouseforthirdparty); + if ($result < 0) + { + $errorforactions++; + $this->error = 'Error when getting thirdparty with name '.$nametouseforthirdparty.' (may be 2 record exists with same name ?)'; + $this->errors[] = $this->error; + break; + } + elseif ($result == 0) + { + if ($operation['type'] == 'loadandcreatethirdparty') + { + dol_syslog("Third party with name ".$nametouseforthirdparty." was not found. We try to create it."); + + // Create thirdparty + $thirdpartystatic->name = $nametouseforthirdparty; + if ($fromtext != $nametouseforthirdparty) $thirdpartystatic->name_alias = $fromtext; + $thirdpartystatic->email = $from; + + // Overwrite values with values extracted from source email + $errorforthisaction = $this->overwritePropertiesOfObject($thirdpartystatic, $operation['actionparam'], $messagetext, $subject); + + if ($errorforthisaction) + { + $errorforactions++; + } + else + { + $result = $thirdpartystatic->create($user); + if ($result <= 0) + { + $errorforactions++; + $this->error = $thirdpartystatic->error; + $this->errors = $thirdpartystatic->errors; + } + } + } + else + { + dol_syslog("Third party with name ".$nametouseforthirdparty." was not found"); + } + } + } + } + } + // Create event + elseif ($operation['type'] == 'recordevent') + { + $actioncode = 'EMAIL_IN'; + + // Insert record of emails sent + $actioncomm = new ActionComm($this->db); + + $actioncomm->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...) + $actioncomm->code = 'AC_'.$actioncode; + $actioncomm->label = $langs->trans("ActionAC_EMAIL_IN").' - '.$langs->trans("MailFrom").' '.$from; + $actioncomm->note = $messagetext; + $actioncomm->fk_project = $projectstatic->id; + $actioncomm->datep = $date; + $actioncomm->datef = $date; + $actioncomm->percentage = -1; // Not applicable + $actioncomm->socid = $thirdpartystatic->id; + $actioncomm->contactid = $contactstatic->id; + $actioncomm->authorid = $user->id; // User saving action + $actioncomm->userownerid = $user->id; // Owner of action + // Fields when action is an email (content should be added into note) + $actioncomm->email_msgid = $msgid; + $actioncomm->email_from = $fromstring; + $actioncomm->email_sender= $sender; + $actioncomm->email_to = $to; + $actioncomm->email_tocc = $sendtocc; + $actioncomm->email_tobcc = $sendtobcc; + $actioncomm->email_subject = $subject; + $actioncomm->errors_to = ''; + + if (! in_array($fk_element_type, array('societe','contact','project','user'))) + { + $actioncomm->fk_element = $fk_element_id; + $actioncomm->elementtype = $fk_element_type; + } + + //$actioncomm->extraparams = $extraparams; + + // Overwrite values with values extracted from source email + $errorforthisaction = $this->overwritePropertiesOfObject($actioncommn, $operation['actionparam'], $messagetext, $subject); + + if ($errorforthisaction) + { + $errorforactions++; + } + else + { + $result = $actioncomm->create($user); + if ($result <= 0) + { + $errorforactions++; + $this->errors = $actioncomm->errors; + } + } + } + // Create event + elseif ($operation['type'] == 'project') + { + $note_private = $langs->trans("ProjectCreatedByEmailCollector", $msgid); + $projecttocreate = new Project($this->db); + if ($thirdpartystatic->id > 0) + { + $projecttocreate->socid = $thirdpartystatic->id; + if ($thirdpartyfoundby) $note_private .= ' - Third party found from '.$thirdpartyfoundby; + } + if ($contactstatic->id > 0) + { + $projecttocreate->contact_id = $contactstatic->id; + if ($contactfoundby) $note_private .= ' - Contact/address found from '.$contactfoundby; + } + + $id_opp_status = dol_getIdFromCode($this->db, 'PROSP', 'c_lead_status', 'code', 'rowid'); + $percent_opp_status = dol_getIdFromCode($this->db, 'PROSP', 'c_lead_status', 'code', 'percent'); + + $projecttocreate->title = $subject; + $projecttocreate->date_start = $now; + $projecttocreate->date_end = ''; + $projecttocreate->opp_status = $id_opp_status; + $projecttocreate->opp_percent = $percent_opp_status; + $projecttocreate->description = dol_concatdesc(dol_concatdesc($note_private, dolGetFirstLineOfText(dol_string_nohtmltag($messagetext, 2), 3)), '...'.$langs->transnoentities("SeePrivateNote").'...'); + $projecttocreate->note_private = dol_concatdesc($note_private, dol_string_nohtmltag($messagetext, 2)); + $projecttocreate->entity = $conf->entity; + + // Get next project Ref + $defaultref=''; + $modele = empty($conf->global->PROJECT_ADDON)?'mod_project_simple':$conf->global->PROJECT_ADDON; + + // Search template files + $file=''; $classname=''; $filefound=0; $reldir=''; + $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + $file=dol_buildpath($reldir."core/modules/project/".$modele.'.php',0); + if (file_exists($file)) + { + $filefound=1; + $classname = $modele; + break; + } + } + + if ($filefound) + { + $result=dol_include_once($reldir."core/modules/project/".$modele.'.php'); + $modProject = new $classname; + + $defaultref = $modProject->getNextValue(($thirdpartystatic->id > 0 ? $thirdpartystatic : null), $projecttocreate); + } + + $projecttocreate->ref = $defaultref; + + // Overwrite values with values extracted from source email + $errorforthisaction = $this->overwritePropertiesOfObject($projecttocreate, $operation['actionparam'], $messagetext, $subject); + + if ($errorforthisaction) + { + $errorforactions++; + } + else + { + if (is_numeric($projecttocreate->ref) && $projecttocreate->ref <= 0) + { + $errorforactions++; + $this->error = 'Failed to create project: Can\'t get a valid value for project Ref'; + } + else + { + // Create project + $result = $projecttocreate->create($user); + if ($result <= 0) + { + $errorforactions++; + $this->error = 'Failed to create project: '.$langs->trans($projecttocreate->error); + $this->errors = $projecttocreate->errors; + } + } + } + } + + if (! $errorforactions) + { + $nbactiondoneforemail++; + } + } + + // Error for email or not ? + if (! $errorforactions) + { + if ($targetdir) + { + dol_syslog("EmailCollector::doCollectOneCollector move message ".$imapemail." to ".$connectstringtarget, LOG_DEBUG); + $res = imap_mail_move($connection, $imapemail, $targetdir, 0); + if ($res == false) { + $errorforemail++; + $this->error = imap_last_error(); + $this->errors[] = $this->error; + dol_syslog(imap_last_error()); + } + } + else + { + dol_syslog("EmailCollector::doCollectOneCollector message ".$imapemail." to ".$connectstringtarget." was set to read", LOG_DEBUG); + } + } + else + { + $errorforemail++; + } + + if (! $errorforemail) + { + $nbactiondone += $nbactiondoneforemail; + $nbemailok++; + + $this->db->commit(); + } + else + { + $error++; + + $this->db->rollback(); + } + + $nbemailprocessed++; + + unset($objectemail); + unset($projectstatic); + unset($thirdpartystatic); + unset($contactstatic); + } + + $output=$langs->trans('XEmailsDoneYActionsDone', $nbemailprocessed, $nbemailok, $nbactiondone); + } + else + { + $output=$langs->trans('NoNewEmailToProcess'); + } + + imap_expunge($connection); // To validate any move + + imap_close($connection); + + $this->datelastresult = $now; + $this->lastresult = $output; + + if (! empty($this->errors)) $this->lastresult.= " - ".join(" - ", $this->errors); + $this->codelastresult = ($error ? 'KO' : 'OK'); + $this->update($user); + + dol_syslog("EmailCollector::doCollectOneCollector end", LOG_DEBUG); + + return $error?-1:1; + } } From 13e7d18291a5723eebb56f2704f06215e0f6b784 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Fri, 18 Jan 2019 22:25:51 +0100 Subject: [PATCH 247/307] Update stats.class.php Fix div/0 warnings --- htdocs/core/class/stats.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/stats.class.php b/htdocs/core/class/stats.class.php index 1a58e14796a..90986e7b6da 100644 --- a/htdocs/core/class/stats.class.php +++ b/htdocs/core/class/stats.class.php @@ -384,16 +384,16 @@ abstract class Stats $row = $this->db->fetch_object($resql); $result[$i]['year'] = $row->year; $result[$i]['nb'] = $row->nb; - if($i>0 && $row->nb) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; + if($i>0 && $row->nb>0) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; $result[$i]['total'] = $row->total; - if($i>0 && $row->total) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; + if($i>0 && $row->total>0) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; $result[$i]['avg'] = $row->avg; - if($i>0 && $row->avg) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; + if($i>0 && $row->avg>0) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; // For some $sql only if (isset($row->weighted)) { $result[$i]['weighted'] = $row->weighted; - if($i>0 && $row->weighted) $result[$i-1]['avg_weighted'] = ($result[$i-1]['weighted'] - $row->weighted) / $row->weighted * 100; + if($i>0 && $row->weighted>0) $result[$i-1]['avg_weighted'] = ($result[$i-1]['weighted'] - $row->weighted) / $row->weighted * 100; } $i++; } From 191900d258997a15b52fe6dcb55dfe3f5b47b128 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Fri, 18 Jan 2019 22:25:51 +0100 Subject: [PATCH 248/307] Update stats.class.php Fix div/0 warnings --- htdocs/core/class/stats.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/stats.class.php b/htdocs/core/class/stats.class.php index dfb070aa5b9..1433085a36a 100644 --- a/htdocs/core/class/stats.class.php +++ b/htdocs/core/class/stats.class.php @@ -384,16 +384,16 @@ abstract class Stats $row = $this->db->fetch_object($resql); $result[$i]['year'] = $row->year; $result[$i]['nb'] = $row->nb; - if($i>0 && $row->nb) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; + if($i>0 && $row->nb>0) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; $result[$i]['total'] = $row->total; - if($i>0 && $row->total) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; + if($i>0 && $row->total>0) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; $result[$i]['avg'] = $row->avg; - if($i>0 && $row->avg) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; + if($i>0 && $row->avg>0) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; // For some $sql only if (isset($row->weighted)) { $result[$i]['weighted'] = $row->weighted; - if($i>0 && $row->weighted) $result[$i-1]['avg_weighted'] = ($result[$i-1]['weighted'] - $row->weighted) / $row->weighted * 100; + if($i>0 && $row->weighted>0) $result[$i-1]['avg_weighted'] = ($result[$i-1]['weighted'] - $row->weighted) / $row->weighted * 100; } $i++; } From aaa61254accee51bd28b6ed4aa2cc9a83e6585c3 Mon Sep 17 00:00:00 2001 From: wdammak <26695620+wdammak@users.noreply.github.com> Date: Fri, 18 Jan 2019 22:25:51 +0100 Subject: [PATCH 249/307] Update stats.class.php Fix div/0 warnings --- htdocs/core/class/stats.class.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/class/stats.class.php b/htdocs/core/class/stats.class.php index dfb070aa5b9..1433085a36a 100644 --- a/htdocs/core/class/stats.class.php +++ b/htdocs/core/class/stats.class.php @@ -384,16 +384,16 @@ abstract class Stats $row = $this->db->fetch_object($resql); $result[$i]['year'] = $row->year; $result[$i]['nb'] = $row->nb; - if($i>0 && $row->nb) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; + if($i>0 && $row->nb>0) $result[$i-1]['nb_diff'] = ($result[$i-1]['nb'] - $row->nb) / $row->nb * 100; $result[$i]['total'] = $row->total; - if($i>0 && $row->total) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; + if($i>0 && $row->total>0) $result[$i-1]['total_diff'] = ($result[$i-1]['total'] - $row->total) / $row->total * 100; $result[$i]['avg'] = $row->avg; - if($i>0 && $row->avg) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; + if($i>0 && $row->avg>0) $result[$i-1]['avg_diff'] = ($result[$i-1]['avg'] - $row->avg) / $row->avg * 100; // For some $sql only if (isset($row->weighted)) { $result[$i]['weighted'] = $row->weighted; - if($i>0 && $row->weighted) $result[$i-1]['avg_weighted'] = ($result[$i-1]['weighted'] - $row->weighted) / $row->weighted * 100; + if($i>0 && $row->weighted>0) $result[$i-1]['avg_weighted'] = ($result[$i-1]['weighted'] - $row->weighted) / $row->weighted * 100; } $i++; } From b3cbbc1b11e61d59469e08404ca5758f48db1d46 Mon Sep 17 00:00:00 2001 From: ptibogxiv Date: Sat, 19 Jan 2019 11:18:07 +0100 Subject: [PATCH 250/307] FIX lang for dolistore in module.php --- htdocs/admin/dolistore/class/dolistore.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/dolistore/class/dolistore.class.php b/htdocs/admin/dolistore/class/dolistore.class.php index 859b9140f86..553ce2e54e0 100644 --- a/htdocs/admin/dolistore/class/dolistore.class.php +++ b/htdocs/admin/dolistore/class/dolistore.class.php @@ -65,7 +65,7 @@ class Dolistore $langtmp = explode('_', $langs->defaultlang); $lang = $langtmp[0]; - $lang_array = array('en'=>1, 'fr'=>2, 'es'=>3, 'it'=>4, 'de'=>5); // Into table ps_lang of Prestashop - 1 + $lang_array = array('en'=>0, 'fr'=>1, 'es'=>2, 'it'=>3, 'de'=>4); // Into table ps_lang of Prestashop - 1 if (! in_array($lang, array_keys($lang_array))) $lang = 'en'; $this->lang = $lang_array[$lang]; } From 2bbaae88d6d7e2635984ab6eb2a84c1d61984a3d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 12:46:38 +0100 Subject: [PATCH 251/307] Fix standardize 'createfromclone' param when cloning --- htdocs/accountancy/class/bookkeeping.class.php | 6 +++++- htdocs/asset/class/asset.class.php | 2 ++ htdocs/comm/action/class/actioncomm.class.php | 5 ++--- htdocs/comm/mailing/class/mailing.class.php | 4 +--- htdocs/comm/propal/class/propal.class.php | 3 +-- htdocs/commande/class/commande.class.php | 3 +-- htdocs/compta/bank/class/bankcateg.class.php | 3 +-- htdocs/compta/facture/class/facture.class.php | 5 +---- htdocs/compta/facture/class/paymentterm.class.php | 5 ++--- htdocs/compta/sociales/class/cchargesociales.class.php | 5 ++++- .../sociales/class/paymentsocialcontribution.class.php | 5 ++--- htdocs/contrat/class/contrat.class.php | 5 ++--- htdocs/core/actions_addupdatedelete.inc.php | 2 +- htdocs/core/class/ctyperesource.class.php | 5 ++++- htdocs/core/class/emailsenderprofile.class.php | 2 ++ htdocs/cron/class/cronjob.class.php | 6 ++---- htdocs/don/class/paymentdonation.class.php | 7 ++----- htdocs/ecm/class/ecmfiles.class.php | 3 +++ htdocs/emailcollector/class/emailcollector.class.php | 2 ++ htdocs/emailcollector/class/emailcollectoraction.class.php | 2 ++ htdocs/emailcollector/class/emailcollectorfilter.class.php | 2 ++ htdocs/expensereport/class/expensereport.class.php | 3 +-- htdocs/expensereport/class/paymentexpensereport.class.php | 7 ++----- htdocs/fichinter/class/fichinter.class.php | 3 +-- htdocs/fourn/class/fournisseur.commande.class.php | 3 +-- htdocs/fourn/class/fournisseur.commande.dispatch.class.php | 4 +++- htdocs/fourn/class/fournisseur.facture.class.php | 5 +---- htdocs/modulebuilder/template/class/myobject.class.php | 2 ++ htdocs/product/class/productbatch.class.php | 4 +--- htdocs/product/class/productcustomerprice.class.php | 4 ++-- htdocs/product/class/propalmergepdfproduct.class.php | 4 +++- htdocs/product/inventory/class/inventory.class.php | 2 ++ htdocs/product/stock/class/productlot.class.php | 3 +++ htdocs/product/stock/class/productstockentrepot.class.php | 3 +++ htdocs/societe/class/companypaymentmode.class.php | 2 ++ htdocs/societe/class/societeaccount.class.php | 2 ++ htdocs/supplier_proposal/class/supplier_proposal.class.php | 3 +++ htdocs/ticket/class/ticket.class.php | 3 +++ htdocs/website/class/website.class.php | 3 +++ htdocs/website/class/websitepage.class.php | 2 ++ 40 files changed, 84 insertions(+), 60 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 70934e01ed6..9db16a1ee75 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -1418,6 +1418,7 @@ class BookKeeping extends CommonObject dol_syslog(__METHOD__, LOG_DEBUG); global $user; + $error = 0; $object = new BookKeeping($this->db); @@ -1432,6 +1433,7 @@ class BookKeeping extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options @@ -1441,6 +1443,8 @@ class BookKeeping extends CommonObject dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); } + unset($object->context['createfromclone']); + // End if (! $error) { $this->db->commit(); @@ -1449,7 +1453,7 @@ class BookKeeping extends CommonObject } else { $this->db->rollback(); - return - 1; + return -1; } } diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index 22e24703bc3..335a9f6e9d1 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -238,6 +238,8 @@ class Asset extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index aef77513e7b..2d0ba61fff9 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -490,8 +490,6 @@ class ActionComm extends CommonObject { global $db, $user, $langs, $conf, $hookmanager; - $this->context['createfromclone']='createfromclone'; - $error=0; $now=dol_now(); @@ -524,7 +522,8 @@ class ActionComm extends CommonObject } // Create clone - $result=$this->create($fuser); + $this->context['createfromclone']='createfromclone'; + $result=$this->create($fuser); if ($result < 0) $error++; if (! $error) diff --git a/htdocs/comm/mailing/class/mailing.class.php b/htdocs/comm/mailing/class/mailing.class.php index 11708c3b4ca..b807ea23334 100644 --- a/htdocs/comm/mailing/class/mailing.class.php +++ b/htdocs/comm/mailing/class/mailing.class.php @@ -279,8 +279,6 @@ class Mailing extends CommonObject $object=new Mailing($this->db); - $object->context['createfromclone']='createfromclone'; - $this->db->begin(); // Load source object @@ -314,6 +312,7 @@ class Mailing extends CommonObject } // Create clone + $object->context['createfromclone']='createfromclone'; $result=$object->create($user); // Other options @@ -345,7 +344,6 @@ class Mailing extends CommonObject $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) { diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 196d6f50451..2c5c2cfd5ce 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1222,8 +1222,6 @@ class Propal extends CommonObject dol_include_once('/projet/class/project.class.php'); - $this->context['createfromclone']='createfromclone'; - $error=0; $now=dol_now(); @@ -1284,6 +1282,7 @@ class Propal extends CommonObject if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $clonedObj->ref_client = ''; // Create clone + $this->context['createfromclone']='createfromclone'; $result=$clonedObj->create($user); if ($result < 0) $error++; else diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 5b3f8006345..d8aed383905 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -1066,8 +1066,6 @@ class Commande extends CommonOrder $error=0; - $this->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // get lines so they will be clone @@ -1108,6 +1106,7 @@ class Commande extends CommonOrder $this->ref_client = ''; // Create clone + $this->context['createfromclone'] = 'createfromclone'; $result=$this->create($user); if ($result < 0) $error++; diff --git a/htdocs/compta/bank/class/bankcateg.class.php b/htdocs/compta/bank/class/bankcateg.class.php index 9efdf3932ff..dc9c1d242e8 100644 --- a/htdocs/compta/bank/class/bankcateg.class.php +++ b/htdocs/compta/bank/class/bankcateg.class.php @@ -280,8 +280,6 @@ class BankCateg // extends CommonObject $object = new BankCateg($this->db); - $object->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -290,6 +288,7 @@ class BankCateg // extends CommonObject $object->statut = 0; // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index f980266226c..2fb31440e56 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -951,8 +951,6 @@ class Facture extends CommonInvoice $error=0; - $this->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // get extrafields so they will be clone @@ -962,8 +960,6 @@ class Facture extends CommonInvoice // Load source object $objFrom = clone $this; - - // Change socid if needed if (! empty($socid) && $socid != $this->socid) { @@ -1008,6 +1004,7 @@ class Facture extends CommonInvoice } // Create clone + $this->context['createfromclone'] = 'createfromclone'; $result=$this->create($user); if ($result < 0) $error++; else { diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index e7ea4779d10..55a3e40b55f 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -404,8 +404,6 @@ class PaymentTerm // extends CommonObject $object=new PaymentTerm($this->db); - $object->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -417,6 +415,7 @@ class PaymentTerm // extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result=$object->create($user); // Other options @@ -430,7 +429,7 @@ class PaymentTerm // extends CommonObject //{ //} - unset($this->context['createfromclone']); + unset($object->context['createfromclone']); // End if (! $error) diff --git a/htdocs/compta/sociales/class/cchargesociales.class.php b/htdocs/compta/sociales/class/cchargesociales.class.php index 710bea7def2..9e13ffcd8a5 100644 --- a/htdocs/compta/sociales/class/cchargesociales.class.php +++ b/htdocs/compta/sociales/class/cchargesociales.class.php @@ -369,6 +369,7 @@ class Cchargesociales // ... // Create clone + $this->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options @@ -378,6 +379,8 @@ class Cchargesociales dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); } + unset($this->context['createfromclone']); + // End if (!$error) { $this->db->commit(); @@ -386,7 +389,7 @@ class Cchargesociales } else { $this->db->rollback(); - return - 1; + return -1; } } diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index d3c265150d4..74ddce68230 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -459,8 +459,6 @@ class PaymentSocialContribution extends CommonObject $object=new PaymentSocialContribution($this->db); - $object->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -472,6 +470,7 @@ class PaymentSocialContribution extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result=$object->create($user); // Other options @@ -488,7 +487,7 @@ class PaymentSocialContribution extends CommonObject } - unset($this->context['createfromclone']); + unset($object->context['createfromclone']); // End if (! $error) diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index c543e8a0720..5929ec034d1 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -2388,8 +2388,6 @@ class Contrat extends CommonObject dol_include_once('/projet/class/project.class.php'); - $this->context['createfromclone'] = 'createfromclone'; - $error = 0; $this->fetch($this->id); @@ -2440,6 +2438,7 @@ class Contrat extends CommonObject } // Create clone + $clonedObj->context['createfromclone'] = 'createfromclone'; $result = $clonedObj->create($user); if ($result < 0) { $error ++; @@ -2479,7 +2478,7 @@ class Contrat extends CommonObject } } - unset($this->context['createfromclone']); + unset($clonedObj->context['createfromclone']); // End if (! $error) { diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php index b8b4237cc93..63fc671d797 100644 --- a/htdocs/core/actions_addupdatedelete.inc.php +++ b/htdocs/core/actions_addupdatedelete.inc.php @@ -202,7 +202,7 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ! empty($permissiontoadd) { if ($object->id > 0) { - // Because createFromClone modifies the object, we must clone it so that we can restore it later + // Because createFromClone modifies the object, we must clone it so that we can restore it later if error $orig = clone $object; $result=$object->createFromClone($user, $object->id); diff --git a/htdocs/core/class/ctyperesource.class.php b/htdocs/core/class/ctyperesource.class.php index f4e74128747..95c642772e2 100644 --- a/htdocs/core/class/ctyperesource.class.php +++ b/htdocs/core/class/ctyperesource.class.php @@ -427,6 +427,7 @@ class Ctyperesource // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options @@ -436,6 +437,8 @@ class Ctyperesource dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); @@ -444,7 +447,7 @@ class Ctyperesource } else { $this->db->rollback(); - return - 1; + return -1; } } diff --git a/htdocs/core/class/emailsenderprofile.class.php b/htdocs/core/class/emailsenderprofile.class.php index b30f79f0bba..3a1fba460c4 100644 --- a/htdocs/core/class/emailsenderprofile.class.php +++ b/htdocs/core/class/emailsenderprofile.class.php @@ -207,6 +207,8 @@ class EmailSenderProfile extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 6873bff157e..f619befab0d 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -757,8 +757,6 @@ class Cronjob extends CommonObject $object=new Cronjob($this->db); - $object->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -770,6 +768,7 @@ class Cronjob extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result=$object->create($user); // Other options @@ -782,10 +781,9 @@ class Cronjob extends CommonObject //if (! $error) //{ - //} - unset($this->context['createfromclone']); + unset($object->context['createfromclone']); // End if (! $error) diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index b0e3a80b082..662b165ddf4 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -419,8 +419,6 @@ class PaymentDonation extends CommonObject $object=new PaymentDonation($this->db); - $object->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -432,6 +430,7 @@ class PaymentDonation extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result=$object->create($user); // Other options @@ -444,11 +443,9 @@ class PaymentDonation extends CommonObject if (! $error) { - - } - unset($this->context['createfromclone']); + unset($object->context['createfromclone']); // End if (! $error) diff --git a/htdocs/ecm/class/ecmfiles.class.php b/htdocs/ecm/class/ecmfiles.class.php index 781833169dd..efc5af1310c 100644 --- a/htdocs/ecm/class/ecmfiles.class.php +++ b/htdocs/ecm/class/ecmfiles.class.php @@ -732,6 +732,7 @@ class EcmFiles extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options @@ -741,6 +742,8 @@ class EcmFiles extends CommonObject dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index c86b575855a..e00adfad724 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -274,6 +274,8 @@ class EmailCollector extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/emailcollector/class/emailcollectoraction.class.php b/htdocs/emailcollector/class/emailcollectoraction.class.php index 620795870a0..ccf811f7607 100644 --- a/htdocs/emailcollector/class/emailcollectoraction.class.php +++ b/htdocs/emailcollector/class/emailcollectoraction.class.php @@ -247,6 +247,8 @@ class EmailCollectorAction extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/emailcollector/class/emailcollectorfilter.class.php b/htdocs/emailcollector/class/emailcollectorfilter.class.php index ddf68ce9512..cafde3a820c 100644 --- a/htdocs/emailcollector/class/emailcollectorfilter.class.php +++ b/htdocs/emailcollector/class/emailcollectorfilter.class.php @@ -222,6 +222,8 @@ class EmailCollectorFilter extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index dc2516822e7..a8e5f80244c 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -315,8 +315,6 @@ class ExpenseReport extends CommonObject if (empty($fk_user_author)) $fk_user_author = $user->id; - $this->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // get extrafields so they will be clone @@ -339,6 +337,7 @@ class ExpenseReport extends CommonObject $this->date_validation = ''; // Create clone + $this->context['createfromclone'] = 'createfromclone'; $result=$this->create($user); if ($result < 0) $error++; diff --git a/htdocs/expensereport/class/paymentexpensereport.class.php b/htdocs/expensereport/class/paymentexpensereport.class.php index 605affed253..3055984e6c7 100644 --- a/htdocs/expensereport/class/paymentexpensereport.class.php +++ b/htdocs/expensereport/class/paymentexpensereport.class.php @@ -421,8 +421,6 @@ class PaymentExpenseReport extends CommonObject $object=new PaymentExpenseReport($this->db); - $object->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -434,6 +432,7 @@ class PaymentExpenseReport extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result=$object->create($user); // Other options @@ -446,11 +445,9 @@ class PaymentExpenseReport extends CommonObject if (! $error) { - - } - unset($this->context['createfromclone']); + unset($object->context['createfromclone']); // End if (! $error) diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 32643b77811..e20d8e1da1a 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -1118,8 +1118,6 @@ class Fichinter extends CommonObject $error=0; - $this->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // get extrafields so they will be clone @@ -1158,6 +1156,7 @@ class Fichinter extends CommonObject $this->ref_client = ''; // Create clone + $this->context['createfromclone'] = 'createfromclone'; $result=$this->create($user); if ($result < 0) $error++; diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 9f17e9afdf2..38fa5b53699 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1417,8 +1417,6 @@ class CommandeFournisseur extends CommonOrder $error=0; - $this->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -1439,6 +1437,7 @@ class CommandeFournisseur extends CommonOrder $this->date_approve2 = ''; // Create clone + $this->context['createfromclone'] = 'createfromclone'; $result=$this->create($user); if ($result < 0) $error++; diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index c7b5d00c797..c73c6d86d42 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -463,6 +463,7 @@ class CommandeFournisseurDispatch extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result=$object->create($user); // Other options @@ -475,9 +476,10 @@ class CommandeFournisseurDispatch extends CommonObject if (! $error) { - } + unset($object->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 28c20af9371..7fc0bba0bdf 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -2489,8 +2489,6 @@ class FactureFournisseur extends CommonInvoice $object=new FactureFournisseur($this->db); - $object->context['createfromclone'] = 'createfromclone'; - $this->db->begin(); // Load source object @@ -2521,6 +2519,7 @@ class FactureFournisseur extends CommonInvoice } // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result=$object->create($user); // Other options @@ -2533,8 +2532,6 @@ class FactureFournisseur extends CommonInvoice if (! $error) { - - } unset($object->context['createfromclone']); diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index 6029fc7d3f9..e2f31319ca2 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -276,6 +276,8 @@ class MyObject extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index eb4fc32baed..d16c6ccc6ec 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -338,8 +338,6 @@ class Productbatch extends CommonObject $object=new Productbatch($this->db); - $object->context['createfromclone']='createfromclone'; - $this->db->begin(); // Load source object @@ -351,6 +349,7 @@ class Productbatch extends CommonObject // ... // Create clone + $object->context['createfromclone']='createfromclone'; $result=$object->create($user); // Other options @@ -363,7 +362,6 @@ class Productbatch extends CommonObject if (! $error) { - } unset($object->context['createfromclone']); diff --git a/htdocs/product/class/productcustomerprice.class.php b/htdocs/product/class/productcustomerprice.class.php index 3079fef5412..d39849780c1 100644 --- a/htdocs/product/class/productcustomerprice.class.php +++ b/htdocs/product/class/productcustomerprice.class.php @@ -907,8 +907,6 @@ class Productcustomerprice extends CommonObject $object = new Productcustomerprice($this->db); - $object->context['createfromclone']='createfromclone'; - $this->db->begin(); // Load source object @@ -920,6 +918,7 @@ class Productcustomerprice extends CommonObject // ... // Create clone + $object->context['createfromclone']='createfromclone'; $result = $object->create($user); // Other options @@ -929,6 +928,7 @@ class Productcustomerprice extends CommonObject } if (! $error) { + } unset($object->context['createfromclone']); diff --git a/htdocs/product/class/propalmergepdfproduct.class.php b/htdocs/product/class/propalmergepdfproduct.class.php index b5d2d639ae4..3aeae37249c 100644 --- a/htdocs/product/class/propalmergepdfproduct.class.php +++ b/htdocs/product/class/propalmergepdfproduct.class.php @@ -582,6 +582,7 @@ class Propalmergepdfproduct extends CommonObject // ... // Create clone + $object->context['createfromclone']='createfromclone'; $result=$object->create($user); // Other options @@ -594,9 +595,10 @@ class Propalmergepdfproduct extends CommonObject if (! $error) { - } + unset($object->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/product/inventory/class/inventory.class.php b/htdocs/product/inventory/class/inventory.class.php index 1bc98d32d93..076e3392bc0 100644 --- a/htdocs/product/inventory/class/inventory.class.php +++ b/htdocs/product/inventory/class/inventory.class.php @@ -247,6 +247,8 @@ class Inventory extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/product/stock/class/productlot.class.php b/htdocs/product/stock/class/productlot.class.php index d61630eb88e..60ce7bc02d2 100644 --- a/htdocs/product/stock/class/productlot.class.php +++ b/htdocs/product/stock/class/productlot.class.php @@ -454,6 +454,7 @@ class Productlot extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options @@ -463,6 +464,8 @@ class Productlot extends CommonObject dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/product/stock/class/productstockentrepot.class.php b/htdocs/product/stock/class/productstockentrepot.class.php index f76f5eeec9c..c5c66ad8d50 100644 --- a/htdocs/product/stock/class/productstockentrepot.class.php +++ b/htdocs/product/stock/class/productstockentrepot.class.php @@ -443,6 +443,7 @@ class ProductStockEntrepot extends CommonObject // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options @@ -452,6 +453,8 @@ class ProductStockEntrepot extends CommonObject dol_syslog(__METHOD__ . ' ' . implode(',', $this->errors), LOG_ERR); } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/societe/class/companypaymentmode.class.php b/htdocs/societe/class/companypaymentmode.class.php index 73242c9aa32..3594773e7f8 100644 --- a/htdocs/societe/class/companypaymentmode.class.php +++ b/htdocs/societe/class/companypaymentmode.class.php @@ -269,6 +269,8 @@ class CompanyPaymentMode extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/societe/class/societeaccount.class.php b/htdocs/societe/class/societeaccount.class.php index 78f934ecf2f..153959938e5 100644 --- a/htdocs/societe/class/societeaccount.class.php +++ b/htdocs/societe/class/societeaccount.class.php @@ -240,6 +240,8 @@ class SocieteAccount extends CommonObject $this->errors = $object->errors; } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 82b8b09220d..5d4fbed5e72 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1176,6 +1176,7 @@ class SupplierProposal extends CommonObject $this->ref = $modSupplierProposal->getNextValue($objsoc,$this); // Create clone + $this->context['createfromclone'] = 'createfromclone'; $result=$this->create($user); if ($result < 0) $error++; @@ -1191,6 +1192,8 @@ class SupplierProposal extends CommonObject } } + unset($this->context['createfromclone']); + // End if (! $error) { diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index d26206e2b5c..43002f30f99 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -966,6 +966,7 @@ class Ticket extends CommonObject // Clear fields // ... // Create clone + $object->context['createfromclone'] = 'createfromclone'; $result = $object->create($user); // Other options @@ -977,6 +978,8 @@ class Ticket extends CommonObject if (!$error) { } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index 7fd906044f6..fd2aaad8621 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -598,6 +598,7 @@ class Website extends CommonObject // Create new file $objectpagenew = $objectpageold->createFromClone($user, $pageid, $objectpageold->pageurl, '', 0, $object->id, 1); + //print $pageid.' = '.$objectpageold->pageurl.' -> '.$objectpagenew->id.' = '.$objectpagenew->pageurl.'
    '; if (is_object($objectpagenew) && $objectpagenew->pageurl) { @@ -646,6 +647,8 @@ class Website extends CommonObject } } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); diff --git a/htdocs/website/class/websitepage.class.php b/htdocs/website/class/websitepage.class.php index 3c166c1d1f8..ffa2176f142 100644 --- a/htdocs/website/class/websitepage.class.php +++ b/htdocs/website/class/websitepage.class.php @@ -447,6 +447,8 @@ class WebsitePage extends CommonObject dol_syslog(__METHOD__ . ' ' . join(',', $this->errors), LOG_ERR); } + unset($object->context['createfromclone']); + // End if (!$error) { $this->db->commit(); From 55c90b05783b3d4add4c811345c996c23a67ca01 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 13:17:07 +0100 Subject: [PATCH 252/307] Fix #10359 cloning of proposal --- htdocs/comm/propal/class/propal.class.php | 69 +++++++++++++---------- htdocs/website/class/website.class.php | 3 +- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 2c5c2cfd5ce..511fb2087ec 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1225,26 +1225,27 @@ class Propal extends CommonObject $error=0; $now=dol_now(); + dol_syslog(__METHOD__, LOG_DEBUG); + + $object = new self($this->db); + $this->db->begin(); - // get extrafields so they will be clone - foreach($this->lines as $line) - $line->fetch_optionals(); - - // Load dest object - $clonedObj = clone $this; + // Load source object + $object->fetch($this->id); + $object->fetch_lines(); $objsoc=new Societe($this->db); // Change socid if needed - if (! empty($socid) && $socid != $clonedObj->socid) + if (! empty($socid) && $socid != $object->socid) { if ($objsoc->fetch($socid) > 0) { - $clonedObj->socid = $objsoc->id; - $clonedObj->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0); - $clonedObj->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0); - $clonedObj->fk_delivery_address = ''; + $object->socid = $objsoc->id; + $object->cond_reglement_id = (! empty($objsoc->cond_reglement_id) ? $objsoc->cond_reglement_id : 0); + $object->mode_reglement_id = (! empty($objsoc->mode_reglement_id) ? $objsoc->mode_reglement_id : 0); + $object->fk_delivery_address = ''; /*if (!empty($conf->projet->enabled)) { @@ -1256,45 +1257,51 @@ class Propal extends CommonObject $clonedObj->fk_project = ''; } }*/ - $clonedObj->fk_project = ''; // A cloned proposal is set by default to no project. + $object->fk_project = ''; // A cloned proposal is set by default to no project. } // reset ref_client - $clonedObj->ref_client = ''; + $object->ref_client = ''; // TODO Change product price if multi-prices } else { - $objsoc->fetch($clonedObj->socid); + $objsoc->fetch($object->socid); } - $clonedObj->id=0; - $clonedObj->ref=''; - $clonedObj->statut=self::STATUS_DRAFT; + $object->id=0; + $object->ref=''; + $object->statut=self::STATUS_DRAFT; // Clear fields - $clonedObj->user_author = $user->id; - $clonedObj->user_valid = ''; - $clonedObj->date = $now; - $clonedObj->datep = $now; // deprecated - $clonedObj->fin_validite = $clonedObj->date + ($clonedObj->duree_validite * 24 * 3600); - if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $clonedObj->ref_client = ''; + $object->user_author = $user->id; + $object->user_valid = ''; + $object->date = $now; + $object->datep = $now; // deprecated + $object->fin_validite = $object->date + ($object->duree_validite * 24 * 3600); + if (empty($conf->global->MAIN_KEEP_REF_CUSTOMER_ON_CLONING)) $object->ref_client = ''; // Create clone - $this->context['createfromclone']='createfromclone'; - $result=$clonedObj->create($user); + $object->context['createfromclone']='createfromclone'; + $result=$object->create($user); if ($result < 0) $error++; - else + + if (! $error) { // copy internal contacts - if ($clonedObj->copy_linked_contact($this, 'internal') < 0) + if ($object->copy_linked_contact($this, 'internal') < 0) + { $error++; + } + } + if (! $error) + { // copy external contacts if same company - elseif ($this->socid == $clonedObj->socid) + if ($this->socid == $object->socid) { - if ($clonedObj->copy_linked_contact($this, 'external') < 0) + if ($object->copy_linked_contact($this, 'external') < 0) $error++; } } @@ -1311,13 +1318,13 @@ class Propal extends CommonObject } } - unset($this->context['createfromclone']); + unset($object->context['createfromclone']); // End if (! $error) { $this->db->commit(); - return $clonedObj->id; + return $object->id; } else { diff --git a/htdocs/website/class/website.class.php b/htdocs/website/class/website.class.php index fd2aaad8621..aa22971c7ff 100644 --- a/htdocs/website/class/website.class.php +++ b/htdocs/website/class/website.class.php @@ -593,7 +593,6 @@ class Website extends CommonObject { // Delete old file $filetplold=$pathofwebsitenew.'/page'.$pageid.'.tpl.php'; - dol_syslog("We regenerate alias page new name=".$filealias.", old name=".$fileoldalias); dol_delete_file($filetplold); // Create new file @@ -633,7 +632,7 @@ class Website extends CommonObject if (! $res > 0) { $error++; - setEventMessages($objectpage->error, $objectpage->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } if (! $error) From 5c825310a38db18d2fe541a0a1a12a825e0d7c4d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 14:49:26 +0100 Subject: [PATCH 253/307] Fix bad link and css --- htdocs/projet/card.php | 2 +- htdocs/ticket/list.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 8bf377a9844..f2b735e6340 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -977,7 +977,7 @@ elseif ($object->id > 0) print '
    '; print '
    '; - print ''; + print '
    '; // Description print '
    '.$langs->trans("Description").''; diff --git a/htdocs/ticket/list.php b/htdocs/ticket/list.php index c48b86ed8f9..64ec859cc0c 100644 --- a/htdocs/ticket/list.php +++ b/htdocs/ticket/list.php @@ -478,10 +478,10 @@ if ($sall) print '
    '; if ($search_fk_status == 'non_closed') { - print ''; + print ''; $param .= '&search_fk_status=non_closed'; } else { - print ''; + print ''; $param .= '&search_fk_status=-1'; } print '
    '; From 691deeb2c38102cd735985c0423b830cf8b0f85f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 15:33:10 +0100 Subject: [PATCH 254/307] Add php7.3 in phpunit --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index d660f89e79d..02ac5a1c805 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,6 +37,7 @@ php: - '7.0' - '7.1' - '7.2' +- '7.3' - nightly env: @@ -77,6 +78,8 @@ matrix: env: DB=postgresql - php: '7.1' env: DB=postgresql + - php: '7.2' + env: DB=postgresql - php: nightly env: DB=postgresql From f311deb405e6d07be8a537f461ec4085bd136d7b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 16:14:45 +0100 Subject: [PATCH 255/307] Fix hash for gol_getprefix must not contains special char. --- htdocs/core/lib/functions.lib.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 5d1a977d049..f27224c645f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -616,7 +616,7 @@ if (! function_exists('dol_getprefix')) /** * Return a prefix to use for this Dolibarr instance, for session/cookie names or email id. * The prefix for session is unique in a web context only and is unique for instance and avoid conflict - * between multi-instances, even when having two instances with one root dir or two instances in virtual servers. + * between multi-instances, even when having two instances with same root dir or two instances in same virtual server. * The prefix for email is unique if MAIL_PREFIX_FOR_EMAIL_ID is set to a value, otherwise value may be same than other instance. * * @param string $mode '' (prefix for session name) or 'email' (prefix for email id) @@ -634,16 +634,16 @@ if (! function_exists('dol_getprefix')) if ($conf->global->MAIL_PREFIX_FOR_EMAIL_ID != 'SERVER_NAME') return $conf->global->MAIL_PREFIX_FOR_EMAIL_ID; else if (isset($_SERVER["SERVER_NAME"])) return $_SERVER["SERVER_NAME"]; } - return dol_hash(DOL_DOCUMENT_ROOT.DOL_URL_ROOT); + return dol_hash(DOL_DOCUMENT_ROOT.DOL_URL_ROOT, '3'); } if (isset($_SERVER["SERVER_NAME"]) && isset($_SERVER["DOCUMENT_ROOT"])) { - return dol_hash($_SERVER["SERVER_NAME"].$_SERVER["DOCUMENT_ROOT"].DOL_DOCUMENT_ROOT.DOL_URL_ROOT); - // Use this for a "readable" cookie name + return dol_hash($_SERVER["SERVER_NAME"].$_SERVER["DOCUMENT_ROOT"].DOL_DOCUMENT_ROOT.DOL_URL_ROOT, '3'); + // Use this for a "readable" key //return dol_sanitizeFileName($_SERVER["SERVER_NAME"].$_SERVER["DOCUMENT_ROOT"].DOL_DOCUMENT_ROOT.DOL_URL_ROOT); } - return dol_hash(DOL_DOCUMENT_ROOT.DOL_URL_ROOT); + return dol_hash(DOL_DOCUMENT_ROOT.DOL_URL_ROOT, '3'); } } From 4ffd7de9f7aa32662381c2cc9941dfab4683e3aa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 16:15:05 +0100 Subject: [PATCH 256/307] doc --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index f27224c645f..fffe95cbb0c 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -616,7 +616,7 @@ if (! function_exists('dol_getprefix')) /** * Return a prefix to use for this Dolibarr instance, for session/cookie names or email id. * The prefix for session is unique in a web context only and is unique for instance and avoid conflict - * between multi-instances, even when having two instances with same root dir or two instances in same virtual server. + * between multi-instances, even when having two instances with same root dir or two instances in same virtual servers. * The prefix for email is unique if MAIL_PREFIX_FOR_EMAIL_ID is set to a value, otherwise value may be same than other instance. * * @param string $mode '' (prefix for session name) or 'email' (prefix for email id) From 8569987b6095f44665ae2e1d9668ebb22ca6f99b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 16:26:16 +0100 Subject: [PATCH 257/307] Fix travis for php 7.3 --- .travis.yml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 02ac5a1c805..aac89618c42 100644 --- a/.travis.yml +++ b/.travis.yml @@ -133,7 +133,7 @@ install: if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then composer -n require phpunit/phpunit ^5 fi - if [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then + if [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = '7.3' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then composer -n require phpunit/phpunit ^5 fi echo @@ -168,13 +168,9 @@ before_script: echo "Set timezone" echo 'date.timezone = "Europe/Paris"' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini if [ "$TRAVIS_PHP_VERSION" = '5.4' ]; then - #echo - #echo "Enabling APC for PHP <= 5.4" - # Documentation says it should be available for PHP <= 5.6 but it's not for 5.5 and 5.6! - #echo 'extension = apc.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini + # Documentation says it should be available for all PHP versions but it's not for 5.5 and 5.6, 7.0, 7.1, 7.2 and nightly! echo echo "Enabling Memcached for PHP <= 5.4" - # Documentation says it should be available for all PHP versions but it's not for 5.5 and 5.6, 7.0, 7.1, 7.2 and nightly! echo 'extension = memcached.so' >> ~/.phpenv/versions/$PHP_VERSION_NAME/etc/php.ini fi phpenv rehash @@ -256,7 +252,7 @@ before_script: # enable php-fpm - sudo cp ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.conf.default ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.conf - | - if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then + if [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = '7.3' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then # Copy the included pool sudo cp ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.d/www.conf.default ~/.phpenv/versions/$(phpenv version-name)/etc/php-fpm.d/www.conf fi From 213a5c9d5d1bd27518cae70339e291b2c56d8d48 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 16:40:36 +0100 Subject: [PATCH 258/307] Add apache error log --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index aac89618c42..657c1bc228a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -211,6 +211,7 @@ before_script: fi if [ "$DB" = 'postgresql' ]; then #pgloader mysql://root:pass@127.0.0.1/dolibarr_35 postgresql://dolibarrowner:dolibarrownerpass@127.0.0.1/dolibarr_dev + echo pgloader mysql://root@127.0.0.1/travis postgresql:///travis pgloader mysql://root@127.0.0.1/travis postgresql:///travis fi # TODO: SQLite @@ -280,6 +281,7 @@ script: # The wget should return a page with line ' wget -O - http://127.0.0.1 > test.html head test.html + tail /var/log/apache2/error.log set +e echo From 9efe10301494738ecfc2fc92724adf904c34b9f4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 16:44:35 +0100 Subject: [PATCH 259/307] Fix travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 657c1bc228a..dd5d97fd8a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -281,7 +281,7 @@ script: # The wget should return a page with line ' wget -O - http://127.0.0.1 > test.html head test.html - tail /var/log/apache2/error.log + sudo cat /var/log/apache2/error.log set +e echo From 88635e309903d90fab4fda29b3e6ad7c64979840 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 16:54:04 +0100 Subject: [PATCH 260/307] Try to get log --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index dd5d97fd8a3..ed585e2970f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -276,8 +276,8 @@ before_script: script: - | echo "Checking webserver availability by a wget -O - http://127.0.0.1" - # Ensure we catch errors - set -e + # Ensure we stop on error with set -e + set +e # The wget should return a page with line ' wget -O - http://127.0.0.1 > test.html head test.html From 616aa1f81cf2dc9b7310d97d7ffdb6b9d67a943f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 17:10:14 +0100 Subject: [PATCH 261/307] Fix var not defined --- htdocs/core/modules/modDeplacement.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modDeplacement.class.php b/htdocs/core/modules/modDeplacement.class.php index 285d795ea11..e5c7146729f 100644 --- a/htdocs/core/modules/modDeplacement.class.php +++ b/htdocs/core/modules/modDeplacement.class.php @@ -139,7 +139,7 @@ class modDeplacement extends DolibarrModules $childids = $user->getAllChildIds(); $childids[]=$user->id; - if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $sql.=' AND d.fk_user IN ('.join(',',$childids).')'; + if (empty($user->rights->deplacement->readall) && empty($user->rights->deplacement->lire_tous)) $this->export_sql_end[$r] .=' AND d.fk_user IN ('.join(',',$childids).')'; } } From 9a6517a3bdc60ce8ca2f091b3b8826c044434ba9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 17:38:05 +0100 Subject: [PATCH 262/307] Try to trap apache log --- .travis.yml | 4 ++-- build/travis-ci/apache.conf | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ed585e2970f..48ea16ab886 100644 --- a/.travis.yml +++ b/.travis.yml @@ -281,7 +281,7 @@ script: # The wget should return a page with line ' wget -O - http://127.0.0.1 > test.html head test.html - sudo cat /var/log/apache2/error.log + sudo cat /var/log/apache2/travis_error_log set +e echo @@ -379,7 +379,7 @@ after_failure: done # Apache log file echo "Debugging informations for file apache error.log" - sudo cat /var/log/apache2/error.log + sudo cat /var/log/apache2/travis_error_log if [ "$DEBUG" = true ]; then # Dolibarr log file echo "Debugging informations for file dolibarr.log (latest 50 lines)" diff --git a/build/travis-ci/apache.conf b/build/travis-ci/apache.conf index a4965c40d68..60a4095c34a 100644 --- a/build/travis-ci/apache.conf +++ b/build/travis-ci/apache.conf @@ -1,5 +1,6 @@ DocumentRoot %TRAVIS_BUILD_DIR%/htdocs + ErrorLog /var/log/apache2/travis_error_log Options FollowSymLinks MultiViews ExecCGI From 9712da21cb08f1f0cf273a13711eeb714e2f241f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 19 Jan 2019 18:00:20 +0100 Subject: [PATCH 263/307] Try to fix pgsql connection --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 48ea16ab886..6b3b8af1edf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -229,9 +229,11 @@ before_script: echo '$'dolibarr_main_db_user=\'travis\'';' >> $CONF_FILE if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_port=\'3306\'';' >> $CONF_FILE fi if [ "$DB" = 'postgresql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> $CONF_FILE + echo '$'dolibarr_main_db_port=\'5432\'';' >> $CONF_FILE fi # TODO: SQLite echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE @@ -370,7 +372,7 @@ after_success: after_failure: - | echo Failure detected, so we show samples of log to help diagnose - # This part of code is executed only if previous commande that fails are enclosed with set +e + # This part of code is executed only if previous command that fails are enclosed with set +e # Upgrade log files for ficlog in `ls $TRAVIS_BUILD_DIR/*.log` do From 168ff1a8063b3d47f679aa0e9bc0e1b8b493d6ce Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 20 Jan 2019 13:22:56 +0100 Subject: [PATCH 264/307] Fix phpcs --- dev/setup/codesniffer/ruleset.xml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index 67bf58e51ed..1ac4f504959 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -50,7 +50,19 @@ 0 - + + 0 + + + 0 + + + 0 + + + 0 + +